Hva er JVM? Forklar JVM Architecture
โก Smart oppsummering
Java Virtuell maskin (JVM) er motoren som gir et kjรธretidsmiljรธ for รฅ drive Java kode, som konverterer plattformuavhengig bytekode til maskinsprรฅk. Det er en del av Java Kjรธretidsmiljรธ og muliggjรธr Java's skrivbare รฉn gang, kjรธrbare hvor som helst.

Hva er JVM i Java?
Java Virtuell maskin (JVM) er en motor som gir et driftsmiljรธ for รฅ drive Java kode eller applikasjoner. Den konverterer Java bytekode til maskinsprรฅk. JVM er en del av Java Runtime Environment (JRE). I andre programmeringssprรฅk produserer kompilatoren maskinkode for et bestemt system. Imidlertid Java kompilatoren produserer kode for en virtuell maskin kjent som Java Virtuell maskin.
Hvordan fungerer JVM?
Fรธrst Java Koden kompileres til bytekode. Denne bytekoden tolkes pรฅ forskjellige maskiner. Mellom vertssystemet og Java kildekode, bytekode er et mellomliggende sprรฅk. JVM i Java er ansvarlig for รฅ tildele minneplass.
Arbeider av Java Virtuell maskin (JVM)
Architecture av JVM (Java virtuell maskin)
La oss nรฅ forstรฅ arkitekturen til JVM. JVM-arkitektur i Java inneholder en klasselaster, et minneomrรฅde, en utfรธrelsesmotor og mer.
Java Virtuell maskin Architecture
1) ClassLoader
Klasselasteren er et delsystem som brukes til รฅ laste inn klassefiler. Den utfรธrer tre hovedfunksjoner, nemlig lasting, kobling og initialisering.
2) Metodeomrรฅde
JVM-metodeomrรฅdet lagrer klassestrukturer som metadata, den konstante runtime-poolen og koden for metoder.
3) Haug
Alle Objekter, deres relaterte forekomstvariabler og matriser lagres i heapen. Dette minnet er felles og deles pรฅ tvers av flere trรฅder.
4) JVM-sprรฅkstabler
Java Sprรฅkstabler lagrer lokale variabler og deres delvise resultater. Hver trรฅd har sin egen JVM-stabel, som opprettes samtidig som trรฅden opprettes. En ny ramme opprettes hver gang en metode kalles, og den slettes nรฅr metodekallingsprosessen er fullfรธrt.
5) PC-registre
PC-registeret lagrer adressen til Java virtuell maskininstruksjon som kjรธrer for รธyeblikket. I Java, hver trรฅd har sitt eget separate PC-register.
6) Native metodestabler
Stabler med native metoder inneholder instruksjonene fra native koder som er avhengige av det native biblioteket. De er skrevet pรฅ et annet sprรฅk i stedet for Java.
7) Utfรธrelsesmotor
Utfรธrelsesmotoren leser bytekoden og utfรธrer den bit for bit. Den bruker en tolk og en Just-In-Time (JIT)-kompilator for รฅ konvertere bytekode til innebygd maskinkode og kjรธre den.
8) Grensesnitt for opprinnelig metode
Native Method Interface er et programmeringsrammeverk. Det tillater Java kode som kjรธrer i en JVM for รฅ kalle, og bli kalt av, native applikasjoner og biblioteker.
9) Native metodebiblioteker
Native Libraries er en samling av de native bibliotekene (C, C++) som trengs av utfรธrelsesmotoren.
Software Code Kompilerings- og utfรธrelsesprosess
For รฅ skrive og kjรธre et program trenger du fรธlgende:
- 1) Redaktรธr โ For รฅ skrive programmet ditt inn i; en notisblokk kan brukes til dette.
- 2) kompilatoren โ For รฅ konvertere ditt hรธynivรฅsprรฅkprogram til innebygd maskinkode.
- 3) Linker โ For รฅ kombinere de ulike programfilreferansene i hovedprogrammet ditt.
- 4) Laster โ For รฅ laste inn filer fra din sekundรฆre lagringsenhet, som en harddisk, flash-stasjon eller CD, til RAM for kjรธring. Lastingen skjer automatisk nรฅr du kjรธrer koden din.
- 5) Utfรธrelse โ Faktisk utfรธrelse av koden, som hรฅndteres av operativsystemet og prosessoren din.
Med denne bakgrunnen, se fรธlgende video og lรฆr den interne JVM-funksjonen og arkitekturen til JVM (Java virtuell maskin).
Klikk her. hvis videoen ikke er tilgjengelig
C-kode kompilering og utfรธrelsesprosess
For รฅ forstรฅ Java kompileringsprosessen, la oss fรธrst ta en rask titt pรฅ kompilerings- og koblingsprosessen i C.
Anta at du i hovedfunksjonen har kalt to funksjoner, f1 og f2. Hovedfunksjonen er lagret i filen a1.c.
Funksjonen f1 er lagret i en fil a2.c.
Funksjonen f2 er lagret i en fil a3.c.
Alle disse filene, dvs. a1.c, a2.c og a3.c, mates til kompilatoren, hvis utdata er de tilsvarende objektfilene, som er maskinkoden.
Neste steg er รฅ integrere alle disse objektfilene til รฉn enkelt .exe-fil ved hjelp av en linker. Linkeren vil slรฅ sammen alle disse filene og produsere .exe-filen.
Under programkjรธringen vil et lasteprogram laste inn en .exe-fil. RAM for henrettelse.
Java kode kompilering og utfรธrelse i Java VM
La oss nรฅ se pรฅ prosessen for JavaI hovedsak har du to metoder, f1 og f2.
- Hovedmetoden er lagret i filen 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 produsere tre tilsvarende .class-filer, som bestรฅr av BYTE-kode. I motsetning til C, gjรธres ingen lenking.
Ocuco Java VM, gull Java Virtuell maskin, ligger pรฅ RAM-minnet. Under kjรธring, ved hjelp av klasselasteren, blir klassefilene hentet inn i RAM-minnet. BYTE-koden verifiseres for eventuelle sikkerhetsbrudd.
Deretter vil utfรธrelsesmotoren konvertere bytekoden til innebygd maskinkode. Dette er just-in-time-kompilering. Det er en av hovedgrunnene til at Java er forholdsvis treg.
NOTAT: JIT, eller Just-in-time-kompilatoren, er en del av Java Virtuell maskin (JVM). Den tolker deler av bytekoden som har lignende funksjonalitet samtidig.
Hvorfor er Java bรฅde tolket og kompilert sprรฅk?
Programmerings sprรฅk er klassifisert som:
- Hรธyere nivรฅ sprรฅk, f.eks. C++, Java
- Mellomnivรฅsprรฅk, f.eks. C
- Lavnivรฅsprรฅk, f.eks. Assembly
- Til slutt, det laveste nivรฅet som maskinsprรฅk
A kompilatoren er et program som konverterer et program fra ett sprรฅknivรฅ til et annet. For eksempel konverteringen av et C++ program inn i maskinkode. Det Java kompilatoren konverterer hรธynivรฅ Java kode til bytekode (som ogsรฅ er en type maskinkode).
An tolk er et program som konverterer et program pรฅ ett nivรฅ til et annet programmeringssprรฅk pรฅ samme nivรฅFor eksempel konverteringen av en Java program inn C++.
In Java, konverterer Just-In-Time-kodegeneratoren bytekoden til den opprinnelige maskinkoden, som er pรฅ samme programmeringsnivรฅer. Derfor, Java er bรฅde et kompilert og et tolket sprรฅk.
Hvorfor er Java langsom?
De to hovedรฅrsakene bak tregheten til Java er:
- Dynamisk kobling: I motsetning til C, gjรธres koblingen ved kjรธretid, hver gang programmet kjรธres inn Java.
- Kjรธretidstolk: Konverteringen av bytekode til innebygd maskinkode gjรธres ved kjรธretid Java, noe som reduserer hastigheten ytterligere.
Imidlertid er de nyeste versjonene av Java har i stor grad adressert disse ytelsesflaskehalsene.











