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.
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.
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.
Funktion f1 er gemt i en fil a2.c
Funktion f2 er gemt i en fil a3.c
Alle disse filer, dvs. a1.c, a2.c og a3.c, fรธres til compileren. Hvis output er de tilsvarende objektfiler, som er maskinkoden.
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.
Under programkรธrsel vil et loader-program indlรฆse a.exe i RAM for udfรธrelsen.
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
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.
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.
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
- Dynamisk linking: I modsรฆtning til C, sker linkning ved kรธrsel, hver gang programmet kรธres ind Java.
- 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.









