Der Unterschied zwischen JDK und JRE
1. Definition
JRE (Java Runtime Enviroment). ) Es ist die laufende Umgebung von Java. Für Benutzer von Java-Programmen, nicht für Entwickler. Wenn Sie nur die JRE herunterladen und installieren, kann Ihr System nur Java-Programme ausführen. JRE ist eine Sammlung von Umgebungen, die zum Ausführen von Java-Programmen erforderlich sind, einschließlich der JVM-Standardimplementierung und der Java-Kernklassenbibliothek. Es umfasst eine Java Virtual Machine, Java-Plattform-Kernklassen und unterstützende Dateien. Es enthält keine Entwicklungstools (Compiler, Debugger usw.).
JDK (Java Development Kit), auch bekannt als J2SDK (Java2 Software Development Kit), ist ein Java-Entwicklungs-Toolkit. Es stellt eine Java-Entwicklungsumgebung bereit (stellt Compiler Javac und andere Tools zum Kompilieren von Java-Dateien für den Unterricht bereit). Dateien) und Laufumgebung (Bereitstellung von JVM- und Runtime-Hilfspaketen zum Parsen von Klassendateien, um sie auszuführen). Wenn Sie das JDK herunterladen und installieren, können Sie nicht nur Java-Programme entwickeln, sondern verfügen auch über eine Plattform zum Ausführen von Java-Programmen. JDK ist der Kern von Java, einschließlich der Java Runtime Environment (JRE), einer Reihe von Java-Tools tools.jar und der Java-Standardklassenbibliothek (rt.jar).
Empfohlen: „Java-Lernen“
2. Unterschiede
JRE umfasst hauptsächlich: Klassendateien der Java-Klassenbibliothek ( Alle sind in JAR-Dateien im lib-Verzeichnis und in virtuellen Maschinen (jvm.dll) verpackt. Das JDK umfasst hauptsächlich: Klassendateien der Java-Klassenbibliothek (alle in JAR-Dateien im lib-Verzeichnis gepackt) und wird mit einer JRE geliefert. Warum wird das JDK mit einer JRE geliefert? Darüber hinaus enthalten die Client- und Serverordner unter jdk/jre/bin beide jvm.dll (was darauf hinweist, dass die mit JDK gelieferte JRE über zwei virtuelle Maschinen verfügt).
Denken Sie daran, den JDK/Bin-Pfad im Umgebungsvariablenpfad festzulegen? Der Lehrer wird jedem sagen, dass Javac und Java nicht verwendet werden können, wenn sie nicht eingerichtet sind. Es stimmt, dass das Verzeichnis jdk/bin alle Befehle enthält. Aber hat jemals jemand gedacht, dass der von uns verwendete Java-Befehl nicht im Verzeichnis jdk/bin, sondern im Verzeichnis jre/bin liegt? Wenn Sie mir nicht glauben, können Sie ein Experiment durchführen. Sie können die Datei java.exe im Verzeichnis jdk/bin an einen anderen Ort kopieren und dann das Java-Programm ausführen. Alles ist in Ordnung! (In JRE gibt es keinen Javac-Befehl. Der Grund ist einfach: Es handelt sich nicht um eine Entwicklungsumgebung.) Also wird jemand fragen? Ich habe das Verzeichnis jre/bin offensichtlich nicht auf die Umgebungsvariable gesetzt? Stellen Sie sich vor, dass die meisten Leute Java verwenden, sie brauchen kein JDK für die Entwicklung, sie brauchen nur JRE, um das Java-Programm auszuführen. Wie mühsam ist es dann für jeden Kunden, Umgebungsvariablen festzulegen? Wenn Sie also jre installieren, fügt das Installationsprogramm automatisch die Datei java.exe zu den Systemvariablen hinzu. Gehen Sie zu Windows/system32 und schauen Sie nach. Es gibt eine java.exe.
3. Schwierigkeiten
Wenn Sie JDK installiert haben, verfügt Ihr Computer über zwei Sätze von JRE (JRE selbst und das JRE im JDK). Der erste Satz enthält weniger serverseitiges Java als letztere virtuelle Maschine.
(1) Warum verlangt Sun von JDK, dass zwei Sätze derselben JRE installiert werden? Dies liegt daran, dass das JDK viele in Java geschriebene Entwicklungstools enthält (z. B. javac.exe, jar.exe usw.), die alle in /lib/tools.jar abgelegt sind. Wenn wir tools.jar in tools1.jar umbenennen und dann javac.exe ausführen, werden die folgenden Ergebnisse angezeigt: Ausnahme im Thread „main“ java.lang.NoClassDefFoundError: com/sun/tools/javac/Main. Das heißt, wenn Sie javac.exe und java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main eingeben, erhalten Sie das gleiche Ergebnis. Von hier aus können wir beweisen, dass javac.exe nur ein Wrapper (Wrapper) ist und der Zweck seiner Erstellung darin besteht, Entwicklern die Eingabe zu langer Befehle zu ersparen. Und wir können feststellen, dass die Programme im Verzeichnis /lib sehr klein sind, nicht größer als 29 KB. Daraus können wir eine Schlussfolgerung ziehen. Das heißt, fast alle Tools im JDK sind in Java geschrieben, es handelt sich also auch um Java-Anwendungen. Wenn Sie also die an das JDK angehängten Tools zum Entwickeln von Java-Programmen verwenden möchten, müssen Sie auch selbst einen Satz JRE anhängen. Daher wird das im JDK-Verzeichnis JRE befindliche Set zum Ausführen allgemeiner Java-Programme verwendet.
(2) Wer entscheidet, wenn mehr als zwei Sätze JRE auf einem Computer installiert sind? Diese wichtige Aufgabe obliegt java.exe. Die Aufgabe von java.exe besteht darin, die geeignete JRE zum Ausführen des Java-Programms zu finden. java.exe sucht in der folgenden Reihenfolge nach JRE: 1) Gibt es eine JRE in ihrem eigenen Verzeichnis? 2) Gibt es eine JRE im übergeordneten Verzeichnis? 3) Abfrage der Registrierung: [HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment]; . Daher steht das Ausführungsergebnis von java.exe in engem Zusammenhang mit der Ausführung von JRE auf Ihrem Computer.
(3) Es gibt zwei Ordner im JDK-->JRE-->Bin-Verzeichnis: Server und Client. Hier befindet sich die echte jvm.dll. jvm.dll kann nicht alleine funktionieren. Wenn jvm.dll gestartet wird, verwendet es die explizite Methode (dh die Verwendung von LoadLibrary () und GetProcAddress () in der Win32-API zum Laden der zusätzlichen dynamischen Linkbibliothek) und diese zusätzlichen dynamischen Links Bibliotheken Dynamic Link Libraries (.dll) müssen sich im übergeordneten Verzeichnis des Verzeichnisses befinden, in dem sich jvm.dll befindet. Unabhängig davon, welche JVM Sie verwenden möchten, müssen Sie daher nur den PATH so festlegen, dass er auf jvm.dll in dem Verzeichnis zeigt, in dem sich die JRE befindet.
4. Das am weitesten verbreitete JDK ist das von Sun veröffentlichte JDK. Neben Sun gibt es viele Unternehmen und Organisationen, die ihr eigenes JDK entwickelt haben, z. B. JDK von IBM, Jrocket von BEA und There sind JDKs, die von der GNU-Organisation usw. entwickelt wurden.
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen JDK und JRE. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!