Risposte:
La Java Virtual Machine (JVM) è la macchina virtuale che esegue i bytecode Java. JVM non comprende il codice sorgente Java; ecco perché devi compilare i tuoi *.java
file per ottenere *.class
file che contengono i bytecode compresi da JVM. È anche l'entità che consente a Java di essere un "linguaggio portatile" ( scrivere una volta, eseguire ovunque ). In effetti, ci sono implementazioni specifiche della JVM per diversi sistemi (Windows, Linux, macOS, vedi l'elenco di Wikipedia ), lo scopo è che con gli stessi bytecode forniscano tutti gli stessi risultati.
Per spiegare la differenza tra JDK e JRE, la cosa migliore è leggere la documentazione Oracle e consultare il diagramma:
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, JRE fa parte di due tecnologie di distribuzione chiave: il plug-in Java, che consente l'esecuzione di applet nei browser più diffusi; e Java Web Start, che distribuisce applicazioni autonome su una rete. È anche la base per le tecnologie della piattaforma Java 2, Enterprise Edition (J2EE) per lo sviluppo e la distribuzione di software aziendali. JRE non contiene strumenti e utilità come compilatori o debugger per lo sviluppo di applet e applicazioni.
Java Development Kit (JDK)
JDK è un superset di JRE e contiene tutto ciò che si trova in JRE, oltre a strumenti come compilatori e debugger necessari per lo sviluppo di applet e applicazioni.
Si noti che Oracle non è l'unico a fornire JDK.
OpenJDK è un'implementazione open source di JDK e la base per Oracle JDK. Non c'è quasi alcuna differenza tra Oracle JDK e OpenJDK.
Le differenze sono indicate in questo blog :
D: Qual è la differenza tra il codice sorgente trovato nel repository OpenJDK e il codice che usi per creare Oracle JDK?
A: È molto vicino: il nostro processo di compilazione per le versioni di Oracle JDK si basa su OpenJDK 7 aggiungendo solo un paio di pezzi, come il codice di distribuzione, che include l'implementazione di Oracle del plug-in Java e Java WebStart, nonché alcuni terzi chiusi componenti di terze parti come un rasterizzatore grafico, alcuni componenti di terze parti open source, come Rhino, e alcuni frammenti qua e là, come documentazione aggiuntiva o caratteri di terze parti. Andando avanti, il nostro intento è quello di open source tutti i pezzi di Oracle JDK ad eccezione di quelli che consideriamo funzionalità commerciali come JRockit Mission Control (non ancora disponibile in Oracle JDK) e sostituire componenti di terze parti gravati con alternative open source per ottenere una parità più stretta tra le basi di codice.
Aggiornamento per JDK 11 - Un articolo di Donald Smith tenta di chiarire la differenza tra Oracle JDK e Oracle OpenJDK: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11- e più tardi
JVM è la Java Virtual Machine - attualmente esegue Java ByteCode.
JRE è Java Runtime Environment - contiene tra l'altro una JVM ed è ciò di cui hai bisogno per eseguire un programma Java.
JDK è il Java Development Kit - è il JRE, ma con javac (che è ciò di cui hai bisogno per compilare il codice sorgente Java) e altri strumenti di programmazione aggiunti.
OpenJDK è un'implementazione JDK specifica.
other things
contenuto di una JVM. Quali sono ? Questo articolo risponde pienamente a questa domanda - javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
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 compilatore (javac.exe), lanciatore di applicazioni Java (java.exe), Appletviewer, ecc ...
Il compilatore converte il codice java in codice byte. Il programma di avvio dell'applicazione Java apre un JRE, carica la classe e invoca il suo metodo principale.
Hai bisogno di JDK, se vuoi scrivere i tuoi programmi e compilarli. Per l'esecuzione di programmi Java, JRE è sufficiente.
JRE è destinato all'esecuzione di file Java
cioè JRE = JVM + Classi di pacchetti Java (come util, math, lang, awt, swing etc) + librerie di runtime.
JDK è principalmente destinato allo sviluppo di Java. Vale a dire È possibile 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 strumenti 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 su qualsiasi macchina ed eseguirlo 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 al sistema operativo e alla combinazione hardware sottostanti. È responsabile di tutte le cose come la garbage collection, il controllo dei limiti dell'array, ecc ... JVM dipende dalla piattaforma.
La JVM è chiamata "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 angolare del valore write-once run -where dei programmi Java.
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 modo in cui il processo di garbage collection funziona dipende da JVM, le specifiche Java no definire un modo specifico per farlo.
Una macchina virtuale Java (JVM) è una macchina virtuale che può eseguire Java ByteCode. È il componente di esecuzione del codice della piattaforma software Java.
Il 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 definito 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 da Sun Microsystems nel 2006. L'implementazione è sotto licenza GNU General Public License (GPL) con un'eccezione di collegamento.
JVM è la macchina virtuale su cui viene eseguito il codice Java
JRE è l'ambiente (librerie standard e JVM) richiesti per eseguire le applicazioni Java
JDK è il JRE con strumenti e documentazione per gli sviluppatori
OpenJDK è una versione open source di JDK, a differenza del comune JDK di proprietà di Oracle
JDK (Java Development Kit):
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 di piattaforma per eseguire il codice.
JDK - Compila java in ByteCode. È composto da debugger, compilatori ecc.
javac file.java // Is executed using JDK
JVM : esegue il codice byte. JVM è quello che rende indipendente la piattaforma Java. Ma JVM varia per piattaforme.
JRE - JVM insieme alle librerie di runtime java per eseguire programmi java.
Un altro aspetto degno di nota:
JDK (kit di sviluppo Java)
Ne avrai bisogno per scopi di sviluppo come suggerisce il nome.
Ad esempio: una società di software avrà JDK installato sul proprio computer perché dovrà sviluppare un nuovo software che prevede anche la compilazione e l'esecuzione dei propri programmi Java.
Quindi possiamo dire che JDK = JRE + JVM.
JRE (ambiente di runtime java)
È necessario per eseguire i programmi Java. Non è possibile compilare programmi Java con esso.
Ad esempio: un normale utente di computer che desidera eseguire alcuni giochi online avrà bisogno di JRE nel suo sistema per eseguire i programmi Java.
JVM (java virtual machine)
Come forse saprai, esegue i bytecode. Rende indipendente la piattaforma Java perché esegue il .class
file ottenuto dopo aver compilato il programma Java indipendentemente dal fatto che sia stato compilato 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 di Oracle Corporation o IBM JDK.
Tuttavia, potrebbero apparire tutti uguali per l'utente generico.
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 ai giochi online allora avrai solo bisogno di JRE e questo pacchetto non avrà JDK in esso .
In altre parole, JDK è il nonno JRE è il padre e JVM è il loro figlio.
Java è il linguaggio e include una sintassi rigorosa e fortemente tipizzata con cui ormai dovresti avere molta familiarità.
Java 2 Platform, Standard Edition, noto anche come J2SE, si riferiva alla piattaforma e includeva le classi nei pacchetti java.lang e java.io, tra gli altri. Era il blocco su cui sono state costruite le applicazioni Java.
Una Java Virtual Machine, o JVM, è una macchina virtuale software che esegue codice Java compilato. Poiché il codice Java compilato è semplicemente bytecode, la JVM è responsabile della compilazione di quel bytecode in codice macchina prima di eseguirlo. (Questo è spesso chiamato il compilatore Just In Time o il compilatore JIT.) JVM si occupa anche della gestione della memoria in modo che il codice dell'applicazione non debba.
Il Java Development Kit, o JDK, era e rimane il software utilizzato dagli sviluppatori Java per creare applicazioni Java. Contiene un compilatore del linguaggio Java, un generatore di documentazione, strumenti per lavorare con il codice nativo e (in genere) il codice sorgente Java per la piattaforma per abilitare le classi della piattaforma di debug.
Java Runtime Environment, o JRE, era e rimane il pezzo di software scaricato dagli utenti finali per eseguire applicazioni Java compilate. Include una JVM ma non contiene nessuno degli strumenti di sviluppo raggruppati nella JDK. Il JDK, tuttavia, contiene un JRE.
JVM: una specifica che descrive il modo / le risorse per eseguire un programma java. Esegue effettivamente il codice byte e rende indipendente la piattaforma Java. In tal modo, è diverso per piattaforma diversa. JVM per Windows non può funzionare come JVM per UNIX.
JRE: implementazione di JVM. (JVM + librerie di runtime)
JDK: compilatore JRE + java e altri strumenti essenziali per creare un programma java da zero
JVM : questo significa in realtà l'interprete del codice byte. Dipende dalla piattaforma. Ad esempio: nella piattaforma Windows il processo " java.exe " o " javaw.exe " è il processo jvm.
JDK : è un toolkit contenente le librerie e le utilità necessarie per sviluppare ed eseguire il programma / l'applicazione java
JRE : è l'ambiente di esecuzione di un'applicazione Java.ie, supporta solo 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 è possibile scaricare JVM così com'è. Viene confezionato in qualche altro componente.
JRE: qualche altro componente indicato sopra è JRE. È JVM + altri barattoli per creare l'ambiente di runtime
JDK: contiene JRE (che a sua volta contiene JVM). Una volta ottenuto JDK non è necessario installare JRE e JVM separatamente. Contiene compilatore che compila i tuoi file .java in file .class
JVM
JVM (Java Virtual Machine) è una macchina astratta. È una specifica che fornisce un ambiente di runtime in cui è possibile eseguire il bytecode java. Le JVM sono disponibili per molte piattaforme hardware e software.
JRE
JRE è l'acronimo di Java Runtime Environment, utilizzato per fornire l'ambiente di runtime, è l'implementazione di JVM, esiste fisicamente e contiene un set di librerie + altri file che JVM utilizza in fase di runtime.
JDK
JDK è l'acronimo di Java Development Kit, esiste fisicamente e contiene strumenti di sviluppo JRE +.
Link: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
In sintesi:
Se si desidera sviluppare in Java, è necessario JDK, ma se si desidera eseguire solo Java, è necessario JRE.
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 principali 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 , in cui JDK è il nostro pacchetto completo per lavorare con Java, dalla creazione alla compilazione fino all'esecuzione. D'altra parte, JRE è solo in esecuzione del codice (Codice byte).
Nota: - Sia che stiamo installando JDK o JRE, JVM verrebbe 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 renderlo molto migliore
JVM : converte il codice Java in bytecode e fornisce le specifiche che indicano come dovrebbe essere compilato, caricato, verificato, verificato un errore un codice Java ed eseguito.
JRE : implementazione della JVM con cui vengono utilizzate alcune librerie Java per eseguire il programma
JRE esegue l'applicazione ma JVM legge le istruzioni riga per riga, quindi è un interprete.
JDK = JRE + Strumenti di sviluppo
JRE = JVM + Classi di libreria
JVM è abbreviato come Java Virtual Machine , JVM è il componente principale dell'architettura java. JVM è scritto in linguaggio di programmazione C. Il compilatore Java produce il codice byte per JVM. JVM che legge il codice byte verificando il codice byte e collegando il codice con l'ibrido.
JRE è abbreviato come Java Runtime Environment . è fornire ambiente in fase di esecuzione. Esiste fisicamente. Contiene JVM + set di librerie (jar) + altri file.
JDK è abbreviato come Java Development Kit . è sviluppare applicazioni Java. E anche il debug e il monitoraggio delle applicazioni Java. JDK contiene strumenti di sviluppo JRE + (javac, java)
OpenJDK OpenJDK è una versione open source di sun JDK. Oracle JDK è il JDK ufficiale di Sun.