Learn · concepts
Was ist die JVM? Die Java Virtual Machine erklärt
Die JVM führt Java-Bytecode auf jedem Betriebssystem aus. Deshalb läuft Minecraft Java Edition und jeder Fabric-Mod identisch unter Windows, macOS und Linux.
Was ist die JVM?
Die JVM, oder Java Virtual Machine, ist das Programm, das Java-Code ausführt. Sie schreiben Java, ein Compiler wandelt es in Bytecode um, und die JVM führt diesen Bytecode auf jedem Betriebssystem aus. Deshalb verhalten sich Minecraft Java Edition und die dafür erstellten Mods auf Windows, macOS und Linux ohne Neukompilierung gleich. Die JVM ist die Abstraktionsschicht, die „write once, run anywhere“ zu einer Realität macht, anstatt zu einem Marketing-Slogan.
Was die JVM tatsächlich tut
Die JVM führt Bytecode aus, nicht Quellcode. Wenn Sie ein Java-Programm kompilieren, erhalten Sie kein Windows- oder Mac-Ausführbares. Sie erhalten stattdessen Class-Dateien, die mit Bytecode gefüllt sind – einem kompakten Befehlssatz, den die JVM versteht. Die JVM liest diese Befehle und führt sie auf Ihrem Rechner aus.
Genau das ist der Sinn dieser zusätzlichen Ebene. Der gleiche Bytecode läuft überall, wo eine JVM vorhanden ist, daher ist "write once, run anywhere" die kurze Version dafür, warum sich Java so weit verbreitet hat. Die JVM ist der Teil, der das Versprechen wahr werden lässt. Eine JAR-Datei von Fabric-Mods funktioniert gleich, egal ob der Spieler Windows, macOS oder Linux verwendet, weil sie alle denselben Bytecode über dieselbe JVM ausführen, und die JVM kümmert sich um die Hardwareunterschiede
JVM, JRE und JDK
Diese drei Begriffe werden oft verwechselt, daher die Aufschlüsselung.
| Begriff | Was es ist | Wann man es benötigt |
|---|---|---|
| JVM | Die Engine, die Bytecode ausführt | Immer, um jedes Java-Programm auszuführen |
| JRE | Die JVM plus die Standardbibliotheken | Um Java-Programme auszuführen |
| JDK | Die JRE plus Compiler und Entwicklungswerkzeuge | Um Java-Programme zu erstellen |
Ein Spieler benötigt nur eine Laufzeitumgebung, um das Spiel zu starten. Ein Entwickler, der einen Mod erstellt, benötigt das vollständige JDK, um Java zuerst in Bytecode zu kompilieren
Wie die JVM Ihren Code schnell ausführt
Die JVM beginnt damit, Bytecode Befehl für Befehl zu interpretieren. Während der Ausführung beobachtet sie, welche Methoden am häufigsten aufgerufen werden. Diese heißen Pfade werden an den JIT-Compiler übergeben, der sie zur Laufzeit in nativen Maschinencode umwandelt. Nach dem Aufwärmen läuft der meistgenutzte Code mit nahezu nativer Geschwindigkeit. Deshalb fühlt sich Minecraft die ersten Sekunden etwas träge an und stabilisiert sich dann: Der JIT-Compiler arbeitet im Hintergrund.
Die JVM verwaltet auch Ihren Speicher. Ein Garbage Collector gibt Objekte frei, die Sie nicht mehr verwenden, sodass Sie keinen Speicher manuell freigeben müssen, wie Sie es in C tun würden. Dies ist einer der Gründe, warum Java einfach zu schreiben ist und eine beliebte erste Sprache für Modder darstellt. Die Speicherverwaltung ist integriert.
Warum das für Minecraft wichtig ist
Minecraft Java Edition läuft auf der JVM, ebenso wie jeder Utility-Client und jedes Mod, das darauf abzielt. Der eigene Code eines Clients kann Java, Kotlin oder eine andere JVM-Sprache sein, da sie alle in denselben Bytecode kompiliert werden, den die JVM ausführt. Ein Fabric-Mod wird als Jar-Datei mit Bytecode ausgeliefert, der Loader verbindet es beim Start mit dem Spiel, und die JVM führt das Ganze als einen Prozess aus.
Das ist auch der Grund, warum Launcher es Ihnen ermöglichen, Dinge wie die Heap-Größe und die Java-Version anzupassen. Sie konfigurieren die JVM, die das Spiel hostet, nicht das Spiel selbst. Wenn Sie der JVM mehr Speicher zuweisen, hat Minecraft mehr Platz zum Arbeiten. Die Wahl einer neueren Java-Version kann zu Geschwindigkeitsverbesserungen führen, da neuere JVMs oft heiße Code-Pfade besser optimieren.
FAQ
Nein. Java ist die Sprache; die JVM ist die Laufzeitumgebung, die die kompilierte Ausgabe ausführt. Andere Sprachen wie Kotlin kompilieren ebenfalls zu Bytecode und laufen auf derselben JVM.
Sie benötigen eine Java-Laufzeitumgebung, die die JVM enthält. Viele Launcher bündeln eine solche für Sie, sodass Sie sie möglicherweise bereits besitzen, ohne etwas separat installieren zu müssen.
Die JVM führt Bytecode aus. Das JDK ist das vollständige Entwickler-Kit, einschließlich des Compilers und der Werkzeuge, das bzw. die Sie zunächst verwenden, um Java-Programme zu erstellen.
Es interpretiert zunächst Bytecode, dann konvertiert der JIT-Compiler den am häufigsten verwendeten Code während der Programmlaufzeit in nativen Maschinencode. Diese Aufwärmphase ist der Startkostenanteil; die Beschleunigung erfolgt danach.