Hva er JVM? Java Virtuell maskin Architecture
Hva er JVM i Java?
Java Virtuell maskin (JVM) er en motor som gir 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 kode er kompilert til bytekode. Denne bytekoden blir tolket på forskjellige maskiner. Mellom vertssystem og Java kilde, Bytecode er et mellomspråk. JVM inn Java er ansvarlig for å tildele minneplass.
I denne JVM-opplæringen vil du lære-
Architecture av JVM (Java virtuell maskin)
La oss nå i denne JVM-opplæringen forstå Architecture av JVM. JVM-arkitektur i Java inneholder klasselaster, minneområde, utførelsesmotor etc.
1) ClassLoader
Klasselasteren er et undersystem som brukes til å laste klassefiler. Den utfører tre hovedfunksjoner, nemlig. Lasting, kobling og initialisering.
2) Metodeområde
JVM Method Area lagrer klassestrukturer som metadata, den konstante kjøretidspoolen 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 language Stacks lagrer lokale variabler, og det er delvise resultater. Hver tråd har sin egen JVM-stabel, opprettet samtidig som tråden opprettes. En ny ramme opprettes hver gang en metode påkalles, og den slettes når metodeanropsprosessen er fullført.
5) PC-registre
PC-register lagrer adressen til Java virtuell maskininstruksjon som kjøres for øyeblikket. I Java, hver tråd har sitt separate PC-register.
6) Native metodestabler
Innfødte metodestabler inneholder instruksjonene for opprinnelig 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 inneholder aldri informasjon om det testede produktet.
8) Native Method-grensesnitt
Native Method Interface er et programmeringsrammeverk. Det tillater Java kode som kjører i en JVM for å ringe av biblioteker og native applikasjoner.
9) Native metodebiblioteker
Native Libraries er en samling av Native Libraries (C, C++) som trengs av utførelsesmotoren.
Programvarekode kompilering og utførelsesprosess
For å skrive og kjøre et program trenger du følgende
1) Redaktør – For å skrive programmet inn i, kan en notisblokk brukes til dette
2) kompilatoren – For å konvertere ditt høyspråklige program til innfødt maskinkode
3) Linker – For å kombinere ulike programfilreferanser i hovedprogrammet sammen.
4) Laster – For å laste filene fra din sekundære lagringsenhet som harddisk, flash-stasjon, CD til RAM for kjøring. Lastingen gjøres automatisk når du kjører koden.
5) Utførelse – Faktisk utførelse av koden som håndteres av ditt operativsystem og prosessor.
Med denne bakgrunnen, se følgende video og lær JVM internt arbeid og arkitektur til JVM (Java virtuell maskin).
Klikk her. hvis videoen ikke er tilgjengelig
C-kode kompilering og utførelsesprosess
For å forstå Java kompileringsprosess i Java. La oss først ta en rask titt på kompilerings- og koblingsprosessen i C.
Anta at du i hovedsak har kalt to funksjoner f1 og f2. Hovedfunksjonen er lagret i fil a1.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, mates 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 samle alle disse filene og produserer .exe-filen.
Under programkjøring vil et loader-program laste a.exe inn i RAM for utførelsen.
Java kode kompilering 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 er lagret i filen a1.java
- f1 er lagret i en fil som a2.java
- f2 er lagret i en fil som a3.java
Kompileren vil kompilere de tre filene og produserer 3 tilsvarende .class-filer som består av BYTE-kode. I motsetning til C, gjøres ingen kobling.
De Java VM eller Java Virtual Machine ligger på RAM. Under kjøring, ved å bruke klasselasteren, bringes klassefilene til RAM. BYTE-koden er verifisert for eventuelle sikkerhetsbrudd.
Deretter vil utførelsesmotoren konvertere bytekoden til Native maskinkode. Dette er akkurat i tide kompilering. Det er en av hovedgrunnene til det Java er forholdsvis treg.
NOTAT: JIT eller Just-in-time kompilator er en del av Java Virtuell maskin (JVM). Den tolker en del av bytekoden som har lignende funksjonalitet på samme tid.
Hvorfor er Java både tolket og kompilert språk?
Programmerings språk er klassifisert som
- Språk på høyere nivå Eks. C++, Java
- Språk på mellomnivå Eks. C
- Språk på lavt nivå Eks Assembly
- endelig det laveste nivået som maskinspråket.
A kompilatoren er et program som konverterer et program fra ett språknivå til et annet. Eksempel konvertering av C++ programmer inn i maskinkode. Java-kompilatoren konverterer java-kode på høyt nivå 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å. Eksempel konvertering av Java program inn C++
In Java, konverterer Just In Time Code-generatoren bytekoden til den opprinnelige maskinkoden som er på samme programmeringsnivå.
Derfor Java er både kompilert og 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 som ytterligere reduserer hastigheten
Imidlertid er den nyeste versjonen av Java har adressert flaskehalsene i ytelse i stor grad.
Oppsummering:
- Full form for JVM er Java Virtuell maskin. JVM inn Java er motoren som driver Java Kode. Den konverterer Java bytekode til maskinspråk.
- JVM-arkitektur i Java inneholder klasselaster, minneområde, utførelsesmotor etc.
- I JVM, Java kode kompileres til bytekode. Denne bytekoden blir tolket på forskjellige maskiner
- JIT står for Just-in-time kompilator. JIT er en del av Java Virtuell maskin (JVM). Den brukes til å fremskynde utførelsestiden
- Sammenlignet med andre kompilatormaskiner, JVM in Java kan være treg i utførelse.