Hvad er JVM? Java Virtual Machine Architecture

Hvad er JVM i Java?

Java Virtuel maskine (JVM) er en motor, der giver et driftsmiljรธ til at kรธre Java Kode eller applikationer. Det konverterer Java bytekode til maskinsprog. JVM er en del af Java Runtime Environment (JRE). I andre programmeringssprog producerer compileren maskinkode til et bestemt system. Imidlertid, Java compiler producerer kode til en virtuel maskine kendt som Java Virtuel maskine.

Hvordan fungerer JVM?

First, Java kode kompileres til bytekode. Denne bytekode bliver fortolket pรฅ forskellige maskiner. Mellem vรฆrtssystem og Java kilde, Bytecode er et mellemsprog. JVM ind Java er ansvarlig for at tildele hukommelsesplads.


Sรฅdan fungerer JVM
Arbejde af Java Virtuel maskine (JVM)

I denne JVM-tutorial lรฆrer du-

Architecture af JVM (Java virtuel maskine)

Lad os nu i denne JVM-tutorial forstรฅ Architecture af JVM. JVM-arkitektur i Java indeholder klasseindlรฆser, hukommelsesomrรฅde, udfรธrelsesmotor osv.

 


FMV Architecture
Java Virtual Machine Architecture

1) ClassLoader
Klasseindlรฆseren er et undersystem, der bruges til at indlรฆse klassefiler. Den udfรธrer tre hovedfunktioner, dvs. Indlรฆsning, sammenkรฆdning og initialisering.

2) Metodeomrรฅde
JVM Method Area gemmer klassestrukturer som metadata, den konstante runtime-pulje og koden til metoder.

3) Hobe
Alle Objekter, deres relaterede instansvariabler og arrays gemmes i heapen. Denne hukommelse er fรฆlles og deles pรฅ tvรฆrs af flere trรฅde.

4) JVM sprog stakke
Java language Stacks gemmer lokale variabler, og det er delvise resultater. Hver trรฅd har sin egen JVM-stak, der oprettes samtidig med at trรฅden oprettes. En ny ramme oprettes, hver gang en metode kaldes, og den slettes, nรฅr metodeindkaldelsesprocessen er fuldfรธrt.

5) PC-registre
PC-register gemmer adressen pรฅ Java virtuel maskine-instruktion, som i รธjeblikket udfรธres. I Java, hver trรฅd har sit separate pc-register.

6) Native Method Stacks
Native metodestakke indeholder instruktionen af โ€‹โ€‹native kode afhรฆnger af det native bibliotek. Det er skrevet pรฅ et andet sprog i stedet for Java.

7) Udfรธrelsesmotor
Det er en type software, der bruges til at teste hardware, software eller komplette systemer. Testudfรธrelsesmotoren bรฆrer aldrig nogen information om det testede produkt.

8) Native Method-grรฆnseflade
Native Method Interface er en programmeringsramme. Det tillader Java kode, der kรธrer i en JVM til at kalde af biblioteker og native applikationer.

9) Native metodebiblioteker
Native Libraries er en samling af Native Libraries(C, C++), som er nรธdvendige for udfรธrelsesmotoren.

Software Code Compilation & Execution proces

For at skrive og udfรธre et softwareprogram skal du bruge fรธlgende

1) Redaktรธr โ€“ Til at skrive dit program ind i, kan en notesblok bruges til dette

2) compiler โ€“ At konvertere dit hรธjsprogede program til indbygget maskinkode

3) Linker โ€“ At kombinere forskellige programfiler reference i dit hovedprogram sammen.

4) Lรฆssemaskine โ€“ For at indlรฆse filerne fra din sekundรฆre lagerenhed som harddisk, flashdrev, cd til RAM til udfรธrelse. Indlรฆsningen sker automatisk, nรฅr du udfรธrer din kode.

5) Udfรธrelse โ€“ Faktisk udfรธrelse af koden, som hรฅndteres af dit OS og processor.

Med denne baggrund, se fรธlgende video og lรฆr JVM's interne arbejde og arkitektur (Java virtuel maskine).

Klik link. hvis videoen ikke er tilgรฆngelig

C-kode kompilerings- og eksekveringsproces

For at forstรฅ Java kompileringsproces i Java. Lad os fรธrst tage et hurtigt kig pรฅ kompilerings- og linkprocessen i C.

Antag, at du i hovedsagen har kaldt to funktioner f1 og f2. Hovedfunktionen er gemt i filen a1.c.

C-kode kompilerings- og eksekveringsproces

Funktion f1 er gemt i en fil a2.c

C-kode kompilerings- og eksekveringsproces

Funktion f2 er gemt i en fil a3.c

C-kode kompilerings- og eksekveringsproces

Alle disse filer, dvs. a1.c, a2.c og a3.c, fรธres til compileren. Hvis output er de tilsvarende objektfiler, som er maskinkoden.

C-kode kompilerings- og eksekveringsproces

Det nรฆste trin er at integrere alle disse objektfiler i en enkelt .exe-fil ved hjรฆlp af linker. Linkeren samler alle disse filer og producerer .exe-filen.

C-kode kompilerings- og eksekveringsproces

Under programkรธrsel vil et loader-program indlรฆse a.exe i RAM for udfรธrelsen.

C-kode kompilerings- og eksekveringsproces

Java kode kompilering og eksekvering i Java VM

Lad os nu i denne JVM-tutorial se pรฅ processen for JAVA. I dit hoved har du to metoder f1 og f2.

  • Hovedmetoden er gemt i filen a1.java
  • f1 er gemt i en fil som a2.java
  • f2 er gemt i en fil som a3.java

Java kode kompilering og eksekvering i Java VM

Compileren vil kompilere de tre filer og producerer 3 tilsvarende .class-filer, som bestรฅr af BYTE-kode. I modsรฆtning til C foretages der ingen linkning.

Java VM eller Java Virtuel maskine ligger pรฅ RAM'en. Under udfรธrelse, ved brug af klasseindlรฆseren, bringes klassefilerne pรฅ RAM'en. BYTE-koden er verificeret for eventuelle sikkerhedsbrud.

Java kode kompilering og eksekvering i Java VM

Dernรฆst vil eksekveringsmotoren konvertere bytekoden til Native maskinkode. Dette er lige i tide at kompilere. Det er en af โ€‹โ€‹hovedรฅrsagerne Java er forholdsvis langsom.

Java kode kompilering og eksekvering i Java VM

BEMร†RK VENLIGST: JIT eller Just-in-time compiler er en del af Java Virtuel maskine (JVM). Det fortolker en del af bytekoden, der har lignende funktionalitet pรฅ samme tid.

Hvorfor er Java bรฅde fortolket og kompileret sprog?

Programmeringssprog klassificeres som

  • Sprog pรฅ hรธjere niveau Eks. C++, Java
  • Sprog pรฅ mellemniveau Eks. C
  • Sprog pรฅ lavt niveau Eks Assembly
  • endelig det laveste niveau som Maskinsproget.

A compiler er et program, der konverterer et program fra et sprogniveau til et andet. Eksempel konvertering af C++ programmere ind i maskinkode. Java-kompileren konverterer java-kode pรฅ hรธjt niveau til bytekode (som ogsรฅ er en type maskinkode).

An tolk er et program, der konverterer et program pรฅ รฉt niveau til et andet programmeringssprog pรฅ samme niveau. Eksempel konvertering af Java program ind C++

In Java, konverterer Just In Time Code-generatoren bytekoden til den oprindelige maskinkode, som er pรฅ de samme programmeringsniveauer.

derfor Java er bรฅde kompileret sรฅvel som fortolket sprog.

Hvorfor er Java langsom?

De to hovedรฅrsager bag langsomheden af Java er

  1. Dynamisk linking: I modsรฆtning til C, sker linkning ved kรธrsel, hver gang programmet kรธres ind Java.
  2. Run-time Tolk: Konverteringen af โ€‹โ€‹bytekode til indbygget maskinkode udfรธres ved run-time in Java hvilket yderligere sรฆnker hastigheden

Men den seneste version af Java har i vid udstrรฆkning adresseret flaskehalse i ydeevnen.

Resumรฉ:

  • Fuld form for JVM er Java Virtuel maskine. JVM ind Java er den motor, der driver Java Kode. Det konverterer Java bytekode til maskinsprog.
  • JVM-arkitektur i Java indeholder klasseindlรฆser, hukommelsesomrรฅde, udfรธrelsesmotor osv.
  • I JVM, Java kode kompileres til bytekode. Denne bytekode bliver fortolket pรฅ forskellige maskiner
  • JIT stรฅr for Just-in-time compiler. JIT er en del af Java Virtuel maskine (JVM). Det bruges til at fremskynde udfรธrelsestiden
  • I sammenligning med andre compilermaskiner, JVM in Java kan vรฆre langsom i udfรธrelse.

Opsummer dette indlรฆg med: