JVM | Wat is Java Virtual Machine & zijn architectuur

Wat is JVM?

Java Virtual Machine (JVM) is een motor die een runtime-omgeving biedt om de Java-code of -toepassingen aan te sturen. Het zet Java bytecode om in machinetaal. JVM is een onderdeel van Java Run Environment (JRE). In andere programmeertalen produceert de compiler machinecode voor een bepaald systeem. De Java-compiler produceert echter code voor een virtuele machine die bekend staat als Java Virtual Machine.

Zo werkt JVM

Eerst wordt Java-code gecompileerd tot bytecode. Deze bytecode wordt op verschillende machines geïnterpreteerd

Tussen het hostsysteem en de Java-bron, is Bytecode een tussentaal.

JVM in Java is verantwoordelijk voor het toewijzen van geheugenruimte.

Hoe JVM werkt
Werking van Java Virtual Machine (JVM)

In deze JVM tutorial, leert u-

  • JVM Architectuur
  • Software Code Compilatie & Uitvoeringsproces
  • C code Compilatie en Uitvoeringsproces
  • Java code Compilatie en Uitvoeringsproces
  • Waarom is Java zowel geïnterpreteerde als Gecompileerde Taal?
  • Waarom is Java langzaam?

JVM Architectuur

Nu in deze JVM tutorial, laten we de Architectuur van JVM begrijpen. JVM architectuur in Java bevat classloader, geheugengebied, executie motor etc.

JVM-architectuur
Java Virtual Machine-architectuur

1) ClassLoader

De classloader is een subsysteem dat wordt gebruikt voor het laden van class-bestanden. Het voert drie belangrijke functies uit, namelijk laden, linken en initialiseren.

2) Method Area

JVM Method Area slaat klassenstructuren op zoals metadata, de constante runtime pool, en de code voor methoden.

3) Heap

Alle Objecten, hun gerelateerde instance variabelen, en arrays worden opgeslagen in de heap. Dit geheugen is gemeenschappelijk en wordt gedeeld door meerdere threads.

4) JVM-taal Stacks

Java-taal Stacks slaan lokale variabelen op, en de gedeeltelijke resultaten ervan. Elke thread heeft zijn eigen JVM stack, die gelijktijdig wordt aangemaakt als de thread wordt gemaakt. Een nieuw frame wordt aangemaakt wanneer een methode wordt aangeroepen, en het wordt verwijderd wanneer het proces van methode-aanroep is voltooid.

5) PC-registers

PC-register slaat het adres op van de Java virtual machine-instructie die op dat moment wordt uitgevoerd. In Java heeft elke thread een eigen PC-register.

6) Native Method Stacks

Native method stacks bevatten de instructies van native code die afhankelijk is van de native library. Het is geschreven in een andere taal in plaats van Java.

7) Execution Engine

Het is een type software dat wordt gebruikt om hardware, software, of complete systemen te testen. De testuitvoeringsengine bevat nooit enige informatie over het geteste product.

8) Native Method interface

De Native Method Interface is een programmeerraamwerk. Hiermee kan Java-code die in een JVM draait, worden aangeroepen door bibliotheken en native applicaties.

9) Native Method Libraries

Native Libraries is een verzameling van de Native Libraries (C, C++) die nodig zijn voor de Execution Engine.

Software Code Compilation & Uitvoeringsproces

Om een software programma te schrijven en uit te voeren, heb je het volgende nodig

1) Editor – Om je programma in te typen, een kladblok kan hiervoor worden gebruikt

2) Compiler – Om uw hoog-taal programma om te zetten in native machine code

3) Linker – Om verschillende programma bestanden, waarnaar in uw hoofdprogramma wordt verwezen, samen te voegen.

4) Loader – om de bestanden van uw secundaire opslagapparaat zoals harde schijf, Flash Drive, CD in RAM te laden voor uitvoering. Het laden wordt automatisch gedaan wanneer u uw code uitvoert.

5) Uitvoering – Daadwerkelijke uitvoering van de code die wordt afgehandeld door uw OS & processor.

Met deze achtergrond, bekijk de volgende video & leer de interne werking en architectuur van JVM (Java Virtual Machine).

Klik hier als de video niet toegankelijk is

C-code Compilatie- en Uitvoeringsproces

Om het compilatieproces in Java te begrijpen. Laten we eerst eens kijken naar het compilatie- en linkingproces in C.

Voorstel dat je in de main twee functies f1 en f2 hebt aangeroepen. De hoofdfunctie is opgeslagen in het bestand a1.c.

Werking van Java Virtuele Machine (JVM) zijn Architectuur

Functie f1 is opgeslagen in een bestand a2.c

Werking van Java Virtuele Machine(JVM) zijn Architectuur

Functie f2 is opgeslagen in een bestand a3.c

Werking van Java Virtuele Machine(JVM) zijn Architectuur

Al deze bestanden, d.w.z, a1.c, a2.c, en a3.c, worden naar de compiler gestuurd. Wiens uitvoer de overeenkomstige object-bestanden zijn, die de machinecode vormen.

Werking van Java Virtuele Machine (JVM) haar architectuur

De volgende stap is het integreren van al deze object bestanden in een enkel .exe bestand met behulp van de linker. De linker voegt al deze bestanden samen en produceert het .exe bestand.

Werking van Java Virtuele Machine (JVM) zijn architectuur

Tijdens het uitvoeren van een programma laadt een loaderprogramma een.exe in het RAM voor de uitvoering.

Werking van Java Virtual Machine(JVM) zijn architectuur

Compilatie en uitvoering van Java-code in Java VM

Nu in deze JVM-tutorial, laten we eens kijken naar het proces voor JAVA. In je hoofdprogramma heb je twee methoden f1 en f2.

  • De hoofdmethode is opgeslagen in een bestand als a1.java
  • f1 is opgeslagen in een bestand als a2.java
  • f2 is opgeslagen in een bestand als a3.java

Werking van Java Virtuele Machine (JVM) haar architectuur

De compiler compileert de drie bestanden en produceert 3 corresponderende .class bestanden die bestaan uit BYTE code. In tegenstelling tot C wordt er niet gelinkt.

De Java VM of Java Virtual Machine bevindt zich op het RAM. Tijdens de uitvoering worden met behulp van de class loader de class files naar het RAM gebracht. De BYTE-code wordt gecontroleerd op eventuele beveiligingsinbreuken.

Werking van Java Virtual Machine (JVM) zijn architectuur

Volgende, de uitvoeringsengine zet de Bytecode om in Native machinecode. Dit is just-in-time compileren. Dit is een van de hoofdredenen waarom Java relatief traag is.

Werking van Java Virtuele Machine (JVM) haar architectuur

NOOT: JIT of Just-in-time compiler is het onderdeel van de Java Virtuele Machine (JVM). Het interpreteert een deel van de Byte Code die een soortgelijke functionaliteit heeft op hetzelfde moment.

Waarom is Java zowel een geïnterpreteerde als een gecompileerde taal?

Programmeertalen worden geclassificeerd als

  • Hogere-niveau taal, bijv. C++, Java
  • Middelniveau talen, bijv. C
  • Low-Level Language Ex Assembly
  • Tot slot het laagste niveau als de Machine Language.

Een compiler is een programma dat een programma omzet van het ene niveau van taal naar het andere. Voorbeeld conversie van C++ programma naar machine code.

De java-compiler zet high-level java-code om in bytecode (ook een soort machinecode).

Een interpreter is een programma dat een programma op een bepaald niveau omzet in een andere programmeertaal op hetzelfde niveau. Voorbeeld van de omzetting van een Java-programma in C++

In Java zet de Just In Time Code-generator de bytecode om in de native machinecode, die zich op dezelfde programmeerniveaus bevinden.

Dus Java is zowel een gecompileerde als een geïnterpreteerde taal.

Waarom is Java traag?

De twee belangrijkste redenen achter de traagheid van Java zijn

  1. Dynamisch linken: In tegenstelling tot C wordt het linken tijdens de run-time gedaan, elke keer dat het programma in Java wordt uitgevoerd.
  2. Run-time Interpreter: De omzetting van byte-code in native machinecode gebeurt in Java op runtime, wat de snelheid nog verder vertraagt

De nieuwste versie van Java heeft de prestatieknelpunten echter voor een groot deel aangepakt.

Samenvatting:

  • De volledige vorm van JVM is Java Virtual Machine. JVM in Java is de motor die de Java-code aanstuurt. Het zet Java bytecode om in machinetaal.
  • JVM-architectuur in Java bevat classloader, geheugengebied, executie-engine enz.
  • In JVM wordt Java-code gecompileerd tot bytecode. Deze bytecode wordt op verschillende machines geïnterpreteerd
  • JIT staat voor Just-in-time compiler. JIT is een onderdeel van de Java Virtual Machine (JVM). Het wordt gebruikt om de uitvoeringstijd te versnellen
  • In vergelijking met andere compilermachines kan JVM in Java traag zijn in de uitvoering.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *