Was ist die Java Virtual Machine und wie funktioniert sie?

Was ist die Java Virtual Machine und wie funktioniert sie? / Technologie erklärt

Die Java Virtual Machine (JVM) ist ein echter Namenstropper, wenn Sie in Java programmieren. Im Gegensatz zu dem Namen kann die Java Virtual Machine auch in Verbindung mit anderen Programmiersprachen angetroffen werden.

Im Allgemeinen ist es nicht erforderlich, zu wissen, was Java Virtual Machine ist oder was es macht, um in Java programmieren zu können. Wenn Sie sich andererseits mit dem Innenleben einer Maschine vertraut machen, können Sie Ihr Verständnis und Ihre Einsicht verbessern.

Dieser Artikel behandelt die Idee der Java Virtual Machine, was sie für Sie tut, und einige der wichtigsten Vor- und Nachteile. Obwohl ich versucht habe, es einfach zu halten, und es gibt definitiv fortgeschrittenere Literatur zu diesem Thema, wird ein rudimentäres Verständnis von Java und Programmierung erwartet.

Hochsprachen

Die Semantik einer Programmiersprache ist so angelegt, dass sie unserer natürlichen Sprache nahe kommt und dabei präzise und einfach für eine Maschine zu interpretieren ist. Wie Sie wahrscheinlich wissen, unterscheidet sich die Programmiersprache vollständig vom Maschinencode, den Anweisungen, die ein Computer zum Erstellen und Ausführen eines Programms verwendet. Das nennen wir Hochsprachen; eine oder mehrere Abstraktionsebenen aus dem Maschinencode.

Bevor es ausgeführt werden kann, muss Code auf hoher Ebene zuerst interpretiert werden. Viele Programmierschnittstellen werden vorab kompiliert (AOT-Zusammenstellung) für eine bestimmte Plattform. Dies macht das Programm zur Laufzeit effizienter, aber mit verschiedenen Plattformen weit weniger kompatibel. Java dagegen arbeitet mit einer Zwischensprache namens Java-Bytecode und das Java virtuelle Maschine.

JVM & Java-Bytecode

Wenn Ihr Java-Projekt erstellt wird, wird der Quellcode (in * enthalten) übersetzt..Java Quelldateien) in Java-Bytecode (meistens in * .class-Dateien enthalten). Dies bringt Ihren Code auf hoher Ebene einen Schritt näher an den Maschinencode, aber noch nicht ganz dort. Dieser Bytecode ist eine Sammlung kompakter Anweisungen. einfacher für eine Maschine zu interpretieren, aber weniger lesbar.

Wenn Sie eine Java-Anwendung auf Ihrem Computer, Mobiltelefon oder einer anderen Java-fähigen Plattform ausführen, übergeben Sie diesen Java-Bytecode im Wesentlichen an die Java Virtual Machine. Der Interpreter in der Java Virtual Machine beginnt normalerweise zur Laufzeit den gesamten Bytecode zu kompilieren und folgt dabei den Prinzipien des sogenannten Just-in-Time-Kompilierung. Dies führt zu einer typischen, wenn auch oft leichten Verzögerung beim Öffnen einer Java-Anwendung, verbessert jedoch im Allgemeinen die Programmleistung im Vergleich zu interpretierte Zusammenstellung.

Der Hauptvorteil dieses Systems ist die erhöhte Kompatibilität. Da Ihre Anwendungen auf einer virtuellen Maschine und nicht direkt auf Ihrer Hardware ausgeführt werden, kann der Entwickler ihre Anwendung einmal programmieren und erstellen, die dann auf jeder Einheit mit einer Implementierung der Java Virtual Machine ausgeführt werden kann. Dieses Prinzip hat zu dem Java-Slogan geführt: “Einmal schreiben, überall laufen.”

Pro: Kompatibilität und erhöhte Sicherheit

Neben der Code-Kompatibilität bietet die Java Virtual Machine weitere Vorteile. Eine der wichtigsten ist die relative Sicherheit von Java-Programmen durch die Java Virtual Machine. Sicherheit, was bedeutet, dass ein Programm, das auf einer virtuellen Maschine ausgeführt wird, weit weniger wahrscheinlich das Betriebssystem des Benutzers stört oder dass Datendateien beschädigt werden, wenn Fehler auftreten.

Con: Unterschiedliche JVM-Implementierungen und Debugging

Einer der Hauptkritikpunkte bezüglich der Codekompatibilität und der Java Virtual Machine ist auf die vielen verschiedenen Implementierungen der letzteren zurückzuführen. Sie sehen, die Java Virtual Machine ist keine Software. Oracle, die Eigentümer von Java, verfügen über die Implementierung der Java Virtual Machine. Andere Benutzer können dies jedoch tun, wenn verschiedene praktische und vertragliche Ansprüche erfüllt sind.

Diese unterschiedlichen Implementierungen bedeuten, dass Ihr Code auf einer Java Virtual Machine problemlos ausgeführt werden kann, bei einem anderen jedoch abstürzen und brennen kann. In der Praxis können Sie Ihren Code zwar einmal schreiben und überall ausführen, komplexer Code muss jedoch in verschiedenen Java Virtual Machine-Implementierungen manchmal noch debuggt werden, um einen korrekten Betrieb zu gewährleisten.

Haben Sie Erfahrung mit der Java Virtual Machine? Wenn ja, gibt es etwas, was ich hier verpasst habe, das erwähnt werden sollte?

Bildnachweis: Michaelaw, Dcoetzee

Erfahren Sie mehr über: Java, Programmierung.