2011-12-03 18 views
14

Ho scritto un'applicazione in Java usando Eclipse IDE e ora ho bisogno di conoscere la versione minima di JRE richiesta per eseguire l'applicazione! So che alcuni metodi sono disponibili solo in seguito a JRE, ma mi chiedevo quale sarebbe il modo più semplice per scoprire il requisito più alto della mia applicazione, quindi qualsiasi suggerimento sarebbe apprezzato ...Come determinare la versione minima di JRE ei requisiti di sistema per la mia applicazione Java

Anche mentre sono su il tema dei requisiti, gradirei qualsiasi consiglio o metodi per la determinazione dei requisiti minimi di sistema per il mio software in generale - vale a dire quantità minima di RAM ...

Grazie in anticipo

+3

Sapete come gli ingegneri calcolano quanto peso può sopportare un ponte? Guidano camion sempre più pesanti su di esso fino a quando non crolla, quindi lo ricostruiscono. Fai ciò in senso contrario ... inizia a compilare la tua app con JDK 7 e usa JDK precedenti fino a quando non verrà compilata. Lo stesso con la memoria ... usa sempre meno finché non si rompe. Sì, semi-in-guancia :) – Paul

+2

La compilazione da sola non è sufficiente - ho quasi dato anche quella risposta. Poiché le versioni precedenti di JDK/JRE potrebbero includere bug che non sono nella versione utilizzata più spesso, la semplice compilazione non garantisce l'esecuzione corretta del programma. Hai davvero bisogno di (1) compilare e (2) avere l'intera suite di test passare contro un dato JRE. Se non si dispone di una suite di test, il supporto delle versioni precedenti di JRE sarà più complicato. – jefflunt

+0

@Paul Ho sospettato che avrei ricevuto una risposta in questo senso da qualcuno, e immagino ci sia una buona ragione; sembra che non ci sia un modo semplice per calcolare questi requisiti. Grazie per la risposta, Paul, ma per favore vedi i miei commenti sulla risposta di normalocity, che, ritengo sia un buon punto e sono d'accordo che potrei scoraggiare l'uso dei vecchi JRE – Andy

risposta

7
  • metodo 1: Per la versione minima di JRE, sarà dura. Il modo più semplice è semplicemente richiedere la stessa versione che stai sviluppando contro o in seguito, ad es. JRE 6.x.xo successivo.
  • Metodo 2: Installare più JDK, rendendoli disponibili in Eclipse, e cambiare semplicemente la versione che si sta creando, eseguendo la suite di test dell'app ogni volta e assicurandosi che tutti passino. La prima versione del JDK che consente il passaggio di tutti i test è il JRE più basso a cui può essere eseguito. Il semplice completamento della compilazione della tua app non è sufficiente, perché le versioni precedenti di JRE/JDK potrebbero presentare bug che consentono una compilazione corretta, ma non consente di eseguire l'esecuzione corretta del programma con lo.
  • Metodo 3: Richiedere sempre l'ultimo lato client, perché Oracle è costantemente in grado di correggere i buchi di sicurezza e, in definitiva, potrebbe essere meglio richiedere le versioni più recenti, se si dispone di quel tipo di controllo, sul lato client .

Per quanto riguarda la RAM, è facile. Quando la JVM si avvia, imposta una quantità massima di RAM (credo che l'impostazione predefinita sia 128 MB) e questo è un limite difficile che l'applicazione non può superare senza crash. Profili la tua app nel tempo, modificando le impostazioni della memoria sulla JVM e scopri quale sia la quantità minima di RAM necessaria per l'esecuzione della tua app sia (a) con prestazioni accettabili, sia (b) senza lanciare un OutOfMemoryError , e hai finito.

Rif.: How to configure JVM options and memory?

Per altri requisiti come req CPU, le cose si fanno un po 'sfocata. Ci sono un sacco di CPU là fuori e il throughput prodotto da un dato sistema può variare non solo in base alla velocità della CPU, ma anche alla velocità del disco rigido, alla quantità di RAM installata nel sistema, alla velocità dell'interfaccia di rete (se stai scrivendo un'app di rete) e altre cose. Per requisiti come questo, ti consigliamo di testarlo su una varietà di sistemi e di tracciare una linea da qualche parte, e di dire, "Puoi aspettarti prestazioni accettabili se hai un hardware potente almeno quanto X, Y , Z ".

L'altra cosa che si potrebbe fare è costruire un benchmark, o un qualche tipo di registrazione delle prestazioni, e avere i dati delle prestazioni inviati a voi. Un sacco di app lo fanno. Sai che "Possiamo inviare dati di utilizzo anonimi alla nave madre?" domanda che ottieni quando installi del software? Bene, tra questi dati comuni ci sono dettagli specifici del sistema come RAM, CPU, modello di disco rigido e altri dettagli hardware (qualunque dato tu determini sia pertinente alla tua app), insieme ai dati di registrazione delle prestazioni. Adottando questo tipo di approccio, si ottengono molti dati sulle prestazioni da numerose configurazioni di sistema diverse senza la necessità di disporre internamente di un numero enorme di macchine configurate in modo diverso.

È possibile fare la stessa cosa per crash del programma e bug - avere le tracce dello stack, le informazioni di sistema e altri dati rilevanti scaricati su un file di registro che viene inviato a voi - ma ovviamente, solo se i vostri utenti hanno ha detto che è okay per inviarti quei dati.

+0

Grazie per la tua risposta normalocity, anche se non lo sono abbastanza sicuro di cosa intendi per RAM. Intendi dire che dovrei inserire il requisito minimo per la RAM come requisito minimo per il JRE installato - in realtà, in teoria, dovrebbe essere lo stesso per ogni requisito !? Per quanto riguarda JRE, penso che resterò con JRE 6, ma consiglio sempre l'ultima versione.] – Andy

+0

Sì, penso che tu abbia capito la domanda RAM. Quando avvii JVM, puoi specificare "Ehi, non prendi più di 32 MB di RAM" o qualsiasi quantità arbitraria di RAM che ti piace. Quindi, esegui la tua app più volte con valori minimi diversi (ho fornito un link per impostare le impostazioni della memoria JVM) e il valore più piccolo che consente (1) alla tua app di funzionare con prestazioni accettabili, e (2) non si arresta in modo anomalo a esaurimento della memoria, diventa il requisito minimo di RAM. – jefflunt

+0

Grazie per quello, un'informazione interessante e informativa. Penso di aver fatto la conclusione che la versione minima di JRE deve essere JRE 6 con un requisito minimo di RAM di 128 MB, visto che è comunque necessario installare Java, e credo che Java funzionerà su Windows 200 e verso l'alto! Non riesco a vedere molto da vicino nello studio di quei requisiti sulla mia applicazione molto più se Java deve essere installato comunque, soprattutto perché non ho strutture di prova adeguate. – Andy

Problemi correlati