376 Stimmen

Was ist der Unterschied zwischen JVM, JDK, JRE und OpenJDK?

Was ist der Unterschied zwischen JVM , JDK , JRE & OpenJDK ?

Ich habe in Java programmiert und bin auf diese Ausdrücke gestoßen. Was sind die Unterschiede zwischen ihnen?

405voto

alain.janinm Punkte 19495

JVM

En Virtuelle Java-Maschine (JVM) ist die virtuelle Maschine, auf der die Java-Bytecodes ausgeführt werden. Die JVM versteht den Java-Quellcode nicht; deshalb müssen Sie Ihre Software kompilieren. *.java Dateien zu erhalten *.class Dateien, die die von der JVM verstandenen Bytecodes enthalten. Es ist auch die Einheit, 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 die Wikipedia-Liste ), das Ziel ist, dass sie mit den gleichen Bytecodes alle die gleichen Ergebnisse liefern.

JDK und JRE

Um den Unterschied zwischen JDK und JRE zu erklären, lesen Sie am besten die Oracle-Dokumentation und sehen Sie sich das Diagramm an:

Java-Laufzeitumgebung (JRE)

Die Java-Laufzeitumgebung (Java Runtime Environment, JRE) stellt die Bibliotheken, die virtuelle Java-Maschine und andere Komponenten zur Ausführung von Applets und Anwendungen bereit, die in der Programmiersprache Java geschrieben wurden. Darüber hinaus sind zwei wichtige Bereitstellungstechnologien Teil der JRE: Java Plug-in, mit dem Applets in gängigen Browsern ausgeführt werden können, und Java Web Start, mit dem eigenständige Anwendungen über ein Netzwerk bereitgestellt werden können. Sie ist auch die Grundlage für die Technologien der Java 2 Platform, Enterprise Edition (J2EE) für die Entwicklung und Bereitstellung von Unternehmenssoftware. Die JRE enthält keine Tools und Dienstprogramme wie Compiler oder Debugger für die Entwicklung von Applets und Anwendungen.

Java-Entwicklungskit (JDK)

Das JDK ist eine Obermenge des JRE und enthält alles, was im JRE enthalten ist, sowie Tools wie Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich sind.

Beachten Sie, dass Oracle nicht das einzige Unternehmen ist, das JDKs anbietet.

OpenJDK

OpenJDK ist eine Open-Source-Implementierung des JDK und die Basis für das Oracle JDK. Es gibt fast keinen Unterschied zwischen dem Oracle JDK und dem OpenJDK.

Die Unterschiede sind wie folgt erklärt Blog :

F: Was ist der Unterschied zwischen dem Quellcode im OpenJDK-Repository und dem Code, den Sie zum Erstellen des Oracle JDK verwenden?

A: Es ist sehr nahe dran - unser Build-Prozess für Oracle JDK-Releases baut auf OpenJDK 7 auf, indem er nur ein paar Teile hinzufügt, wie z.B. den Deployment-Code, der die Oracle-Implementierung des Java Plugin und Java WebStart enthält, sowie einige Closed-Source-Komponenten von Drittanbietern, wie z.B. einen Grafik-Rasterizer, einige Open-Source-Komponenten von Drittanbietern, wie z.B. Rhino, und hier und da ein paar Kleinigkeiten, wie z.B. zusätzliche Dokumentation oder Schriftarten von Drittanbietern. In Zukunft wollen wir alle Teile des Oracle JDK mit Ausnahme derer, die wir als kommerzielle Funktionen betrachten, wie z. B. JRockit Mission Control (noch nicht im Oracle JDK verfügbar), als Open Source zur Verfügung stellen und belastende Komponenten von Drittanbietern durch Open Source-Alternativen ersetzen, um eine engere Parität zwischen den Codebasen zu erreichen.

Aktualisierung für JDK 11

Ein Artikel von Donald Smith versucht, den Unterschied zwischen Oracle JDK und Oracles OpenJDK zu verdeutlichen: https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

Wie in den Kommentaren von @Alan Evangelista erwähnt, wurde Java Web Start von Oracle in Java SE 9 veraltet und in Java SE 11 entfernt.

109voto

hvgotcodes Punkte 114342

JVM ist die Java Virtual Machine - sie führt Java ByteCode aus.

JRE ist die Java-Laufzeitumgebung (Java Runtime Environment) - sie enthält unter anderem eine JVM und ist das, was Sie brauchen, um ein Java-Programm auszuführen.

JDK ist das Java Development Kit - es ist das JRE, aber mit javac (das Sie brauchen, um Java-Quellcode zu kompilieren) und anderen Programmierwerkzeugen ergänzt.

OpenJDK ist eine spezielle JDK-Implementierung.

52voto

user25226 Punkte 755

JDK (Java-Entwicklungskit)

Das Java Developer Kit enthält die Tools, die für die Entwicklung von Java-Programmen benötigt werden, und JRE, um die Programme auszuführen. Zu den Tools gehören Compiler (javac.exe), Java Application Launcher (java.exe), Appletviewer, etc.

Der Compiler wandelt Java-Code in Byte-Code um. Java Application Launcher öffnet eine JRE, lädt die Klasse und ruft ihre Hauptmethode auf.

Sie brauchen JDK, wenn Sie überhaupt eigene Programme schreiben und kompilieren wollen. Für die Ausführung von Java-Programmen ist JRE ausreichend.

JRE ist für die Ausführung von Java-Dateien vorgesehen

d.h. JRE = JVM + Java-Pakete Klassen (wie util, math, lang, awt, swing usw.) + Laufzeitbibliotheken.

JDK ist hauptsächlich für die Java-Entwicklung gedacht. D.h. Sie können eine Java-Datei erstellen (mit Hilfe von Java-Paketen), eine Java-Datei kompilieren und eine Java-Datei ausführen.

JRE (Java-Laufzeitumgebung)

Java Runtime Environment enthält JVM, Klassenbibliotheken und andere unterstützende Dateien. Sie enthält keine Entwicklungswerkzeuge wie Compiler, Debugger usw. Die JVM führt das Programm aus und verwendet die Klassenbibliotheken und andere unterstützende Dateien, die in JRE enthalten sind. Wenn Sie ein Java-Programm ausführen möchten, müssen Sie JRE im System installiert haben

Die Java Virtual Machine bietet eine plattformunabhängige Möglichkeit zur Ausführung von Code; Das bedeutet, dass Sie den Code einmal kompilieren und ihn dann überall (auf jeder Maschine) ausführen können.

JVM (Virtuelle Java-Maschine)

Wie wir alle wissen, ist die Ausgabe einer kompilierten Java-Datei keine "exe"-Datei, sondern eine ".class"-Datei. Die '.class'-Datei besteht aus Java-Bytecodes, die von der JVM verstanden werden. Die virtuelle Java-Maschine interpretiert den Bytecode in den Maschinencode, je nach dem zugrunde liegenden Betriebssystem und der Hardwarekombination. Sie ist für alle Dinge wie Garbage Collection, Array Bounds Checking usw. zuständig. Die JVM ist plattformabhängig.

Die JVM wird als "virtuell" bezeichnet, weil sie eine Maschinenschnittstelle bietet, die nicht vom zugrunde liegenden Betriebssystem und der Hardware-Architektur der Maschine abhängig ist. Diese Unabhängigkeit von Hardware und Betriebssystem ist ein Eckpfeiler des Wertes von Java-Programmen, die einmal geschrieben und überall ausgeführt werden können.

Es gibt verschiedene JVM-Implementierungen. Diese können sich in Dingen wie Leistung, Zuverlässigkeit, Geschwindigkeit usw. unterscheiden. Diese Implementierungen unterscheiden sich in den Bereichen, in denen die Java-Spezifikation nicht angibt, wie die Funktionen zu implementieren sind, z. B. ist die Art und Weise, wie der Garbage-Collection-Prozess funktioniert, von der JVM abhängig.

25voto

nidhin Punkte 6333

A Virtuelle Java-Maschine (JVM) ist eine virtuelle Maschine, die Java ByteCode ausführen kann. Sie ist die Code-Ausführungskomponente der Java-Softwareplattform.

En Java-Entwicklungskit (JDK) ist ein Produkt der Oracle Corporation, das sich an Java-Entwickler richtet. Seit der Einführung von Java ist es das mit Abstand am häufigsten verwendete Java Software Development Kit (SDK).

Java-Laufzeitumgebung wird auch als Java Runtime, Laufzeitumgebung, bezeichnet.

OpenJDK (Offenes Java-Entwicklungskit) ist eine freie und quelloffene Implementierung der Programmiersprache Java. Sie ist das Ergebnis der Bemühungen von Sun Microsystems, die im Jahr 2006 begannen. Die Implementierung ist unter der GNU General Public License (GPL) lizenziert, mit einer Ausnahme für die Verknüpfung.

20voto

Garrett Hall Punkte 28608

JVM ist die virtuelle Maschine, auf der Java-Code ausgeführt wird

JRE ist die Umgebung (Standardbibliotheken und JVM), die zur Ausführung von Java-Anwendungen erforderlich ist

JDK ist die JRE mit Entwickler-Tools und Dokumentationen

OpenJDK ist eine Open-Source-Version des JDK, im Gegensatz zum herkömmlichen JDK von Oracle

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X