Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

JVM | Was ist Java Virtual Machine und seine Architektur

Was ist JVM?

Java Virtual Machine (JVM) ist eine Engine, die eine Laufzeitumgebung bereitstellt, um den Java-Code oder Anwendungen zu steuern. 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. Der Java-Compiler erzeugt jedoch Code für eine virtuelle Maschine, die als Java Virtual Machine bekannt ist.

So funktioniert JVM

Zuerst wird Java-Code in Bytecode kompiliert. Dieser Bytecode wird auf verschiedenen Rechnern interpretiert

Zwischen dem Hostsystem und der Java-Quelle ist Bytecode eine vermittelnde Sprache.

JVM in Java ist für die Zuweisung von Speicherplatz verantwortlich.

In diesem JVM-Lernprogramm lernen Sie-

  • JVM-Architektur
  • Softwarecode-Kompilierungs- und Ausführungsprozess
  • C-Code-Kompilierung und Ausführungsprozess
  • Java-Code-Kompilierung und Ausführungsprozess
  • Warum ist Java sowohl interpretierte als auch kompilierte Sprache?
  • Warum ist Java langsam?

JVM-Architektur

Lassen Sie uns nun in diesem JVM-Tutorial die Architektur von JVM verstehen. Die JVM-Architektur in Java enthält Klassenlader, Speicherbereich, Ausführungsmaschine usw.

1) ClassLoader

Der Klassenlader ist ein Subsystem, das zum Laden von Klassendateien verwendet wird. Es erfüllt drei Hauptfunktionen, nämlich. 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

Alle 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-Stacks speichern lokale Variablen und ihre Teilergebnisse. Jeder Thread hat seinen eigenen JVM-Stack, der gleichzeitig mit dem Thread erstellt wird. Ein neuer Rahmen wird erstellt, wenn eine Methode aufgerufen wird, und er wird gelöscht, wenn der Methodenaufrufprozess abgeschlossen ist.

5) PC-Register

PC-Register speichern die Adresse der gerade ausgeführten Java-Virtual-Machine-Anweisung. In Java hat jeder Thread sein separates PC-Register.

6) Native Methodenstapel

Native Methodenstapel enthalten die Anweisungen des nativen Codes, der von der nativen Bibliothek abhängt. Es ist in einer anderen Sprache als Java geschrieben.

7) Ausführungsmodul

Es ist eine Art von Software, die zum Testen von Hardware, Software oder kompletten Systemen verwendet wird. Die Testausführungs-Engine trägt niemals Informationen über das getestete Produkt.

8) Benutzeroberfläche für native Methoden

Das Native Method Interface ist ein Programmierframework. Es ermöglicht Java-Code, der in einer JVM ausgeführt wird, von Bibliotheken und nativen Anwendungen aufgerufen zu werden.

9) Native Methodenbibliotheken

Native Libraries ist eine Sammlung der nativen Bibliotheken (C, C++), die von der Execution Engine benötigt werden.

Softwarecode-Kompilierungs- und Ausführungsprozess

Um ein Softwareprogramm zu schreiben und auszuführen, benötigen Sie Folgendes

1) Redakteur – Um Ihr Programm einzutippen, könnte dafür ein Notizblock verwendet werden

2) Compiler – Um Ihr Hochsprachenprogramm in nativen Maschinencode umzuwandeln

3) Linker – Um verschiedene Programmdateien zusammenzufassen, verweisen Sie in Ihrem Hauptprogramm zusammen.

4) Lader – Zum Laden der Dateien von Ihrem sekundären Speichergerät wie Festplatte, Flash-Laufwerk, CD in den Arbeitsspeicher 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.

Sehen Sie sich vor diesem Hintergrund das folgende Video an und lernen Sie die JVM-interne Funktionsweise und Architektur von JVM (Java Virtual Machine) kennen.

Klicken Sie hier, wenn das Video nicht zugänglich ist

C-Code-Kompilierung und Ausführungsprozess

Den Java-Kompilierungsprozess in Java verstehen. Werfen wir zunächst einen kurzen Blick auf den Kompilierungs- und Verknüpfungsprozess in C.

Angenommen, Sie haben zwei Funktionen f1 und f2 aufgerufen. Die Hauptfunktion ist in der Datei a1.c.

gespeichert

Die Funktion f1 ist in einer Datei a2.c

gespeichert

Die Funktion f2 ist in einer Datei a3.c

gespeichert

Alle diese Dateien, d. h. a1.c, a2.c und a3.c, werden dem Compiler zugeführt. Dessen Ausgabe sind die entsprechenden Objektdateien, die den Maschinencode darstellen.

Der nächste Schritt besteht darin, all diese Objektdateien mit Hilfe des Linkers in eine einzige .exe-Datei zu integrieren. Der Linker fügt all diese Dateien zusammen und erstellt die .exe-Datei.

Während des Programmlaufs lädt ein Ladeprogramm eine.exe zur Ausführung in den Arbeitsspeicher.

Java-Code-Kompilierung und -Ausführung in Java VM

Sehen wir uns nun in diesem JVM-Tutorial den Prozess für JAVA an. In Ihrer Hauptsache 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 3 entsprechende .class-Dateien, die aus BYTE-Code bestehen. Im Gegensatz zu C erfolgt keine Verknüpfung .

Die Java VM oder Java Virtual Machine befindet sich im RAM. Während der Ausführung werden die Klassendateien unter Verwendung des Klassenladers in den RAM gebracht. Der BYTE-Code wird auf Sicherheitsverletzungen überprüft.

Als nächstes konvertiert die Ausführungsmaschine den Bytecode in nativen Maschinencode. Dies ist just-in-time-Kompilierung. Das ist einer der Hauptgründe, warum Java vergleichsweise langsam ist.

HINWEIS: JIT oder Just-in-Time-Compiler ist Teil der Java Virtual Machine (JVM). Es interpretiert einen Teil des Bytecodes, der gleichzeitig eine ähnliche Funktionalität hat.

Warum ist Java sowohl interpretierte als auch kompilierte Sprache?

Programmiersprachen werden klassifiziert als

  • Higher Level Language Bsp. C++, Java
  • Mittelstufensprachen Bsp. C
  • Low-Level-Ex-Assembly
  • endlich die unterste Stufe als Maschinensprache.

Ein Compiler ist ein Programm, das ein Programm von einer Sprachebene in eine andere umwandelt. Beispielkonvertierung eines C++-Programms in Maschinencode.

Der Java-Compiler konvertiert High-Level-Java-Code in Bytecode (der auch eine Art Maschinencode ist).

Ein Dolmetscher ist ein Programm, das ein Programm auf einer Ebene in eine andere Programmiersprache derselben Ebene umwandelt Beispielkonvertierung eines Java-Programms in C++

In Java wandelt der Just-In-Time-Code-Generator den Bytecode in den nativen Maschinencode um, der sich auf denselben Programmierebenen befindet.

Daher ist Java sowohl kompilierte als auch interpretierte Sprache.

Warum ist Java langsam?

Die zwei Hauptgründe für die Langsamkeit von Java sind

  1. Dynamische Verknüpfung: Im Gegensatz zu C erfolgt das Linken zur Laufzeit, jedes Mal, wenn das Programm in Java ausgeführt wird.
  2. Laufzeit-Interpreter: Die Umwandlung von Bytecode in nativen Maschinencode erfolgt zur Laufzeit in Java, was die Geschwindigkeit weiter verlangsamt

Die neueste Version von Java hat die Leistungsengpässe jedoch weitgehend behoben.

Zusammenfassung :

  • Die vollständige Form von JVM ist Java Virtual Machine. JVM in Java ist die Engine, die den Java-Code antreibt. Es konvertiert Java-Bytecode in Maschinensprache.
  • JVM-Architektur in Java enthält Classloader, Speicherbereich, Ausführungsmaschine usw.
  • In JVM wird Java-Code in Bytecode kompiliert. Dieser Bytecode wird auf verschiedenen Maschinen interpretiert
  • JIT steht für Just-in-Time-Compiler. JIT ist der Teil der Java Virtual Machine (JVM). Es wird verwendet, um die Ausführungszeit zu beschleunigen
  • Im Vergleich zu anderen Compiler-Rechnern kann die Ausführung von JVM in Java langsam sein.

Java

  1. Was ist CNC?
  2. Java 10 – Thread-lokaler Handshake
  3. Was ist maschinelles Drehen?
  4. Was ist Architekturdesign?
  5. Was ist ein Maschinenbolzen?
  6. Was ist eine Spinnmaschine?
  7. Was ist ein Milchautomat?
  8. Was ist eine Horizontalbohrmaschine?
  9. Was ist eine automatische Pressmaschine?
  10. Was ist Maschinenpflege