Qual è la differenza tra JVM, JDK, JRE e OpenJDK?

Qual è la differenza tra JVM , JDK , JRE e OpenJDK ?

Stavo programmando in Java e ho incontrato queste frasi, quali sono le differenze tra loro?

JVM

La Java Virtual Machine (JVM) è la macchina virtuale che esegue i bytecode Java. La JVM non comprende il codice sorgente Java, ecco perché si compilano i file *.java per ottenere file *.java contenenti i bytecode capiti dalla JVM. È anche l’ quadro che consente a Java di essere un “linguaggio portatile” ( scrivere una volta, correre ovunque ). In effetti, esistono implementazioni specifiche della JVM per diversi sistemi (Windows, Linux, MacOS, vedi la lista di Wikipedia ), l’objective è che con gli stessi bytecode tutti danno gli stessi risultati.

JDK e JRE

Per spiegare la differenza tra JDK e JRE, la cosa migliore è leggere la documentazione di Oracle e consultare lo schema:

Java Runtime Environment (JRE)

Java Runtime Environment (JRE) fornisce le librerie, la Java Virtual Machine e altri componenti per eseguire applet e applicazioni scritte nel linguaggio di programmazione Java. Inoltre, due tecnologie chiave di implementazione fanno parte di JRE: Java Plug-in, che consente l’esecuzione di applet nei browser più diffusi; e Java Web Start, che distribuisce applicazioni standalone su una rete. È anche la base per le tecnologie della piattaforma Java 2, Enterprise Edition (J2EE) per lo sviluppo e l’implementazione del software aziendale. JRE non contiene strumenti e utilità come compilatori o debugger per lo sviluppo di applet e applicazioni.


Java Development Kit (JDK)

Il JDK è un superset di JRE e contiene tutto ciò che è nel JRE, oltre a strumenti come compilatori e debugger necessari per lo sviluppo di applet e applicazioni.

Nota che Oracle non è l’unico a fornire JDK.

OpenJDK

OpenJDK è l’implementazione open source di Java SE 7 JSR ( JSR 336 ). Ora non c’è quasi nessuna differenza tra Oracle JDK e OpenJDK. L’anno scorso, Oracle ha preso questa decisione: passare a OpenJDK come l’implementazione di riferimento Java SE 7 ufficiale

Le differenze sono indicate in questo blog :

D: Qual è la differenza tra il codice sorgente trovato nel repository OpenJDK e il codice che si utilizza per creare l’Oracle JDK?

A: È molto vicino – il nostro processo di compilazione per Oracle JDK rilascia build su OpenJDK 7 aggiungendo solo un paio di parti, come il codice di implementazione, che include l’implementazione Oracle del Java Plugin e Java WebStart, così come alcune terze parti chiuse componenti di party come un rasterizzatore di grafica, alcuni componenti di terze parti open source, come Rhino, e alcuni frammenti qua e là, come documentazione aggiuntiva o font di terze parti. Andando avanti, il nostro intento è di rendere open source tutti i componenti di Oracle JDK ad eccezione di quelli che consideriamo funzionalità commerciali come JRockit Mission Control (non ancora disponibile in Oracle JDK) e sostituire i componenti di terze parti ingombranti con alternative open source per ottenere una parità più stretta tra le basi del codice.

A seconda della versione utilizzata, la VM può essere diversa: Corrispondenza tra le versioni Sun / Oracle JDK, OpenJDK e HotSpot VM

  • JVM è Java Virtual Machine: la JVM esegue in realtà il bytecode Java.
  • JDK è Java Developer Kit: il JDK è ciò di cui hai bisogno per compilare il codice sorgente Java.
  • JRE è Java Runtime Environment: è ciò di cui hai bisogno per eseguire un programma Java e contiene una JVM, tra le altre cose.

OpenJDK è un’implementazione JDK specifica.

JDK (Java Development Kit)

Java Developer Kit contiene gli strumenti necessari per sviluppare i programmi Java e JRE per eseguire i programmi. Gli strumenti includono compiler (javac.exe), launcher di applicazioni Java (java.exe), Appletviewer, ecc …

Il compilatore converte il codice java in codice byte. Il programma di avvio applicazioni Java apre un JRE, carica la class e invoca il suo metodo principale.

Hai bisogno di JDK, se non vuoi scrivere i tuoi programmi e compilarli. Per eseguire programmi java, JRE è sufficiente.

JRE è destinato all’esecuzione di file Java

cioè JRE = JVM + Classi di pacchetti Java (come util, math, lang, awt, swing ecc) + librerie di runtime.

JDK è principalmente indirizzato allo sviluppo di java. È ansible creare un file Java (con l’aiuto di pacchetti Java), compilare un file Java ed eseguire un file java.

JRE (Java Runtime Environment)

Java Runtime Environment contiene JVM, librerie di classi e altri file di supporto. Non contiene alcuno strumento di sviluppo come compilatore, debugger, ecc. In realtà JVM esegue il programma e utilizza le librerie di classi e altri file di supporto forniti in JRE. Se si desidera eseguire qualsiasi programma java, è necessario che JRE sia installato nel sistema

Java Virtual Machine fornisce un modo indipendente dalla piattaforma per eseguire il codice; Ciò significa compilare una volta in qualsiasi macchina e eseguirla ovunque (qualsiasi macchina).

JVM (Java Virtual Machine)

Come tutti sappiamo quando compiliamo un file Java, l’output non è un ‘exe’ ma è un file ‘.class’. Il file ‘.class’ è costituito da codici byte Java comprensibili da JVM. Java Virtual Machine interpreta il codice byte nel codice macchina in base alla combinazione di sistema operativo e hardware sottostante. È responsabile di tutte le cose come la garbage collection, il controllo dei limiti dell’array, ecc. JVM dipende dalla piattaforma.

La JVM è detta “virtuale” perché fornisce un’interfaccia macchina che non dipende dal sistema operativo sottostante e dall’architettura hardware della macchina. Questa indipendenza dall’hardware e dal sistema operativo è una pietra miliare del valore di programmi Java in esecuzione una volta sola.

Esistono diverse implementazioni JVM. Questi possono differire in cose come prestazioni, affidabilità, velocità, ecc. Queste implementazioni differiranno in quelle aree in cui le specifiche Java non menzionano come implementare le funzionalità, come il funzionamento del processo di garbage collection è dipendente da JVM, le specifiche Java non lo fanno definire un modo specifico per farlo.

Una Java virtual machine (JVM) è una macchina virtuale in grado di eseguire bytecode Java. È il componente di esecuzione del codice della piattaforma software Java.

Java Development Kit (JDK) è un prodotto Oracle Corporation rivolto agli sviluppatori Java. Dall’introduzione di Java, è stato di gran lunga il Java Software Development Kit (SDK) più utilizzato.

Java Runtime Environment , viene anche chiamato Java Runtime, Runtime Environment

OpenJDK (Open Java Development Kit) è un’implementazione gratuita e open source del linguaggio di programmazione Java. È il risultato di uno sforzo iniziato nel 2006 da Sun Microsystems. L’implementazione è concessa sotto licenza GNU General Public License (GPL) con un’eccezione di collegamento.

Semplicemente:

JDK (Java Development Kit):

  • contiene gli strumenti necessari per sviluppare i programmi Java.
  • Hai bisogno di JDK, se non vuoi scrivere i tuoi programmi e compilarli.
  • JDK è principalmente indirizzato allo sviluppo di java.

JRE (Java Runtime Environment)

Java Runtime Environment contiene JVM, librerie di classi e altri file di supporto. JRE è destinato all’esecuzione di file Java.

JVM (Java Virtual Machine)

La JVM interpreta il codice byte nel codice macchina in base alla combinazione di sistema operativo e hardware sottostante. È responsabile di tutte le cose come la garbage collection, il controllo dei limiti dell’array, ecc … Java Virtual Machine fornisce un modo indipendente dalla piattaforma per eseguire il codice.

JVM è il codice Java della macchina virtuale eseguito su

JRE è l’ambiente (librerie standard e JVM) richiesto per eseguire applicazioni Java

JDK è il JRE con strumenti di sviluppo e documentazione

OpenJDK è una versione open source di JDK, diversamente dal comune JDK di proprietà di Oracle

JDK – Compila java in codice Byte. È costituito da debugger, compilatori ecc.

 javac file.java // Is executed using JDK 

JVM – Esegue il codice byte. JVM è quello che rende la piattaforma java indipendente. Ma JVM varia per le piattaforms.

JRE – JVM insieme alle librerie di runtime java per eseguire programmi java.

Un altro aspetto da menzionare:

JDK (kit di sviluppo java)

Ne avrai bisogno per scopi di sviluppo come suggerisce il nome.

Ad esempio: una società di software installerà JDK nel proprio computer perché sarà necessario sviluppare un nuovo software che comporti anche la compilazione e l’esecuzione dei loro programmi Java.

Quindi possiamo dire che JDK = JRE + JVM.

JRE (ambiente run-time java)

È necessario per eseguire programmi Java. Non è ansible compilare programmi Java con esso.

Ad esempio: un normale utente di computer che vuole eseguire alcuni giochi online avrà bisogno di JRE nel suo sistema per eseguire programmi Java.

JVM (macchina virtuale java)

Come potresti sapere, esegui i bytecode. Rende indipendente la piattaforma Java perché esegue il file .class che si ottiene dopo aver compilato il programma Java, indipendentemente dal fatto che lo si compili su Windows, Mac o Linux.

Apri JDK

Bene, come ho detto sopra. Ora JDK è prodotto da diverse società, una delle quali è open source e gratuita per uso pubblico è OpenJDK, mentre altre sono JRockit JDK o IBM JDK di Oracle Corporation.

Tuttavia potrebbero sembrare tutti uguali all’utente generale.

Conclusione

Se sei un programmatore Java avrai bisogno di JDK nel tuo sistema e questo pacchetto includerà anche JRE e JVM, ma se sei un utente normale a cui piace giocare online, avrai solo bisogno di JRE e questo pacchetto non avrà JDK in esso .

In altre parole JDK è nonno JRE è padre e JVM è il loro figlio.

JRE – sta per Java run-time ed è necessario per eseguire l’applicazione Java.

JDK – significa kit di sviluppo Java e fornisce strumenti per sviluppare programmi Java, ad esempio compilatore Java. Contiene anche JRE.

JVM – sta per Java virtual machine ed è il processo responsabile per l’esecuzione dell’applicazione Java.

JIT – sta per la compilazione di Just In Time e aiuta ad aumentare le prestazioni dell’applicazione Java convertendo il codice byte Java in codice nativo quando la soglia incrociata, cioè principalmente il codice caldo, viene convertita in codice nativo.

Java è la lingua e include una syntax rigorosa e fortemente tipizzata con la quale dovresti essere molto familiare ormai.

La piattaforma Java 2, Standard Edition, nota anche come J2SE, si riferiva alla piattaforma e includeva le classi nei pacchetti java.lang e java.io, tra gli altri. Era il blocco di base su cui sono state create le applicazioni Java.

Una Java Virtual Machine, o JVM, è una macchina virtuale software che esegue codice Java compilato. Poiché il codice Java compilato è semplicemente un bytecode, la JVM è responsabile della compilazione del codice bytecode su codice macchina prima di eseguirlo. (Questo è spesso chiamato il compilatore Just In Time o il compilatore JIT.) La JVM si occupa anche della gestione della memoria in modo che il codice dell’applicazione non sia necessario.

Java Development Kit, o JDK, era e rimane il pezzo di software che gli sviluppatori Java usano per creare applicazioni Java. Contiene un compilatore di linguaggio Java, un generatore di documentazione, strumenti per lavorare con codice nativo e (in genere) il codice sorgente Java per la piattaforma per abilitare le classi di piattaforma di debug.

Java Runtime Environment, o JRE, era e rimane il pezzo di download degli utenti finali del software per eseguire applicazioni Java compilate. Include una JVM ma non contiene nessuno degli strumenti di sviluppo inclusi nel JDK. Il JDK, tuttavia, contiene un JRE.

In parole semplici:

JVM: una specifica che descrive il modo / le risorse per eseguire un programma java. Effettua effettivamente il codice byte e rende la piattaforma java indipendente. In tal modo, è diverso per la piattaforma diversa. JVM per Windows non può funzionare come JVM per UNIX.

JRE: implementazione di JVM. (Librerie di runtime JVM +)

JDK: JRE + java compiler e altri strumenti essenziali per creare un programma java da zero

JVM : questo in realtà significa l’interprete di byte code. È dipendente dalla piattaforma. Ad esempio: nella piattaforma Windows la precessionejava.exe ” o ” javaw.exe ” è il processo jvm.

JDK : è un toolkit contenente librerie e utility necessarie per sviluppare ed eseguire programmi / applicazioni java

JRE : è l’ambiente di esecuzione per un java application.ie, supporta solo le dipendenze di runtime incluso jvm per il programma compilato. Se vogliamo compilare un programma java abbiamo bisogno di jdk.

JVM: macchina virtuale di java. dice alla macchina cosa fare con il codice Java. Non è ansible scaricare JVM così com’è. Viene fornito in un altro componente.

JRE: alcuni altri componenti di cui sopra sono JRE. È JVM + altri vasi per creare l’ambiente di runtime

JDK: contiene JRE (che a sua volta contiene JVM). Una volta ottenuto JDK, non è necessario installare separatamente JRE e JVM. Contiene compilatore che compila i tuoi file .java in file .class

JVM

JVM (Java Virtual Machine) è una macchina astratta. È una specifica che fornisce l’ambiente di runtime in cui può essere eseguito bytecode java. Le JVM sono disponibili per molte piattaforms hardware e software.

JRE

JRE è l’acronimo di Java Runtime Environment. Viene utilizzato per fornire ambiente di runtime. È l’implementazione di JVM. Esiste fisicamente. Contiene set di librerie + altri file utilizzati da JVM in fase di runtime.

JDK

JDK è l’acronimo di Java Development Kit. Esiste fisicamente. Contiene strumenti di sviluppo JRE +.

Link: – http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

JVM Java Virtual Machine, esegue effettivamente il bytecode java. È il blocco di esecuzione sulla piattaforma JAVA. Converte il bytecode nel codice macchina.

JRE Java Runtime Environment, fornisce i requisiti minimi per l’esecuzione di un’applicazione Java; è costituito da Java Virtual Machine (JVM), classi core e file di supporto.

JDK Java Development Kit, ha tutti gli strumenti per sviluppare il tuo software applicativo. È come JRE + JVM

Open JDK è un’implementazione gratuita e open source della piattaforma Java.

In parole povere: – JDK = JRE + Strumenti di sviluppo / debugging , dove JDK è il nostro pacchetto completo per lavorare con Java, dalla creazione della compilazione fino all’esecuzione. D’altra parte JRE è solo di esecuzione del codice (Byte Code).

Nota: – Sia che stiamo installando JDK o JRE, JVM verrà fornito in bundle con entrambi i pacchetti e JVM è la parte in cui il compilatore JIT converte il codice byte nel codice specifico della macchina.

Basta leggere l’articolo su JDK, JRE, JVM e JIT

JDK : il pacchetto completo di cui hai bisogno per scrivere ed eseguire il codice java

OpenJDK : un’implementazione indipendente di JDK per renderla molto migliore

JVM : converte codice Java in bytecode e fornisce le specifiche che indicano come deve essere compilato, caricato, verificato, verificato per errori un codice Java ed eseguito ed eseguito.

JRE : implementazione della JVM con la quale vengono utilizzate alcune librerie Java per eseguire il programma

JRE esegue l’applicazione ma JVM legge le istruzioni riga per riga in modo che sia l’interprete.

JDK = JRE + Strumenti di sviluppo

JRE = JVM + Classi di libreria