JVM - Hva er Java Virtual Machine & dens arkitektur

Innholdsfortegnelse:

Anonim

Hva er JVM?

Java Virtual Machine (JVM) er en motor som gir kjøretidsmiljø for å kjøre Java-koden eller applikasjonene. Den konverterer Java bytecode til maskinspråk. JVM er en del av Java Run Environment (JRE). I andre programmeringsspråk produserer kompilatoren maskinkode for et bestemt system. Imidlertid produserer Java-kompilator kode for en virtuell maskin kjent som Java Virtual Machine.

Slik fungerer JVM

For det første overholdes Java-koden i bytekode. Denne bytekoden tolkes på forskjellige maskiner

Mellom vertssystem og Java-kilde er Bytecode et mellomlederspråk.

JVM i Java er ansvarlig for tildeling av minne.

Arbeid på Java Virtual Machine (JVM)

I denne JVM-opplæringen vil du lære-

  • JVM Architecture
  • Programvare kodekompilering og utførelsesprosess
  • C-kode Kompilering og utførelsesprosess
  • Java-kode kompilering og utførelse prosess
  • Hvorfor tolkes Java og Compiled Language?
  • Hvorfor er Java treg?

JVM Architecture

Nå i denne JVM-opplæringen, la oss forstå JVMs arkitektur. JVM-arkitektur i Java inneholder klasselaster, minneområde, utførelsesmotor etc.
Java Virtual Machine Architecture

1) ClassLoader

Klasselaster er et delsystem som brukes til å laste inn klassefiler. Den utfører tre hovedfunksjoner, nemlig. Lasting, kobling og initialisering.

2) Metodeområde

JVM Method Area lagrer klassestrukturer som metadata, det konstante kjøretidsbassenget og koden for metoder.

3) Haug

Alle objektene, deres relaterte forekomstvariabler og matriser lagres i dyngen. Dette minnet er vanlig og deles på tvers av flere tråder.

4) JVM språkstabler

Java-språkstabler lagrer lokale variabler, og det er delvise resultater. Hver tråd har sin egen JVM-stabel, opprettet samtidig som tråden blir opprettet. En ny ramme opprettes hver gang en metode påkalles, og den slettes når prosessen med påkalling av metode er fullført.

5) PC-registre

PC-register lagrer adressen til Java virtuell maskininstruksjon som for tiden utføres. I Java har hver tråd sitt eget PC-register.

6) Native Method Stacks

Innfødte metode stabler holder instruksjonene til innfødt kode avhenger av det opprinnelige biblioteket. Den er skrevet på et annet språk i stedet for Java.

7) Utførelsesmotor

Det er en type programvare som brukes til å teste maskinvare, programvare eller komplette systemer. Testutførelsesmotoren har aldri informasjon om det testede produktet.

8) Grensesnitt for opprinnelig metode

Native Method Interface er et programmeringsrammeverk. Det lar Java-kode som kjører i en JVM ringe av biblioteker og innfødte applikasjoner.

9) Innfødte metodebiblioteker

Innfødte biblioteker er en samling av innfødte biblioteker (C, C ++) som er nødvendige av Execution Engine.

Programvare kodekompilering og utførelsesprosess

For å kunne skrive og utføre et program, trenger du følgende

1) Editor - Hvis du vil skrive inn programmet ditt, kan en notisblokk brukes til dette

2) Kompilator - For å konvertere høyt språkprogrammet ditt til innfødt maskinkode

3) Linker - For å kombinere forskjellige programfilreferanser i hovedprogrammet ditt sammen.

4) Loader - For å laste filene fra den sekundære lagringsenheten som harddisk, Flash Drive, CD til RAM for kjøring. Lastingen gjøres automatisk når du utfører koden.

5) Utførelse - faktisk utførelse av koden som håndteres av operativsystemet og prosessoren.

Med denne bakgrunnen refererer du til følgende video og lærer JVMs interne arbeid og arkitektur til JVM (Java Virtual Machine).

Klikk her hvis videoen ikke er tilgjengelig

C-kode Kompilering og utførelsesprosess

For å forstå Java-kompileringsprosessen i Java. La oss først se raskt på kompilerings- og koblingsprosessen i C.

Anta at du i hovedsak har kalt to funksjoner f1 og f2. Hovedfunksjonen er lagret i fil ac.c.

Funksjon f1 er lagret i en fil a2.c

Funksjon f2 er lagret i en fil a3.c

Alle disse filene, dvs. a1.c, a2.c og a3.c, blir matet til kompilatoren. Hvis utdata er de tilsvarende objektfilene som er maskinkoden.

Det neste trinnet er å integrere alle disse objektfilene i en enkelt .exe-fil ved hjelp av linker. Linkeren vil klubben alle disse filene sammen og produsere .exe-filen.

Under programkjøringen vil et lasterprogram laste a.exe inn i RAM-en for utføring.

Java-kodekompilering og -utførelse i Java VM

Nå i denne JVM-opplæringen, la oss se på prosessen for JAVA. I hovedsak har du to metoder f1 og f2.

  • Hovedmetoden lagres i fil a1.java
  • f1 er lagret i en fil som a2.java
  • f2 er lagret i en fil som a3.java

Kompilatoren vil kompilere de tre filene og produserer 3 tilsvarende. Klassefiler som består av BYTE-kode. I motsetning til C er ingen sammenkobling gjort .

Java VM eller Java Virtual Machine ligger på RAM-en. Under kjøringen, med klasselaster, blir klassefilene hentet på RAM. BYTE-koden er verifisert for eventuelle sikkerhetsbrudd.

Deretter vil kjøringsmotoren konvertere Bytecode til Native maskinkode. Dette er akkurat i tide. Det er en av hovedårsakene til at Java er relativt tregt.

MERK: JIT eller Just-in-time kompilator er delen av Java Virtual Machine (JVM). Den tolker en del av Byte-koden som har lignende funksjonalitet samtidig.

Hvorfor er Java både tolket og kompilert språk?

Programmeringsspråk er klassifisert som
  • Språk på høyere nivå Eks. C ++, Java
  • Mellomnivå språk Ex. C
  • Low-Level Language Ex Assembly
  • endelig det laveste nivået som maskinspråket.

En kompilator er et program som konverterer et program fra ett språknivå til et annet. Eksempel på konvertering av C ++ - program til maskinkode.

Java-kompilatoren konverterer Java-kode på høyt nivå til bytekode (som også er en type maskinkode).

En tolk er et program som konverterer et program på ett nivå til et annet programmeringsspråk på samme nivå. Eksempel på konvertering av Java-program til C ++

I Java konverterer Just In Time Code-generatoren bytekoden til den opprinnelige maskinkoden som har samme programmeringsnivå.

Derfor er Java både kompilert og tolket språk.

Hvorfor er Java treg?

De to viktigste årsakene bak Java-tregheten er

  1. Dynamisk lenking: I motsetning til C gjøres kobling på kjøretid hver gang programmet kjøres i Java.
  2. Kjøretidstolk: Konvertering av byte-kode til innfødt maskinkode gjøres ved kjøretid i Java, noe som fremmer bremser hastigheten

Den siste versjonen av Java har imidlertid adressert ytelsesflaskehalsene i stor grad.

Sammendrag :

  • Fullstendig form for JVM er Java Virtual Machine. JVM i Java er motoren som driver Java-koden. Den konverterer Java bytecode til maskinspråk.
  • JVM-arkitektur i Java inneholder klasselaster, minneområde, utførelsesmotor etc.
  • I JVM blir Java-kode samlet til bytekode. Denne bytekoden tolkes på forskjellige maskiner
  • JIT står for Just-in-time kompilator. JIT er den delen av Java Virtual Machine (JVM). Den brukes til å øke hastigheten på utførelsestiden
  • Sammenlignet med andre kompilatorer kan JVM i Java være treg i utførelsen.