JVM (Java Virtual Machine) er en abstrakt maskin. Det er en spesifikasjon som gir kjøretidsmiljø der java-bytekode kan kjøres.
JVM-er er tilgjengelige for mange maskinvare- og programvareplattformer (dvs. JVM er plattformavhengig).
Hva er JVM
Det er:
- En spesifikasjon hvor arbeid av Java Virtual Machine er spesifisert. Men implementeringsleverandøren er uavhengig til å velge algoritmen. Implementeringen er levert av Oracle og andre selskaper.
- En gjennomføring Implementeringen er kjent som JRE (Java Runtime Environment).
- Kjøretidsforekomst Hver gang du skriver java-kommando på ledeteksten for å kjøre java-klassen, opprettes en forekomst av JVM.
Hva det gjør
JVM utfører følgende operasjon:
- Laster inn kode
- Verifiserer kode
- Utfører kode
- Gir kjøretidsmiljø
JVM gir definisjoner for:
- Minneområde
- Klasse filformat
- Register sett
- Søppel samlet haug
- Fatal feilrapportering etc.
JVM arkitektur
La oss forstå den interne arkitekturen til JVM. Den inneholder klasselaster, minneområde, utførelsesmotor etc.
1) Klasselaster
Classloader er et undersystem av JVM som brukes til å laste klassefiler. Hver gang vi kjører java-programmet, lastes det først av klasselasteren. Det er tre innebygde klasselastere i Java.
//Let's see an example to print the classloader name public class ClassLoaderExample { public static void main(String[] args) { // Let's print the classloader name of current class. //Application/System classloader will load this class Class c=ClassLoaderExample.class; System.out.println(c.getClassLoader()); //If we print the classloader name of String, it will print null because it is an //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader System.out.println(String.class.getClassLoader()); } }Test det nå
Produksjon:
sun.misc.Launcher$AppClassLoader@4e0e2f2a null
Dette er de interne klasselasterne levert av Java. Hvis du vil lage din egen klasselaster, må du utvide ClassLoader-klassen.
2) Klasse(metode) område
Class(Method) Area lagrer strukturer per klasse, slik som kjøretidskonstantpoolen, felt- og metodedata, koden for metoder.
3) Haug
Det er kjøretidsdataområdet der objekter er allokert.
4) Stable
Java Stack lagrer rammer. Den inneholder lokale variabler og delresultater, og spiller en rolle i metodeanrop og retur.
Hver tråd har en privat JVM-stabel, opprettet samtidig med tråden.
En ny ramme opprettes hver gang en metode påkalles. En ramme blir ødelagt når metodeanropet er fullført.
5) Programtellerregister
PC-registeret (programteller) inneholder adressen til den virtuelle Java-maskininstruksjonen som kjøres for øyeblikket.
6) Native Method Stack
Den inneholder alle de opprinnelige metodene som brukes i applikasjonen.
7) Utførelsesmotor
Det inneholder:
8) Java Native Interface
Java Native Interface (JNI) er et rammeverk som gir et grensesnitt for å kommunisere med en annen applikasjon skrevet på et annet språk som C, C++, Assembly etc. Java bruker JNI-rammeverket for å sende utdata til konsollen eller samhandle med OS-biblioteker.