Vad är JVM? Java Virtuell maskin Architecture

Vad är JVM i Java?

Java Virtuell maskin (JVM) är en motor som ger runtime-miljö för att driva Java Code eller applikationer. Den konverterar Java bytekod till maskinspråk. JVM är en del av Java Runtime Environment (JRE). I andra programmeringsspråk producerar kompilatorn maskinkod för ett visst system. Dock, Java kompilatorn producerar kod för en virtuell maskin som kallas Java Virtuell maskin.

Hur fungerar JVM?

Först, Java kod kompileras till bytekod. Denna bytekod tolkas på olika maskiner. Mellan värdsystem och Java källa, Bytecode är ett mellanspråk. JVM in Java ansvarar för att allokera minnesutrymme.


Hur JVM fungerar
Arbetar av Java Virtuell maskin (JVM)

I den här JVM-handledningen kommer du att lära dig-

Architecture av JVM (Java virtuell maskin)

Nu i denna JVM-handledning, låt oss förstå Architecture av JVM. JVM-arkitektur i Java innehåller klassladdare, minnesområde, exekveringsmotor etc.

 


JVM Architecture
Java Virtuell maskin Architecture

1) ClassLoader
Klassladdaren är ett undersystem som används för att ladda klassfiler. Den utför tre huvudfunktioner, dvs. Laddar, länkar och initierar.

2) Metodområde
JVM Method Area lagrar klassstrukturer som metadata, den konstanta körtidspoolen och koden för metoder.

3) Hög
All Objekt, deras relaterade instansvariabler och arrayer lagras i heapen. Detta minne är gemensamt och delas över flera trådar.

4) JVM-språkstackar
Java language Stacks lagrar lokala variabler, och det är delresultat. Varje tråd har sin egen JVM-stack, skapad samtidigt som tråden skapas. En ny ram skapas närhelst en metod anropas, och den raderas när metodanropsprocessen är klar.

5) PC-register
PC-registret lagrar adressen till Java virtuell maskininstruktion som för närvarande körs. I Java, varje tråd har sitt separata PC-register.

6) Native Method Stacks
Inbyggda metodstackar innehåller instruktionen för inbyggd kod beror på det ursprungliga biblioteket. Den är skriven på ett annat språk istället för Java.

7) Utförandemotor
Det är en typ av programvara som används för att testa hårdvara, mjukvara eller kompletta system. Testexekveringsmotorn innehåller aldrig någon information om den testade produkten.

8) Native Method-gränssnitt
Native Method Interface är ett programmeringsramverk. Det tillåter Java kod som körs i en JVM för att anropa av bibliotek och inbyggda applikationer.

9) Inhemska metodbibliotek
Native Libraries är en samling av Native Libraries (C, C++) som behövs av exekveringsmotorn.

Mjukvara Code Kompilerings- och exekveringsprocess

För att skriva och köra ett program behöver du följande

1) Redaktör – För att skriva in ditt program i kan ett anteckningsblock användas för detta

2) Kompilator – För att konvertera ditt högspråkiga program till inbyggd maskinkod

3) Länkare – För att kombinera olika programfilreferenser i ditt huvudprogram tillsammans.

4) Lastare – För att ladda filerna från din sekundära lagringsenhet som hårddisk, flashenhet, CD till RAM-minnet för körning. Inläsningen görs automatiskt när du kör din kod.

5) Utförande – Faktisk exekvering av koden som hanteras av ditt operativsystem och processor.

Med denna bakgrund, se följande video och lär dig JVM:s interna arbete och arkitektur (Java virtuell maskin).

Klicka här. om videon inte är tillgänglig

C-kod Kompilerings- och exekveringsprocess

För att förstå Java kompileringsprocessen i Java. Låt oss först ta en snabb titt på kompilerings- och länkprocessen i C.

Anta att du i huvudsak har anropat två funktioner f1 och f2. Huvudfunktionen lagras i filen a1.c.

C-kod Kompilerings- och exekveringsprocess

Funktion f1 lagras i en fil a2.c

C-kod Kompilerings- och exekveringsprocess

Funktion f2 lagras i en fil a3.c

C-kod Kompilerings- och exekveringsprocess

Alla dessa filer, dvs a1.c, a2.c och a3.c, matas till kompilatorn. Vars utdata är motsvarande objektfiler som är maskinkoden.

C-kod Kompilerings- och exekveringsprocess

Nästa steg är att integrera alla dessa objektfiler i en enda .exe-fil med hjälp av linker. Länkaren klubbar ihop alla dessa filer och producerar .exe-filen.

C-kod Kompilerings- och exekveringsprocess

Under programkörning kommer ett loader-program att ladda a.exe i RAM för utförandet.

C-kod Kompilerings- och exekveringsprocess

Java kodkompilering och exekvering i Java VM

Nu i denna JVM-handledning, låt oss titta på processen för JAVA. I din main har du två metoder f1 och f2.

  • Huvudmetoden lagras i filen a1.java
  • f1 lagras i en fil som a2.java
  • f2 lagras i en fil som a3.java

Java kodkompilering och exekvering i Java VM

Kompilatorn kompilerar de tre filerna och producerar 3 motsvarande .class-filer som består av BYTE-kod. Till skillnad från C görs ingen länkning.

Ocuco-landskapet Java VM eller Java Virtual Machine finns på RAM-minnet. Under exekvering, med hjälp av klassladdaren, förs klassfilerna till RAM-minnet. BYTE-koden verifieras för eventuella säkerhetsintrång.

Java kodkompilering och exekvering i Java VM

Därefter kommer exekveringsmotorn att konvertera bytekoden till inbyggd maskinkod. Detta är precis i tid att sammanställa. Det är en av huvudorsakerna Java är förhållandevis långsam.

Java kodkompilering och exekvering i Java VM

OBS: JIT eller Just-in-time kompilatorn är en del av Java Virtuell maskin (JVM). Den tolkar en del av byten Code som samtidigt har liknande funktionalitet.

Varför är Java både tolkat och kompilerat språk?

Programmeringsspråk klassificeras som

  • Språk på högre nivå Ex. C++, Java
  • Språk på mellannivå Ex. C
  • Lågnivåspråk Ex Assembly
  • slutligen den lägsta nivån som maskinspråket.

A kompilator är ett program som konverterar ett program från en språknivå till en annan. Exempel omvandling av C++ programmera in i maskinkod. Java-kompilatorn konverterar Java-kod på hög nivå till bytekod (vilket också är en typ av maskinkod).

An tolk är ett program som konverterar ett program på en nivå till ett annat programmeringsspråk på samma nivå. Exempel omvandling av Java program in C++

In Java, Just In Time Code generatorn konverterar bytekoden till den ursprungliga maskinkoden som är på samma programmeringsnivåer.

Därav, Java är både sammanställt och tolkat språk.

Varför är Java långsam?

De två huvudorsakerna bakom långsamheten Java är

  1. Dynamisk länkning: Till skillnad från C sker länkning vid körning, varje gång programmet körs in Java.
  2. Runtime Tolk: Omvandlingen av bytekod till inbyggd maskinkod görs vid körning Java vilket ytterligare sänker hastigheten

Men den senaste versionen av Java har åtgärdat prestationsflaskhalsarna i stor utsträckning.

Sammanfattning:

  • Full form av JVM är Java Virtuell maskin. JVM in Java är motorn som driver Java Code. Det konverterar Java bytekod till maskinspråk.
  • JVM-arkitektur i Java innehåller klassladdare, minnesområde, exekveringsmotor etc.
  • I JVM, Java kod kompileras till bytekod. Denna bytekod tolkas på olika maskiner
  • JIT står för Just-in-time kompilator. JIT är en del av Java Virtuell maskin (JVM). Den används för att påskynda exekveringstiden
  • I jämförelse med andra kompilatormaskiner, JVM in Java kan vara långsam i utförande.

Sammanfatta detta inlägg med: