Was ist die Java Virtual Machine und wie funktioniert sie?

Obwohl es nicht unbedingt notwendig ist zu wissen, dass es funktioniert, um in Java zu programmieren, ist es immer noch gut zu wissen, weil es Ihnen helfen kann, ein besserer Programmierer zu werden.

Obwohl es nicht unbedingt notwendig ist zu wissen, dass es funktioniert, um in Java zu programmieren, ist es immer noch gut zu wissen, weil es Ihnen helfen kann, ein besserer Programmierer zu werden.
Werbung

Die Java Virtual Machine (JVM) ist ein echter Name Dropper, wenn Sie in Java programmieren. Im Gegensatz zu dem, was der Name andeutet, kann die Java Virtual Machine auch in Verbindung mit anderen Programmiersprachen auftreten.

Im Allgemeinen ist es nicht notwendig zu wissen, was die Java Virtual Machine ist oder was sie tut, um in Java programmieren zu können. Auf der anderen Seite hilft es, sich mit dem inneren Funktionieren einer Maschine vertraut zu machen, um Ihr Verständnis und Ihre allgemeine Einsicht zu 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 mehr Literatur zu diesem Thema, wird ein rudimentäres Verständnis von Java und Programmierung erwartet.

Hochsprachen

Die Semantik einer Programmiersprache ist so konzipiert, dass sie unserer natürlichen Sprache nahe kommt, während sie für eine Maschine prägnant und leicht zu interpretieren ist. Wie Sie wahrscheinlich wissen, unterscheidet sich die Programmiersprache vollständig von dem Maschinencode, dem Satz von Anweisungen, die ein Computer zum Erstellen und Ausführen eines Programms verwendet. Dies nennen wir Hochsprachen ; eine oder mehrere Abstraktionsebenen vom Maschinencode.

Bevor es ausgeführt werden kann, muss High-Level-Code zuerst interpretiert werden. Viele Programmierschnittstellen kompilieren im Voraus ( AOT-Kompilierung ) für eine bestimmte Plattform. Dies macht das Programm zur Laufzeit effizienter, aber weniger kompatibel mit verschiedenen Plattformen. Java hingegen arbeitet mit einer Zwischensprache namens Java Bytecode und der Java Virtual Machine .

JVM & Java Bytecode

Wenn Ihr Java-Projekt erstellt, übersetzt es den Quellcode (enthalten in * .java- Quelldateien) in Java-Bytecode (meistens in * .class-Dateien enthalten). Dies bringt Ihren High-Level-Code einen Schritt näher zum Maschinencode, aber noch nicht ganz da. Dieser Bytecode ist eine Sammlung von kompakten 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 in der Regel mit der Kompilierung des gesamten Bytecodes zur Laufzeit nach den Prinzipien der sogenannten Just-in-Time-Kompilierung . Dies macht zwar beim Öffnen einer Java-Anwendung die typische, wenn auch oft leichte Verzögerung aus, erhöht aber im Allgemeinen die Programmleistung im Vergleich zur interpretierten Kompilierung .

Java virtuelle Maschine

Der Hauptvorteil dieses Systems ist die erhöhte Kompatibilität. Da Ihre Anwendungen auf einer virtuellen Maschine statt direkt auf Ihrer Hardware laufen, kann der Entwickler seine Anwendung einmal programmieren und erstellen, die dann auf jedem Gerät mit einer Implementierung der Java Virtual Machine ausgeführt werden kann. Dieses Prinzip hat den Java-Slogan geboren: " Schreib einmal, laufe überall hin ."

Pro: Kompatibilität und erhöhte Sicherheit

Neben der Code-Kompatibilität bietet die Java Virtual Machine weitere Vorteile. Einer der wichtigsten davon ist die relative Sicherheit von Java-Programmen als Folge der Java Virtual Machine. Sicherheit bedeutet, dass ein Programm, das auf einer virtuellen Maschine ausgeführt wird, das Betriebssystem des Benutzers weniger beeinträchtigt oder beschädigte Datendateien beschädigt werden, wenn Fehler auftreten.

Con: Verschiedene JVM-Implementierungen und Debugging

Einer der Hauptkritikpunkte gegen die Code-Kompatibilität und die 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 Besitzer von Java, haben ihre Implementierung der Java Virtual Machine, aber andere Leute können ihre machen, wenn sie verschiedene praktische und vertragliche Ansprüche erfüllen.

Diese verschiedenen Implementierungen bedeuten, dass Ihr Code auf einer Java Virtual Machine reibungslos ausgeführt werden kann, aber auf einem anderen Computer abstürzt und abbrennt. Obwohl Sie Ihren Code in der Praxis einmal schreiben und überall ausführen können, muss komplexerer Code in verschiedenen Java Virtual Machine-Implementierungen manchmal noch debuggt werden, um den korrekten Betrieb zu gewährleisten.

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

Bildquelle: Michael, Dcoetzee

In this article