Erklärung der Java-Architektur und -Komponenten [2022]
Veröffentlicht: 2021-01-04Bevor Sie ein Java-Programmierer werden, müssen Sie jeden Aspekt dieser Sprache verstehen. Einer der wichtigsten Aspekte von Java ist die Java-Architektur. Ein weiteres technisches Thema in diesem Zusammenhang ist die Kenntnis der Komponenten von JVM. Daher werden wir diese beiden kritischen Themen in diesem Artikel behandeln.
Dieser Artikel setzt voraus, dass Sie ein allgemeines Verständnis der Java-Grundlagen haben. Auch wenn Sie mit den Grundlagen von Java nicht vertraut sind, können Sie im Kommentarbereich unten Ihre Fragen stellen. Lass uns anfangen:
Inhaltsverzeichnis
Java-Architektur erklärt
Java hat zwei Prozesse, Kompilierung und Interpretation. Der Java-Compiler wandelt den in Java vorhandenen Code in Byte-Codes um. Die Java Virtual Machine (JVM) wandelt die Bytecodes in Maschinencode um, den die Maschine direkt ausführt.
Wir können diesen Prozess in den folgenden Schritten beschreiben:
- Der Quellcode geht an den Java-Compiler
- Der Java-Compiler wandelt es in Bytecodes um
- Die Bytecodes gehen an die Java Virtual Machine
- Abschließend geht es an das OS (Betriebssystem)
Nachdem wir nun ein wenig mit der Funktionsweise der Java-Architektur vertraut sind, können wir uns die verschiedenen Komponenten ansehen:
JVM (Java Virtual Machine)
Die Schöpfer von Java wollten, dass es WORA (Write Once Run Anywhere) ist. Das bedeutet, dass Sie seine Anwendungen auf jeder Plattform ausführen können, aber das, was Java diese Qualität verleiht, ist JVM. Die JVM stellt die Umgebung zum Ausführen von Java-Code bereit. Es interpretiert den Bytecode und wandelt ihn in Maschinencode um, damit die Maschine das Java-Programm ausführen kann.

JVM-Ladevorgänge überprüfen und führen den Code aus. Es stellt auch die Laufzeitumgebung für den Code bereit, damit er auf dem Computer ausgeführt werden kann.
JRE (Java-Laufzeitumgebung)
Die JRE baut eine Laufzeitumgebung auf, in der Sie die Java-Programme ausführen können. Es nimmt den Java-Code und kombiniert diesen mit den erforderlichen Bibliotheken. Die JRE initiiert auch die JVM für ihre Ausführung. Die Java-Laufzeitumgebung verfügt über die erforderliche Software und Bibliotheken, damit Sie die Programme ausführen können.
JDK (Java-Entwicklungskit)
Sie würden das JDK verwenden, um Java-Apps und -Programme zu entwickeln. Es ist eine Softwareentwicklungsumgebung und enthält mehrere Entwicklungstools, darunter die JRE, einen Compiler, einen Interpreter, einen Dokumentationsgenerator und einen Archivierer mit anderen.
Komponenten von JVM
Nachdem Sie nun mit der Java-Architektur vertraut sind, werfen wir einen Blick auf die Komponenten von JVM, damit wir sie besser verstehen können. Da die JVM eine der wichtigsten Aufgaben für Java ausführt, hat sie viele Teile für diesen Zweck. Wir werden jedes Element im Detail besprechen:
ClassLoader-Subsystem
ClassLoader ist ein Subsystem der Java Virtual Machine, das Klassendateien lädt. Es ist die erste Komponente der Architektur, da es das Programm lädt, damit andere Aufgaben ausgeführt werden können. Es verknüpft und initialisiert auch die Klassendateien. Wir können seine Arbeitsweise in die folgenden drei Abschnitte unterteilen:
Wird geladen
Diese Komponente lädt die Klassen. Es verfügt über den BootStrap ClassLoader zum Laden von Klassen, die zum Bootstrap-Klassenpfad gehören. Der ClassLoader der Erweiterung lädt Klassen, die sich im Ordner „ext“ befinden, und der ClassLoader der Anwendung lädt die im Pfad genannten Umgebungsvariablen und ähnliche Dateien.
Verknüpfung
Hier hat das Subsystem einen Prüfer, um zu prüfen, ob der Bytecode korrekt ist oder nicht. Wenn der Bytecode nicht korrekt ist, wird der Überprüfungsfehler generiert. Der Verknüpfungsabschnitt weist allen statischen Variablen Speicher zu und weist die Standardwerte zu. Es ersetzt auch die symbolischen Referenzen der Erinnerung durch ursprüngliche.

Initialisierung
In diesem Abschnitt von ClassLoading weist das System die statischen Variablen den ursprünglichen Werten zu und führt den statischen Block aus.
Laufzeitdatenbereich
Dieser Abschnitt der JVM enthält die folgenden Komponenten:
Methodenbereich
Der Methodenbereich speichert alle Daten auf Klassenebene. Jede JVM hat nur einen Methodenbereich.
Heap-Bereich
Der Heap-Bereich speichert alle Objekte und ihre Instanz-Arrays und -Variablen. Wie der Methodenbereich hat eine JVM nur einen Heap-Bereich.
Stapelbereich
Dieser Abschnitt erstellt eindeutige Laufzeitstapel für jede Bedrohung und macht einen Eintrag für jeden Methodenaufruf im Stapelspeicher (auch bekannt als Stapelrahmen). Es hat ein lokales Variablenarray, das sich auf die Methode bezieht, den Operandenstapel, der als Arbeitsbereich für Zwischenoperationen fungiert, und die Rahmendaten, in denen alle Symbole, die sich auf die Methode beziehen, gespeichert bleiben. Die Rahmendaten behalten die Catch-Block-Informationen bei, es sei denn, es gibt eine Ausnahme.
PC-Register
Jeder Thread hat separate PC-Register, die die Adresse der laufenden Anweisungen enthalten. Sobald eine Anweisung die Ausführung abgeschlossen hat, aktualisiert sich das PC-Register selbst mit der nächsten.
Native Methodenstapel
Wie der Name schon sagt, enthält dieser Abschnitt Informationen über die native Methode. Es erstellt einen einzigartigen nativen Methodenstapel für jede Bedrohung.
Beachten Sie, dass die ersten beiden Komponenten des Laufzeitdatenbereichs (Methodenbereich und Heap-Bereich) gemeinsam genutzte Ressourcen sind, der Stack-Bereich jedoch nicht.
Ausführungs-Engine
Die Ausführungsmaschine führt den Bytecode aus. Es liest und führt es Stück für Stück aus. Es hat auch verschiedene Komponenten:
Dolmetscher
Diese Komponente interpretiert den Bytecode schnell, ist aber etwas langsam in der Ausführung. Es hat einen erheblichen Nachteil, wenn das System eine Methode mehrmals aufruft und jedes Mal eine neue Interpretation erfordert. Dieser Nachteil des Interpreters beeinträchtigt die Effizienz des Prozesses erheblich.
JIT-Compiler
Der JIT-Compiler hat nicht den Nachteil, den der Interpreter hat. Wenn die Ausführungsmaschine also wiederholten Code findet, verwendet sie den JIT-Compiler anstelle des Interpreters. Der JIT-Compiler wandelt den Bytecode nach dem Kompilieren in nativen Code um. Das System verwendet direkt den nativen Code.
Der JIT-Compiler hat den Zwischencode-Generator zum Erzeugen von Zwischencode und den Code-Optimierer zum Optimieren desselben. Es hat auch einen Zielcodegenerator, der das native Reh produziert, und ein Profil, das Hotspots findet.
Müllsammler
Die letzte Komponente der Ausführungsmaschine ist der Garbage Collector, der nicht referenzierte Objekte sammelt und entfernt. Sie können es auslösen, indem Sie system.gc() aufrufen, aber das garantiert nicht seine Ausführung.

Neben diesen Komponenten verfügt die JVM auch über das JNI (Java Native Interface) und die Native Method Libraries. Ersteres interagiert mit letzterem und stellt die notwendigen nativen Bibliotheken zur Ausführung bereit.
Holen Sie sich einen Softwareentwicklungskurs von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Abschließende Gedanken
Wir haben versucht, diesen Artikel kurz und hilfreich zu halten, und sind zuversichtlich, dass Sie ihn informativ fanden. Wenn Sie Fragen zu den Komponenten von JVM oder der Java-Architektur haben, können Sie uns diese auch stellen, indem Sie uns über Kommentare kontaktieren.
In unserem Blog erfahren Sie mehr über Java und seine Anwendungen. Wir haben zahlreiche hilfreiche Leitfäden und Artikel, die verschiedene Aspekte dieser robusten Programmiersprache abdecken.
Wenn Sie mehr über Java, OOPs und Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen bietet. Über 9 Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.
