Le implementazioni JVM possono differire nel modo in cui implementano la compilazione JIT, le ottimizzazioni, la garbage collection, le piattaforme supportate, la versione di Java supportata, ecc. Tutti devono soddisfare set di funzionalità e comportamenti in modo che eseguano correttamente i bytecode Java.
Come hai sottolineato, la differenza principale tende ad essere nella concessione di licenze. Altre differenze non tecniche tendono ad essere in opzioni di supporto gratuite/a pagamento, integrazione con altre tecnologie (solitamente server J2EE) e accesso al codice sorgente.
Nota: Mentre un server J2EE gira su JVM, alcuni server sono gli strumenti per il monitoraggio, l'analisi e le prestazioni tweaking JVM integrata.
Per quanto riguarda le differenze tecniche, quelle sono diventate meno significative nel corso degli anni. Una volta, IBM e JRockit JVM avevano prestazioni di gran lunga superiori all'implementazione Sun di riferimento. Ciò era dovuto a differenze significative nei tipi di ottimizzazioni del runtime, differenze nella garbage collection e differenze nel codice nativo (e quanto codice nativo utilizza varie classi). Queste differenze di prestazioni non sono più così significative.
Alcuni di JVM includono anche o si integrano con la diagnostica e strumenti di monitoraggio. JRockit include un set di strumenti per il monitoraggio delle prestazioni JVM. Sun fornisce vari strumenti basati su JMX con funzioni sovrapposte per fare lo stesso. IBM Websphere una volta includeva un insieme simile di strumenti per l'intero server delle applicazioni J2EE (non sono sicuro che lo facciano ancora, ma presumo che sia ancora vero) ...
Alcune delle JVM open source tendono ad avere prestazioni un po 'più lente perché sono state ridisegnate da zero. In quanto tali, hanno un po 'di più da recuperare. L'ultima volta che ho controllato circa 2 anni fa, Blackdown era significativamente più lento (1.5x-2x?) Rispetto a Sun JVM. Era anche un po 'indietro rispetto alle versioni supportate di Java.
fonte
2009-04-14 14:24:44
Come qualcuno costretto a usare JRockit per oltre 5 anni, direi che nel complesso non è più veloce di Hotspot, ma sicuramente non è così robusto. Sacrificano l'affidabilità per la velocità e finiscono con niente. – erickson
@erickson, Come qualcuno che ha utilizzato volontariamente JRockit per oltre 5 anni, posso dire che le tue esperienze non sono universali. JRockit ha salvato almeno una volta con il suo strumento di rilevamento perdite di memoria pure. :) Non ho avuto più crash con esso rispetto a Sun VM (anche se ce ne sono stati uno o due). – jsight