Qual è la differenza tra JDK e JRE?
Quali sono i loro ruoli e quando dovrei usare l'uno o l'altro?
Qual è la differenza tra JDK e JRE?
Quali sono i loro ruoli e quando dovrei usare l'uno o l'altro?
Risposte:
Il JRE è il Java Runtime Environment . È un pacchetto di tutto il necessario per eseguire un programma Java compilato, tra cui la Java Virtual Machine (JVM), la Java Class Library, iljava
comando e altre infrastrutture. Tuttavia, non può essere utilizzato per creare nuovi programmi.
Il JDK è il Java Development Kit , l'SDK completo per Java. Ha tutto ciò che JRE ha, ma anche il compilatore ( javac
) e gli strumenti (come javadoc
ejdb
). È in grado di creare e compilare programmi.
Di solito, se ti interessa solo eseguire i programmi Java sul computer, installerai solo JRE. È tutto ciò di cui hai bisogno. D'altra parte, se si prevede di eseguire alcune programmazioni Java, è necessario installare JDK.
A volte, anche se non si prevede di eseguire alcuno sviluppo Java su un computer, è comunque necessario installare JDK. Ad esempio, se si sta distribuendo un'applicazione Web con JSP, tecnicamente si eseguono solo programmi Java all'interno del server delle applicazioni. Perché allora avresti bisogno del JDK? Poiché il server delle applicazioni convertirà JSP in servlet Java e dovrà utilizzare JDK per compilare i servlet. Sono sicuro che ci sono altri esempi.
La risposta sopra (di Pablo) è molto giusta. Queste sono solo informazioni aggiuntive.
Il JRE è, come suggerisce il nome, un ambiente . Fondamentalmente è un mucchio di directory con file relativi a Java, per dire:
bin/
contiene i programmi eseguibili di Java. Il più importante è java
(e anche per Windows javaw
), che avvia la JVM. Ci sono anche altre utilità qui, come keytool
e policytool
.conf/
contiene file di configurazione modificabili dall'utente con cui gli esperti Java possono giocare.lib/
ha un gran numero di file di supporto: alcuni .jar
file di configurazione, file di proprietà, caratteri, traduzioni, certificati, ecc., tutti i "ritagli" di Java. Il più importante è modules
un file che contiene i .class
file della libreria standard Java..dll
(Windows) o .dylib
(macOS) o .so
(Linux) con bin/
o lib/
con codice binario nativo specifico del sistema di supporto.Il JDK è anche un insieme di directory. È un superset di JRE, con alcune aggiunte:
bin/
è stato ampliato con strumenti di sviluppo. Il più importante è javac
; altri includono jar
, javadoc
e jshell
.jmods/
, che contiene i file JMOD per la libreria standard, è stato aggiunto. Questi file consentono di utilizzare la libreria standard jlink
.JDK è un superset di JRE e contiene tutto ciò che è in JRE, oltre a strumenti come compilatori e debugger necessari per lo sviluppo di applet e applicazioni. JRE fornisce le librerie, la Java Virtual Machine (JVM) e altri componenti per eseguire applet e applicazioni scritte nel linguaggio di programmazione Java.
In parole povere: JDK è il nonno JRE è il padre e JVM è il loro figlio. [ie JDK> JRE> JVM]
JDK = JRE + Strumenti di sviluppo / debug
JRE = JVM + Classi di pacchetti Java (come util, math, lang, awt, swing etc) + librerie di runtime.
JVM = Sistema caricatore di classe + area dati runtime + Motore di esecuzione.
In altre parole 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 bisogno solo di JRE e questo pacchetto non avrà JDK in esso.
JVM:
La Java Virtual Machine (JVM) è la macchina virtuale che esegue i bytecode Java. JVM non capisce il codice sorgente Java, ecco perché compili i tuoi file * .java per ottenere file * .class che contengono i bytecode comprensibili 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 tutti diano gli stessi risultati.
JDK e JRE
Per spiegare la differenza tra JDK e JRE, la cosa migliore è leggere la documentazione Oracle e consultare il diagramma:
Java Runtime Environment (JRE)
Il Java Runtime Environment (JRE) fornisce le librerie, la Java Virtual Machine, e altri componenti per eseguire applet ed 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.
Nota che Oracle non è l'unico a fornire JDK.
Processo di compilazione JIT (per gentile concessione: documentazione Oracle)
Dal sito Web ufficiale di Java ...
JRE (ambiente Java Runtime):
JDK (Java Development Kit)
Una differenza dal punto di vista del debug:
Per eseguire il debug in classi di sistema Java come String e ArrayList, è necessaria una versione speciale di JRE compilata con "informazioni di debug". Il JRE incluso nel JDK fornisce queste informazioni, ma il JRE normale no. JRE regolare non include queste informazioni per garantire prestazioni migliori.
Che cosa sono le informazioni di debug? Ecco una breve spiegazione presa da questo post sul blog :
I compilatori moderni fanno un ottimo lavoro convertendo il tuo codice di alto livello, con le sue strutture di controllo nidificate e ben rientrate e le variabili digitate arbitrariamente in un grande mucchio di bit chiamato codice macchina (o bytecode nel caso di Java), il cui unico scopo è per eseguire il più velocemente possibile sulla CPU di destinazione (CPU virtuale della tua JVM). Il codice Java viene convertito in diverse istruzioni del codice macchina. Le variabili vengono spinte ovunque, nello stack, nei registri o completamente ottimizzate. Strutture e oggetti non esistono nemmeno nel codice risultante: sono semplicemente un'astrazione che viene tradotta in offset codificati in buffer di memoria.
Quindi, come fa un debugger a sapere dove fermarsi quando gli chiedi di rompere all'ingresso di una funzione? Come riesce a trovare cosa mostrarti quando gli chiedi il valore di una variabile? La risposta è: informazioni di debug.
Le informazioni di debug vengono generate dal compilatore insieme al codice macchina. È una rappresentazione della relazione tra il programma eseguibile e il codice sorgente originale. Queste informazioni sono codificate in un formato predefinito e memorizzate insieme al codice macchina. Molti di questi formati sono stati inventati nel corso degli anni per diverse piattaforme e file eseguibili.
JVM, JRE, JDK - questi sono tutti elementi portanti del linguaggio Java. Ogni componente funziona separatamente. JDK e JRE esistono fisicamente ma JVM è una macchina astratta che significa che non esiste fisicamente.
JVM è il sottosistema di JDK e JRE che viene utilizzato per verificare il codice intermedio noto come "bytecode". Prima carica il "file di classe" (con estensione .c) generato dal compilatore Java (javac) tramite il caricatore di classi del sottosistema JVM e la posizione di memoria classificata (registri di area, stack, heap e pc della classe) in base al loro utilizzo. Quindi controlla tutto il bytecode per assicurarsi che sia restituito in Java e tutti gli accessi all'accessibilità della memoria dalla rete. Il lavoro dell'interprete inizia dopo quello in cui controlla l'intero programma riga per riga. I risultati vengono infine mostrati nella console / browser / applicazione tramite JRE (Java Runtime Environment) quali funzionalità di runtime.
JRE è anche un sottosistema di JDK che fornisce funzionalità di runtime come JVM, classi, file eseguibili come file .jar, ecc.
JDK sta per Java Development Kit. Contiene tutti i componenti necessari utilizzati nella programmazione Java come classe, metodo, swing, AWT, pacchetto, Java (interprete), javac (compilatore), appletviewer (visualizzatore applicazioni applet), ecc. Per concludere, contiene tutti i file necessari per lo sviluppo applicazioni, sia autonome che basate sul web.
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
Di solito, quando ti preoccupi solo di eseguire programmi Java sul tuo browser o computer, installerai solo JRE. È tutto ciò di cui hai bisogno. D'altra parte, se hai intenzione di fare un po 'di programmazione Java, avrai anche bisogno di JDK.
JVM, JRE e JDK dipendono dalla piattaforma perché la configurazione di ciascun sistema operativo differisce. Ma Java è indipendente dalla piattaforma.
Java Virtual Machine (JVM) è un sistema di runtime che esegue il bytecode Java.
JRE è l'ambiente (librerie standard e JVM) richiesti per eseguire le applicazioni Java.
JDK include gli strumenti di sviluppo della riga di comando JRE plus come compilatori e debugger necessari o utili per lo sviluppo di applet e applicazioni.
Ecco una semplice risposta direttamente da Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Java SE Runtime Environment (JRE)
JRE fornisce le librerie, la macchina virtuale Java e altri componenti necessari per eseguire applet e applicazioni scritte nel linguaggio di programmazione Java. Questo ambiente di runtime può essere ridistribuito con le applicazioni per renderle indipendenti.
Java SE Development Kit (JDK)
JDK include gli strumenti di sviluppo della riga di comando JRE plus come compilatori e debugger necessari o utili per lo sviluppo di applet e applicazioni.
Se si desidera eseguire programmi Java, ma non svilupparli, scaricare Java Run-time Environment o JRE. Se si desidera svilupparli, scaricare il kit di sviluppo Java o JDK
Chiamiamo JDK un kit che include le cose necessarie per sviluppare ed eseguire applicazioni java.
JDK viene fornito come ambiente di sviluppo per la creazione di applicazioni, componenti e applet.
Contiene tutto il necessario per eseguire le applicazioni Java in forma compilata. Non hai bisogno di alcuna libreria e altro materiale. Tutte le cose di cui hai bisogno sono compilate.
JRE non può essere utilizzato per lo sviluppo, utilizzato solo per eseguire le applicazioni.
JVM (Java Virtual Machine) è una macchina astratta. È una specifica che fornisce un ambiente di runtime in cui è possibile eseguire il bytecode java.
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 è l'acronimo di Java Development Kit, esiste fisicamente e contiene strumenti di sviluppo JRE +
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 .
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. JVM, JRE e JDK dipendono dalla piattaforma perché la configurazione di ciascun sistema operativo differisce. Ma Java è indipendente dalla piattaforma.
JRE
Contiene tutto il necessario per eseguire le applicazioni Java in forma compilata. Non hai bisogno di alcuna libreria e altro materiale. Tutte le cose di cui hai bisogno sono compilate.
JRE non può essere utilizzato per lo sviluppo, utilizzato solo per eseguire le applicazioni.
Java SE Development Kit (JDK)
JDK include gli strumenti di sviluppo della riga di comando JRE plus come compilatori e debugger necessari o utili per lo sviluppo di applet e applicazioni.
(Fonti: domande e risposte GeeksForGeeks , panoramica della piattaforma Java )
Una chiara comprensione di questi termini (JVM, JDK, JRE) è essenziale per comprenderne l'utilizzo e le differenze.
JVM Java Virtual Machine (JVM) è un sistema di runtime che esegue il bytecode Java. JVM è come un computer virtuale in grado di eseguire una serie di istruzioni compilate e manipolare le posizioni di memoria. Quando un compilatore Java compila il codice sorgente, genera un set altamente ottimizzato di istruzioni chiamato bytecode in un file .class. JVM interpreta queste istruzioni bytecode e le converte in codice specifico della macchina per l'esecuzione.
JDK Java Development Kit (JDK) è un ambiente di sviluppo software che è possibile utilizzare per sviluppare ed eseguire applicazioni Java. Include JRE e un set di strumenti di programmazione, come un compilatore Java, un interprete, un visualizzatore di applet e un visualizzatore di documenti. Il JDK è implementato attraverso le piattaforme Java SE, Java EE o Java ME.
JRE Java Runtime Environment (JRE) fa parte di JDK che include una JVM, classi core e diverse librerie che supportano lo sviluppo di applicazioni. Sebbene JRE sia disponibile come parte di JDK, è anche possibile scaricarlo e utilizzarlo separatamente.
Per una comprensione completa puoi vedere il mio blog: Jdk Jre Jvm e differenze
jdk è necessario per compilare in codice e convertire il codice java in codici byte mentre jre è necessario per eseguire i codici byte.
JDK include gli strumenti di sviluppo della riga di comando JRE plus come compilatori e debugger necessari o utili per lo sviluppo di applet e applicazioni.
JRE è fondamentalmente la Java Virtual Machine su cui vengono eseguiti i tuoi programmi Java. Include anche plugin del browser per l'esecuzione dell'applet.
JDK è una macchina astratta. È una specifica che fornisce un ambiente di runtime in cui è possibile eseguire il bytecode java.
Quindi, fondamentalmente JVM <JRE <JDK secondo @Jaimin Patel ha detto.
La differenza tra JDK e JRE è che JDK è il kit di sviluppo software per java mentre JRE è il luogo in cui esegui i tuoi programmi.
supponiamo che, se sei uno sviluppatore, il tuo ruolo è quello di sviluppare un programma e di eseguirlo. quindi è necessario disporre dell'ambiente per lo sviluppo e l'esecuzione, fornito da JDK.
supponiamo che, se sei un cliente, non devi preoccuparti dello sviluppo, basta un ambiente per eseguire il programma e ottenere solo risultati, fornito da JRE.
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
JRE
JRE è l'acronimo di Java Runtime Environment e viene utilizzato per fornire l'ambiente di runtime. È l'implementazione di JVM. Esiste fisicamente. Contiene un set di librerie + altri file che JVM utilizza in fase di esecuzione.
L'implementazione di JVM viene inoltre rilasciata attivamente da altre società oltre a Sun Micro Systems.
JDK
JDK è l'acronimo di Java Development Kit, esiste fisicamente e contiene strumenti di sviluppo JRE +.