Unterschied zwischen JVM und HotSpot?

147

Was genau ist HotSpot und in welcher Beziehung steht es zu JVM und OpenJDK? Ist es eine Bibliothek? Was genau macht es?

Was ist der Unterschied zwischen OpenJDK und HotSpot?

Justin
quelle

Antworten:

148

Die Definition, was genau eine Java Virtual Machine ist, ist in der Java Virtual Machine-Spezifikation angegeben

Die JVM ist per Definition eine virtuelle Maschine , dh eine Softwaremaschine, die simuliert, was eine reale Maschine tut. Wie eine reale Maschine verfügt sie über einen Befehlssatz , eine virtuelle Computerarchitektur und ein Ausführungsmodell. Es ist in der Lage, Code auszuführen, der mit diesem virtuellen Befehlssatz geschrieben wurde, so wie eine reale Maschine Maschinencode ausführen kann.

HotSpot ist eine Implementierung des JVM-Konzepts. Es wurde ursprünglich von Sun entwickelt und gehört jetzt Oracle. Es gibt andere Implementierungen der JVM-Spezifikation, wie z. B. JRockit , IBM J9 und viele andere.

Siehe Liste der Implementierungen von Java Virtual Machine

Das OpenJDK ist ein Projekt, unter dem eine OpenSource-Implementierung von HotSpot (und vielen anderen Teilen des JDK, z. B. Compiler, APIs, Tools usw.) entwickelt wird.

Edwin Dalorzo
quelle
25

OpenJDK (Open Java Development Kit) ist eine kostenlose Open-Source-Implementierung der Java-Plattform Standard Edition (Java SE). OpenJdk ist ein Projekt, das von Sun Microsystems gestartet wurde und heutzutage von vielen Unternehmen und der Community für die Erstellung eines Java Development Kit erstellt wird absolut in Open Source. Gemäß der offiziellen Dokumentation .

OpenJDK ist eine Open-Source-Implementierung der Java Platform Standard Edition (Java SE) -Spezifikationen. Im Mai 2007 veröffentlichte Sun eine vollständig erstellbare Java Development Kit (JDK) -Version für Java SE für die OpenJDK-Community als freie Software unter der GNU General Public License Version 2 (GPLv2). Sun kündigte das Interim Governing Board für die OpenJDK-Community an. Sun kündigte außerdem an, dass OpenJDK-basierte Implementierungen das Java SE 6 Technical Compatibility Kit (JCK) verwenden können, um die Kompatibilität mit der Java SE 6-Spezifikation herzustellen.

Das OpenJDK-Projekt besteht aus einer Reihe von Komponenten - HotSpot (die virtuelle Maschine) , die Java-Klassenbibliothek und der Java-Java-Compiler. Weitere Informationen finden Sie auf seiner Website .

Die aktuelle von Sun / Oracle bereitgestellte JVM heißt HotSpot, da sie Hotspots im Code (Orte, an denen Code intensiver verwendet wird) für die "Just-in-Time" -Optimierung sucht. Aus Wikipedia ist HotSpot, veröffentlicht als "Java HotSpot Performance Engine", eine virtuelle Java-Maschine für Desktops und Server, die von der Oracle Corporation verwaltet und vertrieben wird.

NINCOMPOOP
quelle
Ich habe gehört, OpenJDK verwendet auch HotSpot, um Code auszuführen? Ist das wahr?
Justin
@TheNewIdiot, Sie sagen also, HotSpot ist Teil von OpenJDK? Oder gibt es auch einen proprietären HotSpot, wie die obige Antwort nahelegt?
Pacerier
@NINC, also ist Hotspot sowohl Teil von OracleJDK als auch von OpenJDK? Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier
12

Hinweis: AdoptOpenJDK hat seinen Namen in Adoptium geändert, nachdem es Ende 2020-06 zur Eclipse Foundation gewechselt ist.


Unterschied zwischen JVM und HotSpot?

Eine Java Virtual Machine (JVM) ist ein imaginärer Computer, der niemals physisch als Hardware gebaut wurde. Eine JVM führt Programme aus, die mit ihrem imaginären Befehlssatz kompiliert wurden, der als Zwischendarstellung, bekannt als Bytecode , in den Speicher geschrieben wurde .

Zur Laufzeit muss der Bytecode vom imaginären Befehlssatz in den tatsächlichen Befehlssatz der CPU des Hostcomputers übersetzt werden. Dies kann von einem Dolmetscher im laufenden Betrieb durchgeführt werden. Oder der Bytecode kann vollständig kompiliert und zwischengespeichert werden, um schneller als über den Interpreter ausgeführt zu werden. Dies wird als Just-In-Time-Kompilierung (JIT) bezeichnet .

Im Laufe der Jahrzehnte gab es viele Implementierungen der JVM . Die meisten sind weggefallen.

HotSpot ist eine Implementierung der JIT-Technologie, die zunächst interpretiert ausgeführt wird und die tatsächliche Leistung der App überwacht. Teile der App werden dann so ausgewählt, dass sie vollständig als nativer Code kompiliert und zwischengespeichert werden, um die Ausführung zu beschleunigen. HotSpot wurde bei Sun als kommerzielles Produkt entwickelt. Nach der Übernahme von Sun hat Oracle HotSpot weiterentwickelt, indem wichtige Teile seines Konkurrenzprodukts JRockit kombiniert wurden . HotSpot ist jetzt über das OpenJDK- Projekt alsOpen-Source-Versionerhältlich und kostenlos erhältlich.

Eine weitere solche Implementierung in OpenJ9 wurde von IBM entwickelt und ist jetzt über die Eclipse Foundation als Open-Source- Version verfügbar und kostenlos erhältlich. Einige auf OpenJDK basierende JVM-Distributionen ersetzen HotSpot durch OpenJ9, während der Rest von OpenJDK weiterhin verwendet wird, z. B. die Java SE- Klassenbibliotheken. Beispielsweise bieten die bei AdoptOpenJDK verfügbaren vorgefertigten Distributionen die Wahl zwischen HotSpot oder OpenJ9 auf einigen Hardwarekomponenten.

Diagramm mit dem Verlauf der Zusammenführung von HotSpot und JRockit sowie von OpenJ9, beide in AdoptOpenJDK verfügbar.

Diagramm mit dem Verlauf der Zusammenführung von HotSpot und JRockit sowie von OpenJ9, beide in AdoptOpenJDK verfügbar

Was genau ist HotSpot und in welcher Beziehung steht es zu JVM und OpenJDK? Ist es eine Bibliothek? Was genau macht es?

  • HotSpot ist eine Implementierung des Teils einer JVM, der Java-Bytecode interpretiert und / oder kompiliert, der auf der Host-CPU ausgeführt werden soll.
  • OpenJ9 ist eine Alternative.

OpenJ9 ist allgemein für einen viel schnelleren Start und eine viel geringere Speichernutzung bekannt, während HotSpot für Apps mit langer Laufzeit insgesamt effizienter ausgeführt werden kann. Beide sind angesehen, abgenutzt und mit OpenJDK-Distributionen erhältlich.

OpenJDK ist ein Open-Source-Projekt, das die Java-Spezifikationen , JSRs und JEPs , die die Java-Plattform definieren, vollständig implementiert. Jede mir heute bekannte JVM-Implementierung basiert vollständig oder größtenteils auf der OpenJDK- Codebasis und verwendet entweder die HotSpot- oder die OpenJ9-Technologie.

Neben der JVM bietet OpenJDK auch eine Implementierung im Quellcode für alle Klassen, die von den Java SE-Spezifikationen benötigt werden, wie z. B. java.lang , java.util , java.time und andere Pakete.

Was ist der Unterschied zwischen OpenJDK und HotSpot?

Der Quellcode für HotSpot wird im Rahmen des OpenJDK- Projekts gespeichert , verwaltet und weiterentwickelt . Die Alternative OpenJ9 wird in der Eclipse Foundation untergebracht, gewartet und weiterentwickelt , während HotSpot in einigen Distributionen von OpenJDK ersetzt wird.

Einige Distributionen der Java-Technologie werden mit HotSpot ausgeliefert. Einige Distributionen ersetzen den Teil der OpenJDK- Codebasis, der HotSpot ist, durch die Alternative OpenJ9 .

Hier ist eine Flussdiagrammgrafik, die Ihnen bei der Auswahl eines Anbieters für eine Distribution der Java-Plattform hilft.

Flussdiagramm, das Sie bei der Auswahl eines Anbieters für eine Java 11-Implementierung unterstützt

Motivationen bei der Auswahl eines Anbieters für Java

Basil Bourque
quelle
8

HotSpot ist, wie oben erwähnt, eine plattformübergreifende Implementierung des Java Virtual Machine (JVM) -Konzepts und wird mit dem OpenJDK (Java Developer Kit) unter der GNU General Public License vertrieben. HotSpot ist hauptsächlich in C ++ geschrieben und wurde ursprünglich unter Sun Microsystems entwickelt. Es wird derzeit im Rahmen des OpenJDK-Projekts unter www.java.net entwickelt. Die HotSpot-JVM war als Add-On für Java 1.2 verfügbar und wurde später als Standard-Sun-JVM in Java 1.3 verwendet. Die JVM befindet sich derzeit in Version 7, Build b147, und hat eine aktive Entwicklergemeinschaft dahinter.

Weitere Informationen finden Sie unter: https://www.java.net/

Viel Spaß beim Codieren!


quelle
7

JVM ist eine abstrakte Maschine (Spezifikationen). HotSpot, OpenJDK und JRockit sowie Implementierungen von JVM.

Kostenlose und Open Source-Implementierungen

  • HotSpot , die primäre Referenz-Java-VM-Implementierung

  • OpenJDK - Open Java Development Kit ist eine kostenlose Open Source-Implementierung, die unter der GNU General Public License (GNU GPL) mit einer Verknüpfungsausnahme lizenziert ist.

Proprietäre Implementierungen

  • JRockit (ursprünglich von Appeal Virtual Machines) wurde von Oracle für Linux, Windows und Solaris erworben

Für weitere Implementierungen erklärt der
Link die Unterschiede zwischen HotSpot und JRocket

Premraj
quelle
-25

HotSpot ist eine fortgeschrittene Form des C ++ - Hackings. Um es zu verwenden, müssen Sie dagegen bauen, um selbst die einfachsten Dinge zu kompilieren. Es sei denn, Sie optimieren Compiler und oder schreiben sie von Grund auf neu. HotSpot ist im Grunde eine Möglichkeit, Quellcode in C ++ - Code zu konvertieren und ihn dann in nativen Code zu kompilieren, daher der Begriff jit kompiliert.

Dawg
quelle