Was ist der Unterschied zwischen JDK und JRE?
Was sind ihre Rollen und wann sollte ich die eine oder andere verwenden?
Was ist der Unterschied zwischen JDK und JRE?
Was sind ihre Rollen und wann sollte ich die eine oder andere verwenden?
Antworten:
Die JRE ist die Java-Laufzeitumgebung . Es ist ein Paket mit allem, was zum Ausführen eines kompilierten Java-Programms erforderlich ist, einschließlich der Java Virtual Machine (JVM), der Java-Klassenbibliothek, des java
Befehls und anderer Infrastrukturen. Es kann jedoch nicht zum Erstellen neuer Programme verwendet werden.
Das JDK ist das Java Development Kit , das voll funktionsfähige SDK für Java. Es hat alles, was die JRE hat, aber auch den Compiler ( javac
) und die Tools (wie javadoc
und jdb
). Es ist in der Lage, Programme zu erstellen und zu kompilieren.
Wenn Sie nur Java-Programme auf einem Computer ausführen möchten, installieren Sie normalerweise nur die JRE. Es ist alles was du brauchst. Wenn Sie jedoch eine Java-Programmierung planen, müssen Sie stattdessen das JDK installieren.
Manchmal muss das JDK installiert sein, auch wenn Sie keine Java-Entwicklung auf einem Computer planen. Wenn Sie beispielsweise eine Webanwendung mit JSP bereitstellen, führen Sie technisch gesehen nur Java-Programme auf dem Anwendungsserver aus. Warum brauchen Sie dann das JDK? Weil der Anwendungsserver JSP in Java-Servlets konvertiert und das JDK zum Kompilieren der Servlets verwenden muss. Ich bin sicher, dass es weitere Beispiele gibt.
Die obige Antwort (von Pablo) ist sehr richtig. Dies sind nur zusätzliche Informationen.
Die JRE ist, wie der Name schon sagt, eine Umgebung . Es handelt sich im Grunde genommen um eine Reihe von Verzeichnissen mit Java-bezogenen Dateien:
bin/
enthält Javas ausführbare Programme. Das wichtigste ist java
(und auch für Windows javaw
), das die JVM startet. Es gibt hier auch einige andere Dienstprogramme, wie keytool
und policytool
.conf/
Enthält vom Benutzer bearbeitbare Konfigurationsdateien, mit denen Java-Experten spielen können.lib/
hat eine große Anzahl von unterstützenden Dateien: einige .jar
s, Konfigurationsdateien, Eigenschaftendateien, Schriftarten, Übersetzungen, Zertifikate usw. - alle "Details" von Java. Das wichtigste ist modules
eine Datei, die die .class
Dateien der Java-Standardbibliothek enthält ..dll
(Windows) oder .dylib
(macOS) oder .so
(Linux) Dateien unter bin/
oder lib/
mit unterstützendem systemspezifischem nativem Binärcode.Das JDK besteht auch aus einer Reihe von Verzeichnissen. Es ist eine Obermenge der JRE mit einigen Ergänzungen:
bin/
wurde mit Entwicklungswerkzeugen erweitert. Der wichtigste von ihnen ist javac
; andere schließen ein jar
, javadoc
und jshell
.jmods/
, das JMOD-Dateien für die Standardbibliothek enthält, wurde hinzugefügt. Mit diesen Dateien kann die Standardbibliothek verwendet werden jlink
.JDK ist eine Obermenge von JRE und enthält alles, was in JRE enthalten ist, sowie Tools wie die Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich sind. JRE stellt die Bibliotheken, die Java Virtual Machine (JVM) und andere Komponenten zum Ausführen von Applets und Anwendungen bereit, die in der Programmiersprache Java geschrieben sind.
In Laienbegriffen: JDK ist Großvater JRE ist Vater und JVM ist ihr Sohn. [dh JDK> JRE> JVM]
JDK = JRE + Entwicklungs- / Debugging-Tools
JRE = JVM + Java-Paketklassen (wie util, math, lang, awt, Swing usw.) + Laufzeitbibliotheken.
JVM = Class Loader System + Laufzeitdatenbereich + Execution Engine.
Mit anderen Worten, wenn Sie ein Java-Programmierer sind, benötigen Sie JDK in Ihrem System und dieses Paket enthält auch JRE und JVM. Wenn Sie jedoch ein normaler Benutzer sind, der gerne Online-Spiele spielt, benötigen Sie nur JRE und dieses Paket nicht JDK drin.
JVM:
Die Java Virtual Machine (JVM) ist die virtuelle Maschine, auf der die Java-Bytecodes ausgeführt werden. Die JVM versteht den Java-Quellcode nicht. Deshalb kompilieren Sie Ihre * .java-Dateien, um * .class-Dateien zu erhalten, die die für die JVM verständlichen Bytecodes enthalten. Es ist auch die Entität, die es Java ermöglicht, eine "portable Sprache" zu sein (einmal schreiben, überall ausführen). In der Tat gibt es spezifische Implementierungen der JVM für verschiedene Systeme (Windows, Linux, MacOS, siehe Wikipedia-Liste ..). Ziel ist es, dass alle mit denselben Bytecodes dieselben Ergebnisse liefern.
JDK und JRE
Um den Unterschied zwischen JDK und JRE zu erklären, lesen Sie am besten die Oracle-Dokumentation und konsultieren Sie das Diagramm:
Java Runtime Environment (JRE)
Die Java Runtime Environment (JRE) bietet die Bibliotheken, die Java Virtual Machine und andere Komponenten zum Ausführen von Applets und Anwendungen, die in der Programmiersprache Java geschrieben sind. Darüber hinaus sind zwei wichtige Bereitstellungstechnologien Teil des JRE: Java-Plug-in, mit dem Applets in gängigen Browsern ausgeführt werden können; und Java Web Start, das eigenständige Anwendungen über ein Netzwerk bereitstellt. Es ist auch die Grundlage für die Technologien der Java 2-Plattform Enterprise Edition (J2EE) für die Entwicklung und Bereitstellung von Unternehmenssoftware. Die JRE enthält keine Tools und Dienstprogramme wie Compiler oder Debugger zum Entwickeln von Applets und Anwendungen.
Java Development Kit (JDK)
Das JDK ist eine Obermenge der JRE und enthält alles, was in der JRE enthalten ist, sowie Tools wie die Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich sind.
Beachten Sie, dass Oracle nicht das einzige Unternehmen ist, das JDK bereitstellt.
JIT-Kompilierungsprozess (mit freundlicher Genehmigung der Oracle-Dokumentation)
Von der offiziellen Java-Website ...
JRE (Java Runtime-Umgebung):
JDK (Java Development Kit)
Ein Unterschied aus Sicht des Debuggens:
Zum Debuggen in Java-Systemklassen wie String und ArrayList benötigen Sie eine spezielle Version der JRE, die mit "Debug-Informationen" kompiliert wird. Die im JDK enthaltene JRE bietet diese Informationen, die reguläre JRE jedoch nicht. Die reguläre JRE enthält diese Informationen nicht, um eine bessere Leistung zu gewährleisten.
Was sind Debugging-Informationen? Hier ist eine kurze Erklärung aus diesem Blog-Beitrag :
Moderne Compiler machen einen ziemlich guten Job beim Konvertieren Ihres High-Level-Codes mit seinen gut eingerückten und verschachtelten Steuerstrukturen und willkürlich typisierten Variablen in einen großen Stapel von Bits, die als Maschinencode (oder Bytecode bei Java) bezeichnet werden und deren einziger Zweck darin besteht um so schnell wie möglich auf der Ziel-CPU (virtuelle CPU Ihrer JVM) zu laufen. Java-Code wird in mehrere Maschinencode-Anweisungen konvertiert. Variablen werden überall hin geschoben - in den Stapel, in Register oder vollständig wegoptimiert. Strukturen und Objekte sind im resultierenden Code nicht einmal vorhanden - sie sind lediglich eine Abstraktion, die in fest codierte Offsets in Speicherpuffer übersetzt wird.
Woher weiß ein Debugger, wo er anhalten soll, wenn Sie ihn bitten, beim Eintritt in eine Funktion zu brechen? Wie schafft es es, herauszufinden, was Ihnen angezeigt werden soll, wenn Sie nach dem Wert einer Variablen fragen? Die Antwort lautet - Debuggen von Informationen.
Debugging-Informationen werden vom Compiler zusammen mit dem Maschinencode generiert. Es ist eine Darstellung der Beziehung zwischen dem ausführbaren Programm und dem ursprünglichen Quellcode. Diese Informationen werden in ein vordefiniertes Format codiert und neben dem Maschinencode gespeichert. Viele solcher Formate wurden im Laufe der Jahre für verschiedene Plattformen und ausführbare Dateien erfunden.
JVM, JRE, JDK - all dies ist das Rückgrat der Java-Sprache. Jede Komponente arbeitet separat. JDK und JRE existieren physisch, aber JVM ist eine abstrakte Maschine, was bedeutet, dass sie physisch nicht existiert.
JVM ist das Subsystem von JDK und JRE, mit dem der als "Bytecode" bekannte Zwischencode überprüft wird. Zunächst wird die vom Java-Compiler (javac) generierte "Klassendatei" (mit der Erweiterung .c) über den Klassenlader des JVM-Subsystems und den klassifizierten Speicherort (Klassenbereichs-, Stapel-, Heap- und PC-Register) entsprechend ihrer Verwendung geladen. Anschließend wird der gesamte Bytecode überprüft, um sicherzustellen, dass er in Java zurückgegeben wird und der gesamte Zugriff auf das Speicherzugriff durch das Netzwerk erfolgt. Danach beginnt die Arbeit des Interpreten, bei der das gesamte Programm Zeile für Zeile überprüft wird. Die Ergebnisse werden schließlich in der Konsole / im Browser / in der Anwendung über JRE (Java Runtime Environment) angezeigt.
JRE ist auch ein Subsystem von JDK, das Laufzeitfunktionen wie JVM, Klassen, ausführbare Dateien wie JAR-Dateien usw. bereitstellt.
JDK steht für Java Development Kit. Es enthält alle erforderlichen Komponenten, die in der Java-Programmierung verwendet werden, wie Klasse, Methode, Swing, AWT, Paket, Java (Interpreter), Javac (Compiler), Appletviewer (Applet Application Viewer) usw. Abschließend enthält es alle für die Entwicklung erforderlichen Dateien Anwendungen, ob eigenständig oder webbasiert.
JRE
JRE ist eine Abkürzung für Java Runtime Environment. Es wird zur Bereitstellung der Laufzeitumgebung verwendet. Es ist die Implementierung von JVM. Es ist physisch vorhanden. Es enthält eine Reihe von Bibliotheken und andere Dateien, die JVM zur Laufzeit verwendet.
JDK
JDK ist eine Abkürzung für Java Development Kit. Es existiert physisch. Es enthält JRE + -Entwicklungswerkzeuge.
Link: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
Wenn Sie nur Java-Programme in Ihrem Browser oder Computer ausführen möchten, installieren Sie normalerweise nur JRE. Es ist alles was du brauchst. Wenn Sie jedoch eine Java-Programmierung planen, benötigen Sie auch JDK.
JVM, JRE und JDK sind plattformabhängig, da die Konfiguration der einzelnen Betriebssysteme unterschiedlich ist. Java ist jedoch plattformunabhängig.
Java Virtual Machine (JVM) ist ein Laufzeitsystem, das Java-Bytecode ausführt.
JRE ist die Umgebung (Standardbibliotheken und JVM), die zum Ausführen von Java-Anwendungen erforderlich ist.
Das JDK enthält die Befehlszeilen-Entwicklungstools JRE plus wie Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich oder nützlich sind.
Hier ist eine einfache Antwort direkt von Oracle: http://docs.oracle.com/javase/7/docs/technotes/guides/
Java SE-Laufzeitumgebung (JRE)
Die JRE stellt die Bibliotheken, die virtuelle Java-Maschine und andere Komponenten bereit, die zum Ausführen von Applets und Anwendungen erforderlich sind, die in der Programmiersprache Java geschrieben sind. Diese Laufzeitumgebung kann mit Anwendungen neu verteilt werden, um sie freistehend zu machen.
Java SE Development Kit (JDK)
Das JDK enthält die Befehlszeilen-Entwicklungstools JRE plus wie Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich oder nützlich sind.
Wenn Sie Java-Programme ausführen, aber nicht entwickeln möchten, laden Sie die Java-Laufzeitumgebung oder JRE herunter. Wenn Sie sie entwickeln möchten, laden Sie das Java Development Kit oder JDK herunter
Das sogenannte JDK ist ein Kit, das die Dinge enthält, die zum Entwickeln und Ausführen von Java-Anwendungen erforderlich sind.
JDK wird als Entwicklungsumgebung zum Erstellen von Anwendungen, Komponenten und Applets angegeben.
Es enthält alles, was Sie zum Ausführen von Java-Anwendungen in kompilierter Form benötigen. Sie brauchen keine Bibliotheken und andere Dinge. Alle Dinge, die Sie brauchen, werden zusammengestellt.
JRE kann nicht für die Entwicklung verwendet werden, sondern nur zum Ausführen der Anwendungen.
JVM (Java Virtual Machine) ist eine abstrakte Maschine. Diese Spezifikation bietet eine Laufzeitumgebung, in der Java-Bytecode ausgeführt werden kann.
JRE ist eine Abkürzung für Java Runtime Environment. Es wird zur Bereitstellung der Laufzeitumgebung verwendet. Es ist die Implementierung von JVM. Es ist physisch vorhanden. Es enthält eine Reihe von Bibliotheken und andere Dateien, die JVM zur Laufzeit verwendet
JDK ist eine Abkürzung für Java Development Kit. Es existiert physisch. Es enthält JRE + -Entwicklungswerkzeuge
Wenn Sie ein Java-Programmierer sind, benötigen Sie JDK in Ihrem System und dieses Paket enthält auch JRE und JVM. Wenn Sie jedoch ein normaler Benutzer sind, der gerne Online-Spiele spielt, benötigen Sie nur JRE und dieses Paket enthält kein JDK .
JVM
JVM (Java Virtual Machine) ist eine abstrakte Maschine. Diese Spezifikation bietet eine Laufzeitumgebung, in der Java-Bytecode ausgeführt werden kann.
JVMs sind für viele Hardware- und Softwareplattformen verfügbar. JVM, JRE und JDK sind plattformabhängig, da die Konfiguration der einzelnen Betriebssysteme unterschiedlich ist. Java ist jedoch plattformunabhängig.
JRE
Es enthält alles, was Sie zum Ausführen von Java-Anwendungen in kompilierter Form benötigen. Sie brauchen keine Bibliotheken und andere Dinge. Alle Dinge, die Sie brauchen, werden zusammengestellt.
JRE kann nicht für die Entwicklung verwendet werden, sondern nur zum Ausführen der Anwendungen.
Java SE Development Kit (JDK)
Das JDK enthält die Befehlszeilen-Entwicklungstools JRE plus wie Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich oder nützlich sind.
(Quellen: Fragen und Antworten zu GeeksForGeeks , Überblick über die Java-Plattform )
Ein klares Verständnis dieser Begriffe (JVM, JDK, JRE) ist wichtig, um ihre Verwendung und Unterschiede zu erfassen.
JVM Java Virtual Machine (JVM) ist ein Laufzeitsystem, das Java-Bytecode ausführt. Die JVM ist wie ein virtueller Computer, der eine Reihe kompilierter Anweisungen ausführen und Speicherorte bearbeiten kann. Wenn ein Java-Compiler Quellcode kompiliert, generiert er einen hochoptimierten Befehlssatz namens Bytecode in einer .class-Datei. Die JVM interpretiert diese Bytecode-Anweisungen und konvertiert sie zur Ausführung in maschinenspezifischen Code.
JDK Das Java Development Kit (JDK) ist eine Softwareentwicklungsumgebung, mit der Sie Java-Anwendungen entwickeln und ausführen können. Es enthält die JRE und eine Reihe von Programmiertools, z. B. einen Java-Compiler, einen Interpreter, einen Appletviewer und einen Document Viewer. Das JDK wird über die Plattformen Java SE, Java EE oder Java ME implementiert.
JRE Die Java Runtime Environment (JRE) ist Teil des JDK, das eine JVM, Kernklassen und mehrere Bibliotheken enthält, die die Anwendungsentwicklung unterstützen. Obwohl die JRE als Teil des JDK verfügbar ist, können Sie sie auch separat herunterladen und verwenden.
Zum vollständigen Verständnis können Sie meinen Blog sehen: Jdk Jre Jvm und Unterschiede
jdk ist erforderlich, um Java-Code zu kompilieren und in Byte-Codes umzuwandeln, während jre für die Ausführung der Byte-Codes erforderlich ist.
JDK enthält die JRE plus-Befehlszeilenentwicklungstools wie Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich oder nützlich sind.
JRE ist im Grunde die Java Virtual Machine, auf der Ihre Java-Programme ausgeführt werden. Es enthält auch Browser-Plugins für die Applet-Ausführung.
JDK ist eine abstrakte Maschine. Diese Spezifikation bietet eine Laufzeitumgebung, in der Java-Bytecode ausgeführt werden kann.
Grundsätzlich sagte JVM <JRE <JDK gemäß @Jaimin Patel.
Der Unterschied zwischen JDK und JRE besteht darin, dass JDK das Software Development Kit für Java ist, während JRE der Ort ist, an dem Sie Ihre Programme ausführen.
Angenommen, wenn Sie Entwickler sind, besteht Ihre Aufgabe darin, ein Programm zu entwickeln und das Programm auszuführen. Sie müssen also über eine Umgebung zum Entwickeln und Ausführen verfügen, die von JDK bereitgestellt wird.
Angenommen, wenn Sie ein Client sind, müssen Sie sich keine Gedanken über die Entwicklung machen. Sie benötigen lediglich eine Umgebung, in der Sie ein Programm ausführen und nur Ergebnisse erhalten können, die von JRE bereitgestellt wird.
JRE führt die Anwendung aus, aber JVM liest die Anweisungen Zeile für Zeile, sodass sie interpretiert werden.
JDK = JRE + Entwicklungstools
JRE = JVM + Bibliotheksklassen
JRE
JRE ist eine Abkürzung für Java Runtime Environment. Es wird zur Bereitstellung einer Laufzeitumgebung verwendet. Es ist die Implementierung von JVM. Es existiert physisch. Es enthält eine Reihe von Bibliotheken und andere Dateien, die JVM zur Laufzeit verwendet.
Die Implementierung von JVMs wird neben Sun Micro Systems auch von anderen Unternehmen aktiv freigegeben.
JDK
JDK ist eine Abkürzung für Java Development Kit. Es existiert physisch. Es enthält JRE + -Entwicklungswerkzeuge.