it-swarm.com.de

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 Sätze gestoßen. Was sind die Unterschiede zwischen ihnen?

317
Alireza

JVM

Die Java Virtual Machine (JVM) ist die virtuelle Maschine, auf der die Bytecodes Java ausgeführt werden. Die JVM versteht den Quellcode von Java nicht. Aus diesem Grund müssen Sie Ihre *.Java -Dateien kompilieren, um *.class -Dateien zu erhalten, die die von der JVM verstandenen Bytecodes enthalten. Es ist auch die Entität, die erlaubt, dass Java eine "portable Sprache" ist ( einmal schreiben, irgendwo ausführen ). In der Tat gibt es spezielle Implementierungen der JVM für verschiedene Systeme (Windows, Linux, macOS, siehe die Wikipedia-Liste ), das Ziel ist, dass alle mit denselben Bytecodes die gleichen Ergebnisse liefern.

JDK und JRE

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

Java Runtime Environment (JRE)

Die Java Runtime Environment (JRE) stellt die Bibliotheken, die Java virtuelle Maschine und andere Komponenten zum Ausführen von Applets und Anwendungen bereit, die in der Programmiersprache Java geschrieben sind. 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. Es ist auch die Grundlage für die Technologien in 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 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 Compiler und Debugger, die für die Entwicklung von Applets und Anwendungen erforderlich sind.

Beachten Sie, dass Oracle nicht der einzige Anbieter von JDKs ist.

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 in diesem Blog angegeben:

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

A: Es ist sehr nah dran - unser Erstellungsprozess für Oracle JDK-Releases baut auf OpenJDK 7 auf, indem nur ein paar Teile hinzugefügt werden, wie beispielsweise der Bereitstellungscode, der die Implementierung des Java Plugins und Java WebStart sowie einige Closed-Source-Komponenten von Drittanbietern wie ein Grafikraster, einige Open-Source-Komponenten von Drittanbietern wie Rhino und hier und da ein paar Kleinigkeiten wie zusätzliche Dokumentation oder Schriften von Drittanbietern. In Zukunft ist es unsere Absicht, alle Teile des Oracle JDK mit Ausnahme derjenigen, die wir für kommerzielle Funktionen wie JRockit Mission Control (noch nicht in Oracle JDK verfügbar) halten, als Open-Source-Komponenten zu verwenden, um eine engere Parität zu erreichen zwischen den Codebasen.

Update für JDK 11 - Ein Artikel von Donald Smith versucht, den Unterschied zwischen Oracle JDK und OpenJDK von Oracle zu unterscheiden: https://blogs.Oracle.com/Java-platform-group/Oracle-jdk-releases-for- Java-11 und höher

361
alain.janinm

JVM ist die Java virtuelle Maschine - sie führt tatsächlich Java ByteCode aus.

JRE ist die Laufzeitumgebung Java - sie enthält unter anderem eine JVM und ist das, was Sie zum Ausführen eines Programms Java benötigen.

JDK ist das Java Development Kit - es ist die JRE, aber mit Javac (was Sie zum Kompilieren von Java Quellcode benötigen) und anderen hinzugefügten Programmierwerkzeugen.

OpenJDK ist eine spezielle JDK-Implementierung.

86
hvgotcodes

JDK (Java Development Kit)

Java Developer Kit enthält Tools, die zum Entwickeln der Programme Java und JRE zum Ausführen der Programme erforderlich sind. Die Tools umfassen Compiler (javac.exe), Java Application Launcher (Java.exe), Appletviewer usw.

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

Sie brauchen JDK, wenn Sie überhaupt Ihre eigenen 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 Packages Klassen (wie util, math, lang, awt, swing usw.) + Laufzeitbibliotheken.

JDK ist hauptsächlich für die Java Entwicklung gedacht. Das heißt Sie können eine Java -Datei erstellen (mithilfe von Java -Paketen), eine Java -Datei kompilieren und eine Java -Datei ausführen.

JRE (Java Runtime Environment)

Java Runtime Environment enthält JVM, Klassenbibliotheken und andere unterstützende Dateien. Es enthält keine Entwicklungstools wie Compiler, Debugger usw. Tatsächlich führt JVM das Programm aus und verwendet die Klassenbibliotheken und andere unterstützende Dateien, die in JRE bereitgestellt werden. Wenn Sie ein Java Programm ausführen möchten, muss JRE auf dem System installiert sein

Die Java Virtual Machine bietet eine plattformunabhängige Möglichkeit, Code auszuführen. Das heißt, kompilieren Sie einmal in einer beliebigen Maschine und führen Sie sie an einer beliebigen Stelle (auf einer beliebigen Maschine) aus.

JVM (Java Virtual Machine)

Wie wir alle wissen, ist die Ausgabe beim Kompilieren einer Java -Datei keine 'exe'-Datei, sondern eine' .class'-Datei. Die Datei ".class" besteht aus Java Byte-Codes, die von JVM verstanden werden. Java Die virtuelle Maschine interpretiert den Bytecode in Abhängigkeit von der zugrunde liegenden Kombination aus Betriebssystem und Hardware in den Maschinencode. Es ist für alle Dinge wie Garbage Collection, Überprüfung der Array-Grenzen usw. verantwortlich. JVM ist plattformabhängig.

Die JVM wird als "virtuell" bezeichnet, da sie eine Maschinenschnittstelle bietet, die nicht vom zugrunde liegenden Betriebssystem und der Hardware-Architektur der Maschine abhängt. Diese Unabhängigkeit von Hardware und Betriebssystem ist ein Eckpfeiler des Werts von Java Programmen für einmaliges Schreiben und Ausführen.

Es gibt verschiedene JVM-Implementierungen. Diese können sich in Bezug auf Leistung, Zuverlässigkeit, Geschwindigkeit usw. unterscheiden. Diese Implementierungen unterscheiden sich in den Bereichen, in denen in der Spezifikation Java nicht angegeben ist, wie die Features implementiert werden sollen, z , Java spec definiert dazu keinen bestimmten Weg.

45
user25226

Eine Java Virtual Machine (JVM) ist eine virtuelle Maschine, die Java ByteCode ausführen kann. Es ist die Codeausführungskomponente der Softwareplattform Java.

Das Java Development Kit (JDK) ist ein Produkt der Oracle Corporation, das sich an Java Entwickler richtet. Seit der Einführung von Java ist es mit Abstand das am weitesten verbreitete Java Software Development Kit (SDK).

Java Runtime Environment, wird auch als Java Runtime, Runtime Environment bezeichnet

OpenJDK (Open Java Development Kit) ist eine kostenlose und Open-Source-Implementierung der Programmiersprache Java. Dies ist das Ergebnis einer Anstrengung, mit der Sun Microsystems im Jahr 2006 begonnen hat. Die Implementierung unterliegt der GNU General Public License (GPL) mit einer Linking-Ausnahme.

23
nidhin

JDK (Java Development Kit):

  • enthält Tools, die zum Entwickeln der Programme Java benötigt werden.
  • Sie brauchen JDK, wenn Sie überhaupt Ihre eigenen Programme schreiben und kompilieren wollen.
  • JDK ist hauptsächlich für die Java Entwicklung gedacht.

JRE (Java Runtime Environment)

Java Runtime Environment enthält JVM, Klassenbibliotheken und andere unterstützende Dateien. JRE ist für die Ausführung von Java Dateien vorgesehen.

JVM (Java Virtual Machine)

Die JVM interpretiert den Bytecode in den Maschinencode abhängig von der zugrunde liegenden Kombination aus Betriebssystem und Hardware. Es ist für alle Dinge wie Garbage Collection, Überprüfung der Array-Grenzen usw. verantwortlich. Java Virtual Machine bietet eine plattformunabhängige Möglichkeit, Code auszuführen.

15
A_BOSS

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

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

JDK ist die JRE mit Entwicklertools und Dokumentationen

OpenJDK ist eine Open-Source-Version des JDK, im Gegensatz zum üblichen JDK von Oracle

14
Garrett Hall

JDK - Kompiliert Java nach ByteCode. Besteht aus Debuggern, Compilern usw.

javac file.Java // Is executed using JDK

JVM - Führt den Bytecode aus. JVM macht die Plattform Java unabhängig. JVM variiert jedoch für Plattformen.

JRE - JVM zusammen mit Java Laufzeitbibliotheken zum Ausführen von Java Programmen.

6
bharanitharan

Ein weiterer erwähnenswerter Aspekt:

JDK (Java Development Kit)

Sie werden es für Entwicklungszwecke benötigen, wie der Name schon sagt.

Zum Beispiel: Ein Softwareunternehmen muss JDK auf seinem Computer installieren, da es neue Software entwickeln muss, die auch das Kompilieren und Ausführen seiner Java -Programme umfasst.

Wir können also sagen, dass JDK = JRE + JVM.

JRE (Java-Laufzeitumgebung)

Es wird benötigt, um Java Programme auszuführen. Sie können damit keine Java Programme kompilieren.

Beispiel: Ein normaler Computerbenutzer, der einige Online-Spiele ausführen möchte, benötigt JRE in seinem System, um Java Programme auszuführen.

JVM (Java Virtual Machine)

Wie Sie vielleicht wissen, werden die Bytecodes ausgeführt. Es macht die Plattform Java unabhängig, da es die .class -Datei ausführt, die Sie nach dem Kompilieren des Programms Java erhalten, unabhängig davon, ob Sie es unter Windows, Mac oder Linux kompilieren.

JDK öffnen

Nun, wie ich oben sagte. Jetzt wird JDK von einer anderen Firma hergestellt. Eine davon ist OpenJDK, und einige andere sind JRockit JDK oder IBM JDK von Oracle Corporation.

Für den allgemeinen Benutzer sind sie jedoch möglicherweise alle gleich.

Fazit

Wenn Sie ein Java Programmierer sind, benötigen Sie JDK in Ihrem System und dieses Paket enthält JRE und JVM. Wenn Sie jedoch ein normaler Benutzer sind, der gerne Online-Spiele spielt, benötigen Sie nur JRE und dieses Paket wird nicht JDK drin haben.

Mit anderen Worten, JDK ist Großvater, JRE ist Vater und JVM ist ihr Sohn.

4
Mrinal

Java ist die Sprache und enthält eine strenge und stark typisierte Syntax, mit der Sie sich mittlerweile bestens auskennen sollten.

Java 2 Platform, Standard Edition, auch als J2SE bekannt, bezog sich auf die Plattform und umfasste unter anderem die Klassen in den Paketen Java.lang und Java.io. Es war der Baustein, auf dem Java Anwendungen aufgebaut waren.

Eine Java virtuelle Maschine oder JVM ist eine virtuelle Software-Maschine, auf der kompilierter Java Code ausgeführt wird. Da kompilierter Java Code nur Bytecode ist, ist die JVM dafür verantwortlich, diesen Bytecode vor der Ausführung in Maschinencode zu kompilieren. (Dies wird häufig als Just In Time Compiler oder JIT Compiler bezeichnet.) Die JVM kümmert sich auch um die Speicherverwaltung, sodass der Anwendungscode nicht erforderlich ist.

Das Java Development Kit (JDK) war und ist das Teil der Software, mit dem Java Entwickler Java Anwendungen erstellen. Es enthält einen Java - Sprachcompiler, einen Dokumentationsgenerator, Tools für die Arbeit mit nativem Code und (normalerweise) den Java -Quellcode für die Plattform, um das Debuggen von Plattformklassen zu ermöglichen.

Die Java Runtime Environment (JRE) war und ist die Software, die Endbenutzer heruntergeladen haben, um kompilierte Java Anwendungen auszuführen. Es enthält eine JVM, jedoch keine im JDK enthaltenen Entwicklungstools. Das JDK enthält jedoch eine JRE.

3
Koray Tugay

JVM: Eine Spezifikation, die die Art und Weise/Ressourcen beschreibt, wie ein Programm Java ausgeführt wird. Führt tatsächlich den Bytecode aus und macht die Plattform Java unabhängig. Dabei ist es für verschiedene Plattformen unterschiedlich. JVM für Windows kann nicht als JVM für UNIX verwendet werden.

JRE: Implementierung von JVM. (JVM + Laufzeitbibliotheken)

JDK: JRE + Java Compiler und andere wichtige Werkzeuge, um ein Java Programm von Grund auf neu zu erstellen

3
user2807418

JVM: Dies bedeutet tatsächlich, dass der Bytecode-Interpreter plattformabhängig ist. Zum Beispiel: in Windows-Plattform die ' Java.exe ' oder ' javaw.exe 'Voraussetzung ist der JVM-Prozess.

JDK: ist ein Toolkit, das die notwendigen Bibliotheken und Dienstprogramme enthält, um Java Programme/Anwendungen zu entwickeln und auszuführen

JRE: ist die Ausführungsumgebung für eine Java -Anwendung. Sie unterstützt nur Laufzeitabhängigkeiten, einschließlich jvm für kompilierte Programme. Wenn wir ein Java Programm kompilieren wollen, brauchen wir jdk.

2
Tom Sebastian

JVM

JVM (Java Virtual Machine) ist eine abstrakte Maschine. Dies ist eine Spezifikation, die eine Laufzeitumgebung bereitstellt, in der Java Bytecode ausgeführt werden kann. JVMs sind für viele Hardware- und Softwareplattformen verfügbar.

JRE

JRE ist ein Akronym für Java Runtime Environment. Es wird verwendet, um die Laufzeitumgebung bereitzustellen. 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 ist physisch vorhanden. Es enthält JRE + -Entwicklungswerkzeuge.

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

2
Nikhil Kumar

JVM: Virtuelle Maschine von Java. teilt der Maschine mit, was mit dem Java Code zu tun ist. Sie können JVM nicht so herunterladen, wie es ist. Es wird in einer anderen Komponente verpackt geliefert.

JRE: Eine andere Komponente, auf die oben Bezug genommen wurde, ist die JRE. Es ist JVM + andere Jars, um eine Laufzeitumgebung zu erstellen

JDK: enthält JRE (die wiederum JVM enthält). Sobald Sie JDK erhalten haben, müssen Sie JRE und JVM nicht mehr separat installieren. Es enthält einen Compiler, der Ihre .Java-Dateien in .class-Dateien kompiliert

2
Jain

JVM wird als Java Virtual Machine abgekürzt, JVM ist die Hauptkomponente der Java Architektur. JVM ist in der Programmiersprache C geschrieben. Der Compiler Java erzeugt den Byte-Code für JVM. JVM liest den Bytecode, überprüft den Bytecode und verknüpft den Code mit der Bibliothek.

JRE wird als Java Runtime Environment abgekürzt. Es ist eine Bereitstellungsumgebung zur Laufzeit. Es ist physisch vorhanden. Es enthält JVM + eine Reihe von Bibliotheken (JAR) + andere Dateien.

JDK wird als Java Development Kit abgekürzt. Es ist die Entwicklung von Java Anwendungen. Und auch das Debuggen und Überwachen von Java Anwendungen. JDK enthält JRE + -Entwicklungswerkzeuge (Java, Java)

OpenJDK OpenJDK ist eine Open-Source-Version von Sun JDK. Oracle JDK ist das offizielle JDK von Sun.

JDK: Das vollständige Paket, das Sie zum Schreiben und Ausführen von Java Code benötigen

OpenJDK: Eine unabhängige Implementierung von JDK, um es viel besser zu machen

JVM: Konvertiert Java-Code in Bytecode und gibt die Spezifikationen an, wie ein Java-Code kompiliert, geladen, überprüft, auf Fehler überprüft und hingerichtet.

JRE: Implementierung der JVM, mit der einige Java Bibliotheken zum Ausführen des Programms verwendet werden

0
dhirwan

Laien ausgedrückt: - JDK = JRE + Entwicklungs-/Debugging-Tools , wobei JDK unser Komplettpaket für die Arbeit mit Java ist, von der Erstellung bis zur Ausführung. Andererseits ist JRE nur Code (Byte Code).

Hinweis: - Unabhängig davon, ob JDK oder JRE installiert wird, wird JVM zusammen mit den Paketen geliefert, und JVM ist der Teil, in dem der JIT-Compiler den Bytecode in den maschinenspezifischen Code konvertiert.

Lesen Sie einfach den Artikel über JDK, JRE, JVM und JIT

0
AugustRush

JVM Java Virtual Machine führt tatsächlich den Bytecode Java aus. Dies ist der Ausführungsblock auf der Plattform Java. Es konvertiert den Bytecode in den Maschinencode.

JRE Java Runtime Environment, bietet die Mindestanforderungen für die Ausführung einer Java -Anwendung. Es besteht aus der Java Virtual Machine (JVM), Kernklassen und unterstützenden Dateien.

JDK Java Development Kit, das alle Tools zur Entwicklung Ihrer Anwendungssoftware enthält. Es ist wie JRE + JVM

Open JDK ist eine kostenlose Open-Source-Implementierung der Plattform Java.

0
Ankur Anandapu

JRE führt die Anwendung aus, aber JVM liest die Anweisungen zeilenweise, damit es sich um einen Interpreter handelt.

JDK= JRE + -Entwicklungswerkzeuge

JRE= JVM + Bibliotheksklassen

0
KIBOU Hassan