Was ist die JVM? Erklären Sie die JVM. Architektur
⚡ Intelligente Zusammenfassung
Java Die virtuelle Maschine (JVM) ist die Engine, die eine Laufzeitumgebung zum Antreiben bereitstellt. Java Code, der plattformunabhängigen Bytecode in native Maschinensprache umwandelt. Er ist Teil von Java Laufzeitumgebung und ermöglicht JavaDie Portabilität nach dem Prinzip „einmal schreiben, überall ausführen“.

Was ist JVM in Java?
Java Virtuelle Maschine (JVM) ist eine Engine, die eine Laufzeitumgebung bereitstellt, um die Java Code oder Anwendungen. Es konvertiert Java Bytecode in Maschinensprache. JVM ist ein Teil der Java Laufzeitumgebung (JRE). In anderen Programmiersprachen erzeugt der Compiler Maschinencode für ein bestimmtes System. Java Der Compiler erzeugt Code für eine virtuelle Maschine, die als die virtuelle Maschine bezeichnet wird. Java Virtuelle Maschine.
Wie funktioniert JVM?
Erstens Java Der Code wird in Bytecode kompiliert. Dieser Bytecode wird auf verschiedenen Rechnern interpretiert. Zwischen dem Hostsystem und dem Java Quellcode, Bytecode ist eine Zwischensprache. JVM in Java ist für die Speicherplatzzuweisung zuständig.
Arbeiten von Java Virtuelle Maschine (JVM)
ArchiStruktur der JVM (Java Virtuelle Maschine)
Nun wollen wir die Architektur der JVM verstehen. JVM-Architektur in Java enthält einen Klassenlader, einen Speicherbereich, eine Ausführungs-Engine und mehr.
Java Virtuelle Maschine Architektur
1) Klassenlader
Der Klassenlader ist ein Subsystem zum Laden von Klassendateien. Er erfüllt drei Hauptfunktionen: Laden, Verknüpfen und Initialisieren.
2) Methodenbereich
Der JVM-Methodenbereich speichert Klassenstrukturen wie Metadaten, den Konstantenpool zur Laufzeit und den Code für Methoden.
3) Haufen
Um so Objekte, ihre zugehörigen Instanzvariablen und Arrays werden im Heap gespeichert. Dieser Speicher ist gemeinsam und wird von mehreren Threads gemeinsam genutzt.
4) JVM-Sprachstacks
Java Sprachstacks speichern lokale Variablen und deren Teilergebnisse. Jeder Thread verfügt über einen eigenen JVM-Stack, der gleichzeitig mit dem Thread erstellt wird. Bei jedem Methodenaufruf wird ein neuer Frame erzeugt und nach Abschluss des Methodenaufrufs wieder gelöscht.
5) PC-Register
Das PC-Register speichert die Adresse des Java Die aktuell ausgeführte virtuelle Maschinenanweisung. JavaJeder Thread hat sein eigenes separates PC-Register.
6) Native Methodenstapel
Native Methodenstapel enthalten die Anweisungen des nativen Codes, der von der nativen Bibliothek abhängt. Er ist in einer anderen Sprache geschrieben anstatt Java.
7) Ausführungs-Engine
Die Ausführungs-Engine liest den Bytecode und führt ihn stückweise aus. Sie verwendet einen Interpreter und einen Just-In-Time-Compiler (JIT), um den Bytecode in nativen Maschinencode zu übersetzen und ihn auszuführen.
8) Native Methodenschnittstelle
Das Native Method Interface ist ein Programmierframework. Es ermöglicht Java Code, der in einer JVM ausgeführt wird, um native Anwendungen und Bibliotheken aufzurufen und von diesen aufgerufen zu werden.
9) Native Methodenbibliotheken
Native Libraries ist eine Sammlung der nativen Bibliotheken (C, C++), die von der Ausführungs-Engine benötigt werden.
Software Code Kompilierungs- und Ausführungsprozess
Um ein Softwareprogramm zu schreiben und auszuführen, benötigen Sie Folgendes:
- 1) Herausgeber – Um Ihr Programm einzugeben; hierfür kann ein Textverarbeitungsprogramm verwendet werden.
- 2) Compiler – Um Ihr Programm in einer Hochsprache in nativen Maschinencode umzuwandeln.
- 3) Linker – Um die verschiedenen Programmdateiverweise in Ihrem Hauptprogramm zusammenzuführen.
- 4) Lader – Um die Dateien von Ihrem sekundären Speichermedium wie Festplatte, USB-Stick oder CD in den Arbeitsspeicher (RAM) zur Ausführung zu laden. Das Laden erfolgt automatisch beim Ausführen Ihres Codes.
- 5) Ausführung – Die eigentliche Ausführung des Codes, die von Ihrem Betriebssystem und Prozessor übernommen wird.
Vor diesem Hintergrund sollten Sie sich das folgende Video ansehen und die interne Funktionsweise und Architektur der JVM kennenlernen (Java Virtuelle Maschine).
Klicken Sie auf werden auf dieser Seite erläutert wenn das Video nicht zugänglich ist
C-Code-Kompilierungs- und Ausführungsprozess
Um das zu verstehen Java Kompilierungsprozess, werfen wir zunächst einen kurzen Blick auf den Kompilierungs- und Linkprozess in C.
Angenommen, Sie haben in der Hauptfunktion zwei Funktionen, f1 und f2, aufgerufen. Die Hauptfunktion ist in der Datei a1.c gespeichert.
Die Funktion f1 ist in der Datei a2.c gespeichert.
Die Funktion f2 ist in der Datei a3.c gespeichert.
Alle diese Dateien, also a1.c, a2.c und a3.c, werden dem Compiler zugeführt, dessen Ausgabe die entsprechenden Objektdateien sind, die den Maschinencode darstellen.
Im nächsten Schritt werden all diese Objektdateien mithilfe eines Linkers zu einer einzigen .exe-Datei zusammengeführt. Der Linker verknüpft alle diese Dateien und erzeugt die .exe-Datei.
Während der Programmausführung lädt ein Ladeprogramm die Datei a.exe in den entsprechenden Ordner. RAM zur Ausführung.
Java Code-Kompilierung und Ausführung in Java VM
Schauen wir uns nun den Prozess für an JavaIn Ihrer Hauptfunktion haben Sie zwei Methoden, f1 und f2.
- Die Hauptmethode ist in der Datei a1.java gespeichert.
- f1 wird in einer Datei als a2.java gespeichert
- f2 wird in einer Datei als a3.java gespeichert
Der Compiler kompiliert die drei Dateien und erzeugt drei entsprechende .class-Dateien, die aus BYTE-Code bestehen. Im Gegensatz zu C erfolgt keine Verknüpfung.
Das Java VM, Gold Java Die virtuelle Maschine befindet sich im Arbeitsspeicher (RAM). Während der Ausführung werden die Klassendateien mithilfe des Klassenladers in den RAM geladen. Der Bytecode wird auf Sicherheitslücken überprüft.
Als Nächstes wandelt die Ausführungs-Engine den Bytecode in nativen Maschinencode um. Dies nennt man Just-in-Time-Kompilierung. Das ist einer der Hauptgründe, warum Java ist vergleichsweise langsam.
Anmerkungen: JIT, oder Just-in-Time-Compiler, ist der Teil des Java Virtuelle Maschine (JVM). Sie interpretiert gleichzeitig Teile des Bytecodes, die eine ähnliche Funktionalität aufweisen.
Warum ist Java sowohl interpretierte als auch kompilierte Sprache?
Programmiersprachen werden wie folgt klassifiziert:
- Höhere Sprachkenntnisse, z. B. C++, Java
- Mittelstufensprachen, z. B. C
- Niedrigsprachliche Sprache, z.B. Assembly
- Schließlich die niedrigste Ebene als Maschinensprache
A Compiler ist ein Programm, das ein Programm von einer Sprachebene in eine andere konvertiert. Zum Beispiel die Konvertierung eines C++ Programm in Maschinencode umwandeln. Java Der Compiler wandelt Hochsprachencode um Java Code in Bytecode (was ebenfalls eine Art Maschinencode ist).
An Dolmetscher ist ein Programm, das ein Programm einer bestimmten Ebene in eine andere Programmiersprache umwandelt. das selbe LevelZum Beispiel die Umwandlung eines Java Programm in C++.
In JavaDer Just-In-Time-Codegenerator wandelt den Bytecode in nativen Maschinencode um, der sich auf derselben Programmierebene befindet. Daher Java ist sowohl eine kompilierte als auch eine interpretierte Sprache.
Warum ist Java langsam?
Die beiden Hauptgründe für die Langsamkeit der Java sind:
- Dynamische Verknüpfung: Im Gegensatz zu C erfolgt die Verknüpfung zur Laufzeit, jedes Mal, wenn das Programm ausgeführt wird Java.
- Laufzeitinterpreter: Die Konvertierung des Bytecodes in nativen Maschinencode erfolgt zur Laufzeit in Javawas die Geschwindigkeit weiter verringert.
Die neuesten Versionen von Java haben diese Leistungsengpässe weitgehend behoben.











