Was ist JVM?

JVM ist eine Spezifikation, in der die Funktionsweise der Java Virtual Machine speziell beschrieben wird. Der Algorithmus ist jedoch eine eigenständige Identität, die nur von Implementierungsanbietern wie Oracle und anderen renommierten Unternehmen ausgewählt wird. JVM ist eine Implementierung, die als Java Runtime Environment (JRE) bezeichnet wird.

Definition

Es ist als Beschreibung für ein Softwareprogramm definiert, das eine Laufzeitumgebung für Code und dessen signifikante Ausführung bietet. Mit anderen Worten, so führen wir die Java-Programme aus - indem wir die Einstellungen der JVM konfigurieren und darauf vertrauen, dass sie während des Ausführungsprozesses mit den Programmressourcen fertig werden.

Verstehen

Java ist aufgrund der Java Virtual Machine als plattformunabhängig bekannt. Wenn eine Übermittlung an verschiedene Computer mit dem unterschiedlichen Betriebssystem mit JVM erfolgt, wird der Bytecode von JVM in die Maschinensprache übersetzt. Um genau zu sein, JVM-Programme sind in der Programmiersprache C geschrieben, während JVM vom Betriebssystem unabhängig ist. Es ist eine Schlüsselkomponente der Java-Architektur.

Abgesehen davon ist es für die Zuweisung des für ein Java-Programm erforderlichen Arbeitsspeichers verantwortlich. Es ist auch dafür verantwortlich, den Speicherplatz zu verbieten.

Was es macht?

Die wichtigsten Operationen, die JVM ausführt, sind folgende:

  • Code wird geladen
  • Code-Überprüfung
  • Code-Ausführung
  • Bereitstellung der Laufzeitumgebung

Abgesehen davon werden Klassifizierungen für das Dateiformat Class, den Speicherbereich, den vom Müll gesammelten Heap, den Registersatz, die Meldung schwerwiegender Fehler usw. eingeführt.

JVM-Architektur

Lassen Sie uns einige wichtige Einblicke in die interne Architektur von JVM gewinnen, die Folgendes umfassen:

1. Klassenlader

Es ist ein Subsystem von JVM, das zum Laden von Klassendateien verwendet wird. Während das Java-Programm ausgeführt wird, wird es zuerst vom Klassenladeprogramm geladen. Die drei Klassenladeprogramme, die Java enthält, lauten wie folgt:

a) Bootstrap ClassLoader

Es ist die Superklasse von Extension Classloader. Es hilft beim Laden der rt.jar-Dateien, die alle Klassendateien enthalten.

b) Extension ClassLoader

Es ist das übergeordnete Klassenladeprogramm des Systemklassenladeprogramms und des untergeordneten Klassenladeprogramms von Bootstrap. Die JAR-Dateien im Verzeichnis $ JAVA_HOME / jre / lib / ext können mit dem Extension ClassLoader extrahiert werden.

C) System / Application ClassLoader

Es ist das untergeordnete Element von Extension Classloader, das auch als Application Classloader bezeichnet wird. Die Klassendateien aus dem Klassenpfad können dadurch extrahiert werden. Der Klassenpfad, der standardmäßig auf das aktuelle Verzeichnis festgelegt ist, kann mit der Option '-cp' oder '-classpath' geändert werden.

2.Klassenbereich (Methode)

Die Vorklassenstrukturen wie Feld- und Methodendaten, Laufzeitkonstantenpool und der Code für Methoden werden im Klassenbereich (Methodenbereich) gespeichert. Dies ist ein Speicher, der beim Start von JVM erstellt und von allen Threads wie Heap gemeinsam genutzt wird.

3. Haufen

Über diesen nützlichen Laufzeitdatenbereich werden die Objekte zugeordnet. Es ist ein Speicherort, an dem Objekte zusammen mit ihren Instanzvariablen gespeichert werden. Jedes Mal, wenn ein Objekt in Java erstellt wird, wird es in den Heap verschoben - den Speicherbereich.

4. Stapeln

Neben dem Speichern von Frames enthält Java Stack Variablen und Teilergebnisse. Es spielt auch eine zentrale Rolle bei Methode, Aufruf und Rückgabe. Jeder einzelne Thread besteht aus seinem privaten JVM-Stack, der gleichzeitig mit dem Thread erstellt wird. Immer wenn eine Methode eskaliert, wird ein neuer Frame generiert und zerstört, wenn der Methodenaufruf abgeschlossen ist.

5. Programmzähler (PC) registrieren

Das PC-Register enthält die JVM-Befehlsadresse zum Zeitpunkt seiner Ausführung. Er verfolgt die Anweisungen und hat für jede Anweisung einen Wert, der für die nativen Methoden undefiniert ist.

6. Native Method Stack

Die in den Anwendungen verwendeten systemeigenen Prozeduren sind Teil des systemeigenen Methodenstapels. Diese Methoden sind in anderen Sprachen als Java geschrieben. JVM-Implementierungen, die mit jedem Thread verknüpft sind, können sich nicht auf herkömmliche Stacks verlassen und keine systemeigenen Methoden laden. Um genau zu sein, ähnelt es dem Stack, wird jedoch für native Methoden verwendet.

7. Motor

Als zentraler Aspekt von JVM kommuniziert es mit seinen verschiedenen Speicherbereichen. Das beinhaltet:

ein. Müllsammler

Dies spielt eine wichtige Rolle im dynamischen Speicherverwaltungssystem der JVM. Der Speicher, der belegt ist und von keinem der erreichbaren Java-Objekte mehr referenziert wird, wird über den Garbage Collector freigegeben.

b. Dolmetscher

Es führt die Anweisungen aus, nachdem es den Bytecode-Stream gelesen hat.

c. JIT-Compiler (Just-In-Time)

Der JIT-Compiler ermöglicht eine Leistungssteigerung und kompiliert gleichzeitig Teile des Bytecodes mit ähnlichen Funktionen. Dies reduziert den Zeitaufwand für den Kompilierungsprozess.

8. Java Native Interface (JNI)

Die Anwendungen, die in anderen Sprachen geschrieben wurden, z. B. C, C ++, Assembly usw., können über eine von JNI bereitgestellte Schnittstelle verbunden werden. Das JNI-Framework wird von Java verwendet, um mit Betriebssystembibliotheken zu interagieren oder um Ausgaben an die Konsole zu senden.

Was ist die Verwendung von JVM?

Die JVM hat zwei Hauptfunktionen: Die Ausführung von Java-Programmen auf einem beliebigen Gerät oder Betriebssystem (Prinzip "Einmal schreiben, überall ausführen") sowie die Verwaltung und Optimierung des Programmspeichers.

Vorteile und Nachteile

Java-Programme werden treffend über JVM ausgeführt. Bytecode - Eine Zwischensprache wird zum Kompilieren von Java-Programmen verwendet und dann über JVM ausgeführt. Jedes einzelne Programm, das in Bytecode kompiliert wird, kann von jeder Plattform ausgeführt werden, die von JVM betrieben wird. Dies ermöglicht eine effektivere und kompatibelere Java-Software für die verschiedenen betroffenen Computerplattformen. Die JVM hat einige bemerkenswerte Vor- und Nachteile, die jeder Entwickler sorgfältig abwägen sollte, bevor er in die Java-Entwicklung investiert.

1. Sicherheit

Über die Sicherheitsfunktionen von JVM können die Programmierer effektiv sichere High-End-Java-Programme schreiben. Es versetzt die Betriebssystemressourcen in die Lage, die schädliche Software zu identifizieren, und hilft auch bei der entsprechenden Vorbeugung.

2. Leistung

Java-Programme, die auf einer JVM ausgeführt werden, werden wahrscheinlich langsamer ausgeführt als Programme, die in C ++ geschrieben sind. Dies ist auf die Codeoptimierung zurückzuführen, die zu stark von verschiedenen systemspezifischen Funktionen abhängt. Außerdem kann der Java-Bytecode nicht für einen bestimmten Hardwaresatz optimiert werden, da er systemneutral ist.

3. Richtigkeit

Richtig ist das Programm, das effektiv arbeitet und die Erwartungen des Benutzers in vollem Umfang erfüllt. Die eingebauten Funktionen von JVM ermöglichen eine korrekte und fehlerfreie Funktionsweise.

Warum sollten wir JVM verwenden?

Trotz des Java-Syntaxcodes kann JVM auf verschiedenen Sprachprogrammen ausgeführt werden. Einige der Gründe, warum es so weit verbreitet ist und warum es plattformübergreifend eingesetzt wird, sind nachfolgend aufgeführt:

Der Heapspeicher wird verwendet: Der Heapspeicher ist eine Kernkomponente, die für die dynamische Speicherzuweisung zum Definieren der Klassen- und Objektinitialisierung verwendet wird. Da JVM den Heapspeicher unterstützt, hat er eine breite Akzeptanz.

Sicherheit für Remotecodestandort bieten: Das JVM-Framework ist so konzipiert, dass Remoteanwendungen problemlos ausgeführt werden können. Diese Theorie wird zur Ausführung des Java-Applets befolgt.

Fazit

Die Tatsache, dass JVM auf mehreren Betriebssystemen ausgeführt werden kann, ist im Technologiebereich von Vorteil. Unter Windows, Linux und anderen Betriebssystemen kann der Bytecode unabhängig von der Hardware und dem auszuführenden Betriebssystem transformiert werden. Darüber hinaus ist seine Fähigkeit, dem Host-Computer Sicherheit durch die Sicherung seiner Daten und Programme zu bieten, ein weiterer Grund, warum JVM in der Vergangenheit so erfolgreich war und auch in Zukunft eine dominierende Rolle spielt.

Empfohlene Artikel

Dies war eine Anleitung zu What is a JVM (Java Virtual Machine). Hier haben wir die grundlegenden Konzepte mit der Liste der Architekturen und Verwendungen von JVM besprochen. Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren -

  1. Beste Javascript Frameworks
  2. Ist Python-Objektorientiert
  3. Anwendungen von C ++ in der realen Welt
  4. Karriere in ASP.NET
  5. JRE vs JVM | Top 8 Unterschiede zu (Infografiken)