Was ist JVM? Java Virtuelle Maschine Architektur
Was ist JVM in Java?
Java Virtuelle Maschine (JVM) ist eine Engine, die eine Laufzeitumgebung bereitstellt, um den Java Code oder Anwendungen. Es konvertiert Java Bytecode in Maschinensprache. JVM ist ein Teil von Java Runtime Environment (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 Java Virtuelle Maschine.
Wie funktioniert JVM?
Erstens Java Code wird in Bytecode kompiliert. Dieser Bytecode wird auf verschiedenen Maschinen interpretiert. Zwischen Hostsystem und Java Quelle, Bytecode ist eine Zwischensprache. JVM in Java ist für die Speicherplatzzuweisung zuständig.
In diesem JVM-Tutorial lernen Sie-
ArchiStruktur der JVM (Java Virtuelle Maschine)
Lassen Sie uns nun in diesem JVM-Tutorial das verstehen ArchiStruktur der JVM. JVM-Architektur in Java enthält Klassenlader, Speicherbereich, Ausführungs-Engine usw.
1) Klassenlader
Der Klassenlader ist ein Subsystem zum Laden von Klassendateien. Er führt drei Hauptfunktionen aus: Laden, Verknüpfen und Initialisieren.
2) Methodenbereich
Der JVM-Methodenbereich speichert Klassenstrukturen wie Metadaten, den konstanten Laufzeitpool 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-Sprachstapel
Java Sprachstapel speichern lokale Variablen und ihre Teilergebnisse. Jeder Thread hat seinen eigenen JVM-Stapel, der gleichzeitig mit dem Thread erstellt wird. Immer wenn eine Methode aufgerufen wird, wird ein neuer Frame erstellt und gelöscht, wenn der Methodenaufruf abgeschlossen ist.
5) PC-Register
PC-Register speichern die Adresse des Java virtuelle Maschine Anweisung, die gerade ausgeführt wird. In Java, jeder Thread hat sein eigenes 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 als Java.
7) Ausführungs-Engine
Dabei handelt es sich um eine Art Software zum Testen von Hardware, Software oder kompletten Systemen. Die Testausführungs-Engine übermittelt niemals Informationen über das getestete Produkt.
8) Native Method-Schnittstelle
Das Native Method Interface ist ein Programmierframework. Es ermöglicht Java Code, der in einer JVM ausgeführt wird, um von Bibliotheken und nativen Anwendungen aufgerufen zu werden.
9) Native Methodenbibliotheken
Native Libraries ist eine Sammlung der Native Libraries(C, C++), die von der Ausführungs-Engine benötigt werden.
Prozess der Kompilierung und Ausführung von Softwarecode
Um ein Softwareprogramm zu schreiben und auszuführen, benötigen Sie Folgendes
1) Herausgeber – Um Ihr Programm einzugeben, können Sie hierfür einen Notizblock verwenden
2) Compiler – Um Ihr Hochsprachenprogramm in nativen Maschinencode umzuwandeln
3) Linker – Um verschiedene Programmdateien in Ihrem Hauptprogramm miteinander zu verknüpfen.
4) Lader – Zum Laden der Dateien von Ihrem sekundären Speichergerät wie Festplatte, Flash-Laufwerk oder CD in den RAM zur Ausführung. Das Laden erfolgt automatisch, wenn Sie Ihren Code ausführen.
5) Ausführung – Tatsächliche Ausführung des Codes, der von Ihrem Betriebssystem und Prozessor verarbeitet wird.
Vor diesem Hintergrund können Sie sich im folgenden Video die interne Funktionsweise und Architektur der JVM ansehen (Java Virtuelle Maschine).
Klicken Sie HIER wenn das Video nicht zugänglich ist
C-Code-Kompilierungs- und Ausführungsprozess
Um das zu verstehen Java Kompilierungsprozess in Java. Werfen wir zunächst einen kurzen Blick auf den Kompilierungs- und Verknüpfungsprozess in C.
Angenommen, Sie haben hauptsächlich zwei Funktionen aufgerufen, f1 und f2. Die Hauptfunktion ist in der Datei a1.c gespeichert.
Die Funktion f1 wird in einer Datei a2.c gespeichert
Die Funktion f2 wird in einer Datei a3.c gespeichert
Alle diese Dateien, also a1.c, a2.c und a3.c, werden dem Compiler zugeführt. Dessen Ausgabe sind die entsprechenden Objektdateien, also der Maschinencode.
Der nächste Schritt besteht darin, alle diese Objektdateien mithilfe eines Linkers in eine einzige .exe-Datei zu integrieren. Der Linker fügt alle diese Dateien zusammen und erstellt die .exe-Datei.
Während des Programmlaufs lädt ein Ladeprogramm eine.exe in das RAM für die Ausführung.
Java Code-Kompilierung und Ausführung in Java VM
Schauen wir uns nun in diesem JVM-Tutorial den Prozess für JAVA an. Im Wesentlichen 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.
Die Java VM oder Java Die virtuelle Maschine befindet sich im RAM. Während der Ausführung werden die Klassendateien mithilfe des Klassenladers in den RAM geladen. Der BYTE-Code wird auf Sicherheitslücken überprüft.
Als nächstes konvertiert die Ausführungs-Engine den Bytecode in nativen Maschinencode. Dies ist Just-in-Time-Kompilierung. Dies ist einer der Hauptgründe, warum Java ist vergleichsweise langsam.
Anmerkungen: JIT oder Just-in-time-Compiler ist der Teil der Java Virtuelle Maschine (JVM). Sie interpretiert gleichzeitig einen Teil des Bytecodes, der ähnliche Funktionen hat.
Warum ist Java sowohl interpretierte als auch kompilierte Sprache?
Programmiersprachen sind klassifiziert als
- Höhere Sprachkenntnisse Bsp. C++, Java
- Mittelniveausprachen Bsp. C
- Low-Level-Sprache-Ex Assembly
- schließlich die unterste Ebene als Maschinensprache.
A Compiler ist ein Programm, das ein Programm von einer Sprachebene in eine andere konvertiert. Beispielkonvertierung von C++ Programm in Maschinencode. Der Java-Compiler konvertiert hochrangigen Java-Code in Bytecode (der ebenfalls eine Art Maschinencode ist).
An Dolmetscher ist ein Programm, das ein Programm auf einer Ebene in eine andere Programmiersprache auf der das selbe Level. Beispielkonvertierung von Java Programm in C++
In Java, der Just-In-Time-Code-Generator konvertiert den Bytecode in den nativen Maschinencode, der sich auf denselben Programmierebenen 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 Java was die Geschwindigkeit weiter verlangsamt
Die neueste Version von Java hat die Leistungsengpässe weitgehend behoben.
Zusammenfassung:
- Die vollständige Form von JVM lautet Java Virtuelle Maschine. JVM in Java ist der Motor, der die Java Code. Es konvertiert Java Bytecode in Maschinensprache.
- JVM-Architektur in Java enthält Klassenlader, Speicherbereich, Ausführungs-Engine usw.
- In JVM, Java Code wird in Bytecode kompiliert. Dieser Bytecode wird auf verschiedenen Maschinen interpretiert
- JIT steht für Just-in-time-Compiler. JIT ist der Teil des Java Virtuelle Maschine (JVM). Sie wird verwendet, um die Ausführungszeit zu beschleunigen
- Im Vergleich zu anderen Compiler-Maschinen, JVM in Java Die Ausführung kann langsam sein.