Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

JVM | Wat is Java Virtual Machine en zijn architectuur?

Wat is JVM?

Java Virtual Machine (JVM) is een engine die een runtime-omgeving biedt om de Java-code of applicaties aan te sturen. Het zet Java bytecode om in machinetaal. JVM is een onderdeel van Java Runtime Environment (JRE). In andere programmeertalen produceert de compiler machinecode voor een bepaald systeem. 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 hostsysteem en Java-bron is Bytecode een intermediaire taal.

JVM in Java is verantwoordelijk voor het toewijzen van geheugenruimte.

In deze JVM-zelfstudie leer je-

  • JVM-architectuur
  • Proces voor het compileren en uitvoeren van softwarecodes
  • C code compilatie en uitvoeringsproces
  • Java code compilatie en uitvoeringsproces
  • Waarom wordt Java zowel geïnterpreteerd als gecompileerde taal?
  • Waarom is Java traag?

JVM-architectuur

Laten we nu in deze JVM-zelfstudie de architectuur van JVM begrijpen. JVM-architectuur in Java bevat classloader, geheugengebied, uitvoeringsengine enz.

1) ClassLoader

De klassenlader is een subsysteem dat wordt gebruikt voor het laden van klassenbestanden. Het vervult drie belangrijke functies, namelijk. Laden, koppelen en initialiseren.

2) Methodegebied

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

3) Hoop

Alle objecten, hun gerelateerde instantievariabelen en arrays worden in de heap opgeslagen. Dit geheugen is algemeen en wordt gedeeld door meerdere threads.

4) JVM-taalstacks

Java-taal Stacks slaan lokale variabelen op, en het zijn gedeeltelijke resultaten. Elke thread heeft zijn eigen JVM-stack, die tegelijkertijd wordt gemaakt terwijl de thread wordt gemaakt. Er wordt een nieuw frame gemaakt wanneer een methode wordt aangeroepen en het wordt verwijderd wanneer het proces voor het aanroepen van de methode is voltooid.

5) PC-registraties

PC-register slaat het adres op van de Java-instructie voor de virtuele machine die momenteel wordt uitgevoerd. In Java heeft elke thread zijn eigen pc-register.

6) Native methode-stacks

Native-methodestacks bevatten de instructie van native code, afhankelijk van de native bibliotheek. Het is geschreven in een andere taal in plaats van Java.

7) Uitvoeringsengine

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

8) Native methode-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) Bibliotheken met native methode

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

Proces voor het compileren en uitvoeren van softwarecodes

Om een ​​softwareprogramma te schrijven en uit te voeren, hebt u het volgende nodig

1) Redacteur – Om uw programma in te typen, kan hiervoor een kladblok worden gebruikt

2) Compiler – Om uw hoogtaalprogramma om te zetten in native machinecode

3) Linker – Om verschillende programmabestanden in uw hoofdprogramma samen te voegen.

4) Lader - Om de bestanden van uw secundaire opslagapparaat zoals harde schijf, flashdrive, 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 verwerkt door uw besturingssysteem en processor.

Raadpleeg met deze achtergrond de volgende video en leer de interne werking en architectuur van JVM (Java Virtual Machine) kennen.

Klik hier als de video niet toegankelijk is

C-code Compilatie- en uitvoeringsproces

Het Java-compilatieproces in Java begrijpen. Laten we eerst even kijken naar het compileer- en koppelingsproces in C.

Stel dat je in het hoofdgeding twee functies f1 en f2 hebt aangeroepen. De hoofdfunctie is opgeslagen in bestand a1.c.

Functie f1 wordt opgeslagen in een bestand a2.c

Functie f2 wordt opgeslagen in een bestand a3.c

Al deze bestanden, d.w.z. a1.c, a2.c en a3.c, worden naar de compiler gevoerd. Waarvan de output de corresponderende objectbestanden zijn die de machinecode zijn.

De volgende stap is het integreren van al deze objectbestanden in een enkel .exe-bestand met behulp van linker. De linker zal al deze bestanden samenvoegen en het .exe-bestand produceren.

Tijdens het uitvoeren van het programma zal een laadprogramma a.exe in het RAM laden voor de uitvoering.

Java code compilatie en uitvoering in Java VM

Laten we nu in deze JVM-zelfstudie kijken naar het proces voor JAVA. In je main heb je twee methoden f1 en f2.

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

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

De Java VM of Java Virtual Machine bevindt zich in het RAM. Tijdens de uitvoering worden met behulp van de klassenlader de klassenbestanden naar het RAM-geheugen gebracht. De BYTE-code wordt geverifieerd op beveiligingsinbreuken.

Vervolgens converteert de uitvoeringsengine de bytecode naar native machinecode. Dit is net op tijd aan het compileren. Het is een van de belangrijkste redenen waarom Java relatief traag is.

OPMERKING: JIT of Just-in-time compiler is het onderdeel van de Java Virtual Machine (JVM). Het interpreteert een deel van de bytecode die tegelijkertijd dezelfde functionaliteit heeft.

Waarom is Java zowel geïnterpreteerde als gecompileerde taal?

Programmeertalen zijn geclassificeerd als

  • Taal op hoger niveau bijv. C++, Java
  • Middelbare talen Ex. C
  • Lage taal Ex-assemblage
  • eindelijk het laagste niveau als machinetaal.

Een compiler is een programma dat een programma converteert van het ene taalniveau naar het andere. Voorbeeldconversie van C++-programma naar machinecode.

De Java-compiler converteert Java-code op hoog niveau naar bytecode (wat ook een type machinecode is).

Een tolk is een programma dat een programma op het ene niveau converteert naar een andere programmeertaal op hetzelfde niveau. Voorbeeldconversie van Java-programma naar C++

In Java converteert de Just In Time Code-generator de bytecode naar de native machinecode die zich op hetzelfde programmeerniveau bevindt.

Daarom is Java zowel gecompileerde als geïnterpreteerde taal.

Waarom is Java traag?

De twee belangrijkste redenen achter de traagheid van Java zijn

  1. Dynamische koppeling: In tegenstelling tot C gebeurt het koppelen tijdens runtime, elke keer dat het programma in Java wordt uitgevoerd.
  2. Runtime tolk: De conversie van bytecode naar native machinecode gebeurt tijdens runtime in Java, wat de snelheid verder vertraagt

De nieuwste versie van Java heeft de prestatieknelpunten echter grotendeels aangepakt.

Samenvatting :

  • 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, uitvoeringsengine 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 het onderdeel van de Java Virtual Machine (JVM). Het wordt gebruikt om de uitvoeringstijd te versnellen
  • In vergelijking met andere compileermachines kan JVM in Java traag worden uitgevoerd.

Java

  1. Wat is een machineschroef?
  2. Wat is CNC?
  3. Java 10 - Thread-lokale handdruk
  4. Wat is machinaal draaien?
  5. Wat is architectuurontwerp?
  6. Wat is een machinebout?
  7. Wat is een spinmachine?
  8. Wat is een melkautomaat?
  9. Wat is een horizontale boormachine?
  10. Wat is een automatische persmachine?
  11. Wat is machinebelading