HotSpot (virtuelle Maschine) - HotSpot (virtual machine)

Virtuelle Java HotSpot-Maschine
Originalautor(en) Sonne Mikrosysteme
Entwickler Oracle Corporation
Erstveröffentlichung 27. April 1999 ; Vor 22 Jahren ( 1999-04-27 )
Stabile Version
23.25-b01 / 1. Januar 2016 ; vor 5 Jahren ( 2016-01-01 )
Geschrieben in C++ , Assembly
Betriebssystem Plattformübergreifend
Typ Java virtuelle Maschine
Lizenz Proprietär (frühe Versionen), GNU General Public License (aktuell)
Webseite openjdk .java .net /groups /hotspot

HotSpot , veröffentlicht als Java HotSpot Performance Engine , ist eine virtuelle Java-Maschine für Desktop- und Server- Computer, die von der Oracle Corporation gewartet und vertrieben wird . Es bietet eine verbesserte Leistung durch Methoden wie Just-in-Time-Kompilierung und adaptive Optimierung .

Geschichte

Die Java HotSpot Performance Engine wurde am 27. April 1999 veröffentlicht und basiert auf Technologien aus einer Implementierung der Programmiersprache Smalltalk namens Strongtalk , die ursprünglich von Longview Technologies entwickelt wurde, die als Animorphic gehandelt wurde. Die virtuelle Maschine von Longview basierte auf der virtuellen Maschine Self , wobei ein Interpreter den schnellen und dummen ersten Compiler ersetzte. Als Sun das Self-Projekt abbrach, verließen zwei Schlüsselpersonen, Urs Hölzle und Lars Bak, Sun, um Longview zu gründen. 1997 kaufte Sun Microsystems Animorphic.

Kurz nach der Übernahme von Animorphic beschloss Sun, einen neuen Just-in-Time-Compiler (JIT) für die Java Virtual Machine zu schreiben . Dieser neue Compiler würde aus dem Verhalten der Software den Namen HotSpot hervorbringen : Da er Java-Bytecode ausführt , analysiert HotSpot wie bei der Self VM ständig die Leistung des Programms auf häufig oder wiederholt ausgeführte Hotspots . Diese werden dann gezielt optimiert , was zu einer hochleistungsfähigen Ausführung mit minimalem Overhead für weniger leistungskritischen Code führt. In einem Bericht übertraf die JVM in einigen Benchmarks einige C++- oder C- Codes.

Ursprünglich als Add-On für Java 1.2 verfügbar, wurde HotSpot die Standard-JVM von Sun in Java 1.3.

Merkmale

JRE (ursprünglich von Sun, jetzt von Oracle) bietet zwei virtuelle Maschinen, eine namens Client und die andere Server . Die Client-Version ist auf schnelles Laden abgestimmt. Es bedient sich der Interpretation. Die Server-Version wird langsamer geladen, wodurch mehr Aufwand in die Erstellung hochoptimierter JIT-Kompilierungen investiert wird , um eine höhere Leistung zu erzielen. Beide VMs kompilieren nur häufig ausgeführte Methoden und verwenden einen konfigurierbaren Schwellenwert für die Aufrufanzahl, um zu entscheiden, welche Methoden kompiliert werden sollen.

Tiered Compiling, eine in Java 7 eingeführte Option, verwendet sowohl den Client- als auch den Server-Compiler zusammen, um eine schnellere Startzeit als der Server-Compiler, aber eine ähnliche oder bessere Spitzenleistung zu bieten. Ab Java 8 ist die gestufte Kompilierung die Standardeinstellung für die Server-VM.

HotSpot ist in C++ geschrieben . Im Jahr 2007 schätzte Sun, dass es ungefähr 250.000 Zeilen Quellcode umfasste. Hotspot bietet:

JVM-Flags

HotSpot unterstützt viele Befehlszeilenargumente für Optionen der virtuellen Maschinenausführung. Einige sind Standard und müssen in jeder konformen Java Virtual Machine gefunden werden ; andere sind spezifisch für HotSpot und werden möglicherweise nicht in anderen JVMs gefunden (Optionen, die mit -X oder -XX beginnen, sind nicht standardmäßig).

Lizenz

Am 13. November 2006 wurden die HotSpot JVM und das Java Development Kit (JDK) unter der GNU General Public License (GPL) Version 2 lizenziert. Dies ist der Code, der Bestandteil von Java 7 wurde .

Unterstützte Plattformen

Verwaltet von Oracle

Wie das gesamte Java Development Kit (JDK) wird HotSpot von der Oracle Corporation unter Windows , Linux , macOS und Solaris unterstützt . Unterstützte Befehlssatzarchitekturen (ISAs) sind IA-32 , x86-64 , ARMv7 VFP, ARMv8 und SPARC (nur Solaris).

Häfen durch Dritte

Ports sind auch von Drittanbietern für verschiedene andere Unix- Betriebssysteme verfügbar . Mehrere verschiedene Hardwarearchitekturen werden unterstützt, einschließlich x86, PowerPC und SPARC (nur Solaris).

Die Portierung von HotSpot ist schwierig, da der Code, obwohl er hauptsächlich in C++ geschrieben ist , viel Assemblersprache enthält . Um dies zu beheben, hat das IcedTea- Projekt eine generische Portierung des HotSpot- Interpreters namens Zero-Assembler-Hotspot (oder Zero ) entwickelt, die fast keinen Assemblercode enthält. Dieser Port dient der einfachen Anpassung der Interpreter-Komponente von HotSpot an jede Linux- Prozessorarchitektur. Der Code von Zero-Assembler Hotspot wird seit Version 1.6 für alle Nicht- x86- Architektur-Ports von HotSpot ( PowerPC , Itanium ( IA-64 ), S390 und ARM ) verwendet.

Siehe auch

Verweise

Externe Links