Hva er JVM?

JVM er en spesifikasjon der funksjonen til Java Virtual Machine er spesifikt beskrevet. Imidlertid er algoritmen en uavhengig identitet som bare velges av implementeringsleverandøren som Oracle og andre anerkjente selskaper. Som sådan er JVM en implementering kjent som Java Runtime Environment (JRE).

Definisjon

Det er definert som en beskrivelse for et program som tilbyr runtime-miljø for kode og dens betydelige utførelse. Med andre ord, det er slik vi kjører Java-programmene - konfigurerer JVM-innstillingene og er avhengige av det for å takle programressursene under utførelsesprosessen.

forståelse

Java er kjent som plattformuavhengig på grunn av Java Virtual Machine. Når en innsending utføres til forskjellige datamaskiner med det forskjellige operativsystemet som har JVM, tolkes bytekoden til maskinnivå av JVM. For å være nøyaktig er JVM-programmer skrevet på C Programming Language, mens JVM er uavhengig av operativsystemet. Det er en nøkkelkomponent i Java-arkitekturen.

Bortsett fra alt dette, er det ansvarlig for å tildele det essensielle minnet som kreves av et Java-program. Det er også ansvarlig for å forby minneområdet.

Hva det gjør?

De viktige operasjonene som JVM utfører er som følger:

  • Innlasting av kode
  • Kodeverifisering
  • Kodekjøring
  • Miljøtilbud

Bortsett fra alt dette, ruller det ut klassifiseringer for klassefilformat, minneområde, søppelinnsamlet haug, registersett, dødelig feilrapportering, etc.

JVM Arkitektur

La oss få noen sentrale innsikter om den interne arkitekturen til JVM som består av:

1. Klasselaster

Det er et undersystem av JVM som brukes til å laste klassefiler. Når du kjører Java-programmet, blir det først lastet av klasselasteren. De tre klasselasterne som Java inkluderer er som følger:

a) Bootstrap ClassLoader

Det er superklassen til Extension klasselaster. Det hjelper med å laste rt.jar-filene som inneholder alle klassefilene.

b) Extension ClassLoader

Det er den overordnede klasselasteren til System classloader og barneklasselasteren til Bootstrap. Krukkefilene i katalogen $ JAVA_HOME / jre / lib / ext kan trekkes ut gjennom Extension ClassLoader.

C) System / Application ClassLoader

Det er barnet til Extension klasselaster, også kjent som Application classloader. Klassefilene fra klassesporet kan hentes ut gjennom den. Classpath, som er satt til gjeldende katalog, kan som standard endres ved å bruke "-cp" eller "-classpath" -bryteren.

2.Klasse (metode) Område

Strukturen fra klassen som felt- og metodedata, konstant basseng for kjøretid og koden for metoder lagres i klasse (metode) -området. Det er et minne som er opprettet ved oppstart av JVM og deles mellom alle tråder som Heap.

3. Haug

Objektene tilordnes gjennom dette nyttige runtime data-området. Det er et minnested som lagrer objekter sammen med forekomstvariabler. Hver gang et objekt opprettes i Java, går det inn i haugen - minneområdet.

4. Stabel

Sammen med lagring av rammer inneholder Java Stack variabler og delresultater. Det spiller også en sentral rolle i metode, påkallelse og retur. Hver enkelt tråd består av sin private JVM-stabel, opprettet samtidig som tråd. Hver gang en metode eskalerer, genereres en ny ramme og knuses når innkallingen av metoden blir fullført.

5. Programteller (PC) Register

PC-registeret inneholder JVM-instruksjonsadressen på tidspunktet for utførelsen. Ved å følge med på instruksjonene har det verdi for hver instruksjon som er udefinert for de opprinnelige metodene.

6. Native Method Stack

De opprinnelige prosedyrene som brukes i applikasjonene er en del av Native Method Stack. Disse metodene er skrevet på andre språk enn Java. Tilknyttet hver tråd, kan ikke JVM-implementeringer stole på vanlige stabler og kan ikke laste inn innfødte metoder. For å være presis ligner det på bunke, men brukes til naturlige metoder.

7. Motor

Å være det viktigste aspektet av JVM, og kommuniserer med sine forskjellige minneområder. Dette inkluderer:

en. Søppelmann

Dette spiller en viktig rolle i JVMs dynamiske minnestyringssystem. Hukommelsen som er opptatt og ikke lenger refereres av noen av de tilgjengelige Java-objektene, frigjøres gjennom Garbage Collector.

b. Tolk

Den utfører instruksjonene etter å ha lest bytecode-strømmen.

c. Just-In-Time (JIT) kompilator

Aktivering av ytelsesforbedring kompilerer JIT-kompilatorer deler av bytekoden med lignende funksjonalitet på samme tid. Det hjelper med å redusere tiden som trengs for samlingsprosessen.

8. Java Native Interface (JNI)

Applikasjonene som er skrevet på andre språk, dvs. C, C ++, Assembly, etc. kan kobles til, gjennom et grensesnitt levert av JNI. JNI framework brukes av Java til å samhandle med OS-biblioteker eller til å sende utdata til konsollen.

Hva bruker JVM?

JVM har to hovedfunksjoner: å la Java-programmer kjøres på en hvilken som helst enhet eller operativsystem (kjent som "Skriv en gang, kjør hvor som helst" -prinsippet), og å administrere og optimalisere programminnet.

Fordeler og ulemper

Java-programmer utføres passende gjennom JVM. Bytecode - et mellomspråk brukes til å kompilere Java-programmer og deretter kjørt gjennom JVM. Hvert enkelt program som blir kompilert til bytecode kan utføres av en hvilken som helst plattform drevet av JVM. Dette gjør Java-programvaren mer effektiv og kompatibel i henhold til de forskjellige databehandlingsplattformene. JVM har noen få bemerkelsesverdige fordeler og ulemper som enhver utvikler bør veie nøye før han investerer i Java-utvikling.

1. Sikkerhet

Gjennom JVMs sikkerhetsmuligheter kan programmererne effektivt skrive high-end sikrede Java-programmer. Det gir operativsystemets ressurser til å identifisere den ondsinnede programvaren, og hjelper også med å forhindre det.

2. Ytelse

Java-programmer som kjører på en JVM vil sannsynligvis tilby tregere utførelse sammenlignet med programmene som er skrevet i C ++. Dette skyldes kodeoptimaliseringen som i stor grad er avhengig av forskjellige systemspesifikke funksjoner. Java-bytekoden kan heller ikke optimaliseres for et spesifikt maskinvaresett, ettersom det er systemnøytralt.

3. Korrekthet

Riktig er programmet som utfører effektivt og oppfyller en brukers forventning til det fulle. JVMs innebygde funksjoner gjør det mulig å fungere korrekt og uten feil.

Hvorfor skal vi bruke JVM?

Til tross for at Java har syntaktisk kode, kan JVM kjøre på forskjellige språkprogrammer. Få av grunnene til at den brukes så mye, og hvorfor du bruker den på forskjellige plattformer, er listet opp nedenfor:

Det bruker heap-minne: Heap-minne er en kjernekomponent som brukes til dynamisk minnetildeling for å definere klasser og objektinitialisering, og siden JVM støtter heap-minne, har den bred aksept.

Gir sikkerhet for plassering av ekstern kode: JVM framework er designet på en slik måte at ekstern applikasjon enkelt blir utført. Denne teorien følges for å utføre Java Applet.

Konklusjon

At JVM jobber på flere operativsystemer, gir det en tommel opp innen teknologidomenet. Bruker den på Windows, Linux og andre operativsystemer, er det aktivert å transformere bytecode uavhengig av maskinvare og operativsystem som skal kjøres. I tillegg er muligheten til å tilby vertsdatamaskinen sikkerhet ved å sikre dataene og programmet en annen grunn til at JVM har vært så vellykket i fortiden og fortsetter å være dominerende i fremtiden.

Anbefalte artikler

Dette har vært en guide til What is a JVM (Java Virtual Machine). Her diskuterte vi de grunnleggende konseptene med listen over arkitektur og bruk av JVM. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -

  1. Beste Javascript-rammer
  2. Er Python objektorientert
  3. Bruksområder for C ++ i Real World
  4. Karriere i ASP.NET
  5. JRE vs JVM | Topp 8 forskjeller med (Infographics)