JVM - Vad är Java Virtual Machine & dess arkitektur

Innehållsförteckning:

Anonim

Vad är JVM?

Java Virtual Machine (JVM) är en motor som ger körningsmiljö för att driva Java-koden eller applikationerna. Det konverterar Java-bytecode till maskinspråk. JVM är en del av Java Run Environment (JRE). I andra programmeringsspråk producerar kompilatorn maskinkod för ett visst system. Men Java-kompilator producerar kod för en virtuell maskin som kallas Java Virtual Machine.

Så här fungerar JVM

Först följs Java-koden i bytecode. Denna bytecode tolkas på olika maskiner

Mellan värdsystemet och Java-källan är Bytecode ett mellanliggande språk.

JVM i Java ansvarar för allokering av minnesutrymme.

Arbeta med Java Virtual Machine (JVM)

I denna JVM-handledning lär du dig-

  • JVM-arkitektur
  • Programvara kod sammanställning & utförande process
  • C-kod Sammanställning och utförande
  • Java-kod sammanställning och utförande process
  • Varför är Java både tolkat och kompilerat språk?
  • Varför är Java långsamt?

JVM-arkitektur

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

1) ClassLoader

Klasslastaren är ett delsystem som används för att ladda klassfiler. Den utför tre huvudfunktioner, nämligen. Laddning, länkning och initialisering.

2) Metodområde

JVM Method Area lagrar klassstrukturer som metadata, den konstanta körtidspoolen och koden för metoder.

3) Hög

Alla objekt, deras relaterade instansvariabler och matriser lagras i högen. Detta minne är vanligt och delas över flera trådar.

4) JVM-språkstaplar

Java-språkstackar lagrar lokala variabler, och det är delvis resultat. Varje tråd har sin egen JVM-stack, skapad samtidigt när tråden skapas. En ny ram skapas när en metod anropas och den raderas när processen för anrop av metod är klar.

5) PC-register

PC-register lagrar adressen till Java-instruktionen för virtuell maskin som för närvarande körs. I Java har varje tråd sitt separata PC-register.

6) Naturliga metodstaplar

Inbyggda metodstackar håller instruktionen för inbyggd kod beror på det inbyggda biblioteket. Det är skrivet på ett annat språk istället för Java.

7) Exekveringsmotor

Det är en typ av programvara som används för att testa hårdvara, programvara eller kompletta system. Testgenomföringsmotorn har 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 att ringa via bibliotek och inbyggda applikationer.

9) Inbyggda metodbibliotek

Native Libraries är en samling av Native Libraries (C, C ++) som behövs av Execution Engine.

Programvara kod sammanställning & utförande process

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

1) Editor - Om du vill skriva in ditt program kan en anteckningsblock användas för detta

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

3) Linker - För att kombinera olika programfilsreferenser i ditt huvudprogram tillsammans.

4) Loader - För att ladda filer från din sekundära lagringsenhet som hårddisk, Flash Drive, CD till RAM för körning. Lastningen görs automatiskt när du kör koden.

5) Utförande - Verkligt utförande av koden som hanteras av ditt operativsystem och processor.

Med den här bakgrunden hänvisar du till följande video och lär dig JVM: s interna arbete och arkitektur för JVM (Java Virtual Machine).

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

C-kod Sammanställning och utförande

Att förstå Java-kompileringsprocessen i Java. Låt oss först ta en snabb titt på sammanställnings- och länkningsprocessen i C.

Antag att du i huvudsak har kallat två funktioner f1 och f2. Huvudfunktionen lagras i fil a1.c.

Funktion f1 lagras i en fil a2.c

Funktion f2 lagras i en fil a3.c

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

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

Under programkörningen laddar ett laddarprogram a.exe i RAM-minnet för körning.

Java-kod sammanställning och körning i Java VM

Nu i denna JVM-handledning, låt oss titta på processen för JAVA. I huvudsak 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

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

Java-VM eller Java Virtual Machine finns på RAM-minnet. Under körningen, med hjälp av klassladdaren, tas klassfilerna till RAM-minnet. BYTE-koden verifieras för eventuella säkerhetsöverträdelser.

Därefter konverterar körmotorn Bytecode till Native maskinkod. Detta är precis i tid att sammanställa. Det är en av de främsta anledningarna till att Java är relativt långsamt.

OBS: JIT eller just-in-time kompilator är delen av Java Virtual Machine (JVM). Det tolkar en del av Byte-koden som har liknande funktioner samtidigt.

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
  • Exempel på låga nivåer
  • äntligen den lägsta nivån som maskinspråket.

En kompilator är ett program som konverterar ett program från en språknivå till en annan. Exempel på konvertering av C ++ - program till maskinkod.

Java-kompilatorn konverterar Java-kod på hög nivå till bytkod (som också är en typ av maskinkod).

En tolk är ett program som omvandlar ett program på en nivå till ett annat programmeringsspråk på samma nivå. Exempel på konvertering av Java-program till C ++

I Java konverterar Just In Time-kodgeneratorn bytkoden till den inbyggda maskinkoden som har samma programmeringsnivåer.

Därför är Java både kompilerat och tolkat språk.

Varför är Java långsamt?

De två främsta orsakerna bakom Java är långsamma

  1. Dynamisk länkning: Till skillnad från C görs länkning vid körning varje gång programmet körs i Java.
  2. Runtidstolk: Konvertering av byte-kod till inbyggd maskinkod görs vid körning i Java, vilket fördröjer hastigheten

Den senaste versionen av Java har dock till stor del tagit upp prestandaflaskhalsarna.

Sammanfattning :

  • Fullständig form av JVM är Java Virtual Machine. JVM i Java är den motor som driver Java-koden. Det konverterar Java-bytecode till maskinspråk.
  • JVM-arkitektur i Java innehåller klassladdare, minnesområde, exekveringsmotor etc.
  • I JVM sammanställs Java-kod till bytkod. Denna bytecode tolkas på olika maskiner
  • JIT står för Just-in-time kompilator. JIT är den del av Java Virtual Machine (JVM). Den används för att påskynda exekveringstiden
  • Jämfört med andra kompilermaskiner kan JVM i Java vara långsam i körningen.