Java Virtual Machine (JVM), Forskel JDK, JRE & JVM – Core-Java
Java er et høj-niveau programmeringssprog. Et program skrevet på højt niveau sprog kan ikke køres på nogen maskine direkte. For det første skal det oversættes til det pågældende maskinsprog. Javac compiler gør denne ting, det tager java-program (.java-fil, der indeholder kildekode) og oversætter det til maskinkode (benævnt byte kode eller .klasse fil).,Java Virtual Machine (JVM) er en virtuel maskine, der findes i den rigtige maskine (din computer), og maskinens sprog for JVM er byte-kode. Dette gør det lettere for compiler, da det har at generere byte kode til JVM snarere end forskellige maskinkode for hver type maskine. JVM udfører byte kode genereret af compiler og producere output. JVM er den, der gør java platform uafhængig.
så nu forstod vi, at JVM ‘ s primære funktion er at udføre byte-koden produceret af compiler., Hvert operativsystem har forskellige JVM, men output de producerer efter udførelse af byte kode er ens på tværs af alle operativsystemer. Hvilket betyder, at byte-koden, der genereres på Windowsindo .s, kan køres på Mac OS og vice versa. Derfor kalder vi java som platformuafhængigt sprog. Det samme kan ses i diagrammet nedenfor:
Så for at opsummere alt: Java Virtual machine (JVM) er den virtuelle maskine der kører på faktiske maskine (din computer) og udfører Java byte code., JVM forstår ikke Java kildekode, det er derfor, vi er nødt til at have javac compiler, der samler *.java-filer for at få*.klasse filer, der indeholder byte koder forstås af JVM. JVM gør java bærbar (skriv en gang, kør hvor som helst). Hvert operativsystem har forskellige JVM, men output de producerer efter udførelse af byte kode er ens på tværs af alle operativsystemer.
JVM Arkitekturen
lad os se, hvordan JVM værker:
Class Loader: Den klasse loader læser .,klasse fil og gemme byte kode i området metode.
Metodeområde: der er kun et metodeområde i en JVM, som deles mellem alle klasser. Dette indeholder klasseniveauoplysningerne for hver .klasse fil.Heap: Heap er en del af JVM-hukommelsen, hvor objekter tildeles. JVM skaber en klasse objekt for hver .klasse fil.stak: stak er også en del af JVM-hukommelsen, men i modsætning til bunke bruges den til lagring af midlertidige variabler.
PC registre: dette holder styr på, hvilken instruktion der er blevet udført, og hvilken der skal udføres., Da instruktioner udføres af tråde, har hver tråd et separat PC-register.Native Method stack: en native metode kan få adgang til runtime data områder af den virtuelle maskine.Native Method interface: det gør det muligt for java-kode at ringe eller blive kaldt af native applikationer. Native applikationer er programmer, der er specifikke for hard .are og OS i et system.
Garbage collection: en klasseinstans oprettes eksplicit af java-koden, og efter brug ødelægges den automatisk af garbage collection til hukommelsesstyring.,
JVM vs JRE Vs JDK
JRE: JRE er det miljø, inden for hvilket den virtuelle java-maskine kører. JRE indeholder Java virtual Machine (JVM), klasse biblioteker og andre filer undtagen udviklingsværktøjer såsom compiler og debugger.
hvilket betyder, at du kan køre koden i JRE, men du kan ikke udvikle og kompilere koden i JRE.
JVM: som vi diskuterede ovenfor, kører JVM programmet ved hjælp af klasse, biblioteker og filer leveret af JRE.,
JDK: JDK er et supersæt af JRE, det indeholder alt, hvad JRE har sammen med udviklingsværktøjer som compiler, debugger osv.