JVM vs JRE
Java è un linguaggio di programmazione multipiattaforma. Aderisce inoltre al principio "scrivi una volta, esegui ovunque". Il programma scritto in Java può essere compilato in bytecode Java dal compilatore Java. Quindi, il bytecode può essere eseguito su qualsiasi piattaforma che esegue JRE (Java Runtime Environment). JRE include la JVM (Java Virtual Machine), le librerie di base (che implementano l'API Java) e altri file di supporto. JVM è una macchina informatica astratta che funge da mediatore tra le piattaforme JRE specifiche e il codice Java.
Cos'è JVM?
JVM è un tipo di macchina virtuale utilizzata dalle macchine per eseguire il bytecode Java. Secondo Sun Microsystems (che ha sviluppato Java fino a quando non è stato acquistato da Oracle, molto di recente), ci sono più di 4 miliardi di dispositivi abilitati JVM nel mondo. Nello specifico, Java Virtual Machine è una macchina informatica astratta implementata su hardware e sistema operativo standard. Una delle funzionalità importanti fornite dalla JVM è la gestione automatizzata delle eccezioni. Tipicamente, una raccolta di librerie standard accompagna la JVM. In effetti, JRE è un bundle contenente la JVM e le classi che implementano l'API Java. JVM è un componente molto importante, che soddisfa la natura "compila una volta, esegui ovunque" del linguaggio di programmazione Java. Finché la JVM è in esecuzione, il codice Java può essere eseguito su di essa, indipendentemente dalla piattaforma utilizzata nella macchina. Questo è il motivo per cui Java è chiamato linguaggio multipiattaforma o multipiattaforma.
Cos'è JRE?
JRE è l'ambiente di esecuzione su cui viene eseguito il codice Java. In genere, JRE è composto da JVM, classi di base standard (che implementano l'API Java di base) e altri file di supporto. Il tipo e la struttura di JRE variano a seconda del sistema operativo e dell'architettura della CPU. Quando viene eseguito il codice Java, JRE comunicherà con il sistema operativo, che a sua volta parlerà con i componenti hardware corrispondenti. Avere JRE installato sul tuo sistema è un must per eseguire qualsiasi codice java sulla tua macchina. Tuttavia, JRE non include un compilatore, un debugger o qualsiasi altro strumento necessario per lo sviluppo di programmi Java (come appletviewer e javac). Se hai bisogno di sviluppare programmi in Java, devi avere il JDK (Java Development Kit), che include anche il JRE.
Qual è la differenza tra e JVM e JRE?
Sebbene, nell'uso quotidiano, i termini JVM e JRE siano usati in modo intercambiabile, hanno le loro differenze. JVM è una macchina virtuale che viene eseguita sul sistema operativo, mentre JRE è l'ambiente di esecuzione del runtime. JVM fa parte di JRE. La specifica JVM funge da collegamento tra l'implementazione JRE specifica della piattaforma e le librerie Java standard. Pertanto, JVM è l'entità che fornisce al programmatore l'astrazione dai dettagli interni di implementazione. Ed è responsabile dell'interpretazione del bytecode compilato. Tuttavia, JVM necessita delle librerie di base e di altri file di supporto per eseguire il bytecode java. Ma a volte, JRE viene semplicemente identificato come un'implementazione di JVM.