Was ist der Unterschied zwischen JVM , JDK , JRE und OpenJDK ?
Ich habe in Java programmiert und bin auf diese Sätze gestoßen. Was sind die Unterschiede zwischen ihnen?
java
jvm
difference
Alireza
quelle
quelle
Antworten:
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. Aus diesem Grund müssen Sie Ihre
*.java
Dateien kompilieren , um Dateien zu erhalten*.class
, die die von der JVM verstandenen 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:
Beachten Sie, dass Oracle nicht das einzige Unternehmen ist, das JDKs bereitstellt.
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 :
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 später
quelle
JVM ist die Java Virtual Machine - sie führt tatsächlich Java ByteCode aus.
JRE ist die Java-Laufzeitumgebung - sie enthält unter anderem eine JVM und ist das, was Sie zum Ausführen eines Java-Programms benötigen.
JDK ist das Java Development Kit - es ist das JRE, aber mit Javac (das ist, was Sie zum Kompilieren von Java-Quellcode benötigen) und anderen hinzugefügten Programmiertools.
OpenJDK ist eine spezifische JDK-Implementierung.
quelle
other things
in einer JVM enthaltene nicht erwähnt haben . Was sind Sie ? Beantwortet dieser Artikel diese Frage vollständig - javabeat.net/what-is-the-difference-between-jrejvm-and-jdkJDK (Java Development Kit)
Das Java Developer Kit enthält Tools, die zum Entwickeln der Java-Programme 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. Der Java Application Launcher öffnet eine JRE, lädt die Klasse und ruft ihre Hauptmethode auf.
Sie benötigen JDK, wenn Sie überhaupt Ihre eigenen Programme schreiben und kompilieren möchten. Für die Ausführung von Java-Programmen ist JRE ausreichend.
JRE ist für die Ausführung von Java-Dateien vorgesehen
dh JRE = JVM + Java-Paketklassen (wie util, math, lang, awt, Swing usw.) + Laufzeitbibliotheken.
JDK ist hauptsächlich für die Java-Entwicklung gedacht. Dh Sie können eine Java-Datei (mit Hilfe von Java-Paketen) erstellen, eine Java-Datei kompilieren und eine Java-Datei ausführen.
JRE (Java Runtime Environment)
Die Java-Laufzeitumgebung 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 in JRE bereitgestellte unterstützende Dateien. 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 zur Ausführung von Code. Das bedeutet, einmal in jedem Computer zu kompilieren und an jedem Ort (jedem Computer) auszuführen.
JVM (Java Virtual Machine)
Wie wir alle wissen, ist die Ausgabe beim Kompilieren einer Java-Datei keine 'exe', sondern eine '.class'-Datei. Die '.class'-Datei besteht aus Java-Bytecodes, die für JVM verständlich sind. Java Virtual Machine interpretiert den Bytecode abhängig 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 Maschinenhardwarearchitektur abhängt. Diese Unabhängigkeit von Hardware und Betriebssystem ist ein Eckpfeiler des Wertes von Java-Programmen, die einmal ausgeführt werden können.
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 Java-Spezifikation nicht erwähnt wird, wie die Funktionen implementiert werden sollen, z. B. in Bezug auf die Funktionsweise des Garbage Collection-Prozesses Definieren Sie einen bestimmten Weg, um dies zu tun.
quelle
Eine Java Virtual Machine (JVM) ist eine virtuelle Maschine, die Java ByteCode ausführen kann. Es ist die Code-Ausführungskomponente der Java-Softwareplattform.
Das Java Development Kit (JDK) ist ein Produkt der Oracle Corporation für Java-Entwickler. Seit der Einführung von Java ist es das mit Abstand am häufigsten verwendete Java Software Development Kit (SDK).
Java Runtime Environment wird auch als Java Runtime, Runtime Environment bezeichnet
OpenJDK (Open Java Development Kit) ist eine kostenlose Open Source-Implementierung der Programmiersprache Java. Dies ist das Ergebnis einer Anstrengung, die Sun Microsystems im Jahr 2006 begonnen hat. Die Implementierung ist mit einer Linking-Ausnahme unter der GNU General Public License (GPL) lizenziert.
quelle
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
quelle
JDK (Java Development Kit):
JRE (Java Runtime Environment)
Die Java-Laufzeitumgebung 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 abhängig 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. Java Virtual Machine bietet eine plattformunabhängige Möglichkeit zur Ausführung von Code.
quelle
JDK - Kompiliert Java in ByteCode. Besteht aus Debuggern, Compilern usw.
JVM - Führt den Bytecode aus. JVM ist diejenige, die die Java-Plattform unabhängig macht. JVM variiert jedoch für Plattformen.
JRE - JVM zusammen mit Java-Laufzeitbibliotheken zum Ausführen von Java-Programmen.
quelle
Ein weiterer erwähnenswerter Aspekt:
JDK (Java Development Kit)
Sie benötigen es für Entwicklungszwecke, wie der Name schon sagt.
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, führen Sie die Bytecodes aus. Es macht die Java-Plattform unabhängig, da es die
.class
Datei ausführt , die Sie nach dem Kompilieren des Java-Programms erhalten, unabhängig davon, ob Sie es unter Windows, Mac oder Linux kompilieren.Öffnen Sie JDK
Nun, wie ich oben sagte. Jetzt wird JDK von verschiedenen Unternehmen hergestellt. Eines davon ist Open Source und kostenlos für die öffentliche Nutzung. Es ist OpenJDK, während einige andere das JRockit JDK oder das IBM JDK der Oracle Corporation sind.
Für den allgemeinen Benutzer können sie jedoch alle gleich erscheinen.
Fazit
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 .
Mit anderen Worten, JDK ist Großvater JRE ist Vater und JVM ist ihr Sohn.
quelle
Java ist die Sprache und enthält eine strenge und stark typisierte Syntax, mit der Sie inzwischen sehr vertraut sein sollten.
Java 2 Platform, Standard Edition, auch als J2SE bekannt, verwies auf die Plattform und enthielt unter anderem die Klassen in den Paketen java.lang und java.io. Es war der Baustein, auf dem Java-Anwendungen aufgebaut waren.
Eine Java Virtual Machine (JVM) ist eine virtuelle Software-Maschine, auf der kompilierter Java-Code ausgeführt wird. Da kompilierter Java-Code lediglich Bytecode ist, ist die JVM dafür verantwortlich, diesen Bytecode vor dem Ausführen 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 die Software, mit der Java-Entwickler Java-Anwendungen erstellen. Es enthält einen Java-Sprachcompiler, einen Dokumentationsgenerator, Tools zum Arbeiten 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 herunterladen, um kompilierte Java-Anwendungen auszuführen. Es enthält eine JVM, enthält jedoch keine der im JDK enthaltenen Entwicklungstools. Das JDK enthält jedoch eine JRE.
quelle
JVM: Eine Spezifikation, die die Art und Weise / die Ressourcen zum Ausführen eines Java-Programms beschreibt. Führt den Bytecode tatsächlich aus und macht die Java-Plattform unabhängig. Dabei ist es für verschiedene Plattformen unterschiedlich. JVM für Windows kann nicht als JVM für UNIX funktionieren.
JRE: Implementierung von JVM. (JVM + Laufzeitbibliotheken)
JDK: JRE + Java-Compiler und andere wichtige Tools zum Erstellen eines Java-Programms von Grund auf neu
quelle
JVM : Dies bedeutet tatsächlich, dass der Bytecode-Interpreter plattformabhängig ist. Zum Beispiel: In der Windows-Plattform ist der Prozess ' java.exe ' oder ' javaw.exe ' der jvm-Prozess.
JDK : ist ein Toolkit, das die erforderlichen Bibliotheken und Dienstprogramme zum Entwickeln und Ausführen von Java-Programmen / -Anwendungen enthält
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.
quelle
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 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 (das wiederum JVM enthält). Sobald Sie JDK erhalten haben, müssen Sie JRE und JVM nicht separat installieren. Es enthält einen Compiler, der Ihre .java-Dateien zu .class-Dateien kompiliert
quelle
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.
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
quelle
Zusammenfassend:
Wenn Sie in Java entwickeln möchten, benötigen Sie das JDK. Wenn Sie jedoch nur Java ausführen möchten, benötigen Sie das JRE.
quelle
JVM Java Virtual Machine führt tatsächlich den Java-Bytecode aus. Es ist der Ausführungsblock auf der JAVA-Plattform. Es konvertiert den Bytecode in den Maschinencode.
Die 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.
Das JDK Java Development Kit enthält alle Tools zum Entwickeln Ihrer Anwendungssoftware. Es ist als JRE + JVM
Open JDK ist eine kostenlose Open Source-Implementierung der Java-Plattform.
quelle
In Laienbegriffen: - JDK = JRE + Entwicklungs- / Debugging-Tools , bei denen JDK unser komplettes Paket für die Arbeit mit Java ist, vom Erstellen des Kompilierens bis zum Ausführen. Andererseits besteht JRE nur aus dem Ausführen von Code (Byte-Code).
Hinweis: - Unabhängig davon, ob wir JDK oder JRE installieren, wird JVM mit beiden Paketen gebündelt, 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
quelle
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 enthält die Spezifikationen, die angeben, wie ein Java-Code kompiliert, geladen, überprüft, auf Fehler überprüft und ausgeführt werden soll.
JRE : Implementierung der JVM, mit der einige Java-Bibliotheken zum Ausführen des Programms verwendet werden
quelle
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
quelle
JVM wird als Java Virtual Machine abgekürzt. JVM ist die Hauptkomponente der Java-Architektur. JVM ist in der Programmiersprache C geschrieben. Der Java-Compiler erzeugt den Bytecode 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 wird zur Laufzeit eine Umgebung bereitgestellt. 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 Java-Anwendungen zu entwickeln. Und auch das Debuggen und Überwachen von Java-Anwendungen. JDK enthält JRE + -Entwicklungswerkzeuge (javac, java)
OpenJDK OpenJDK ist eine Open Source-Version von Sun JDK. Oracle JDK ist das offizielle JDK von Sun.
quelle