Hvad er JVM? - Nøglekoncepter og arkitektur af JVM

Indholdsfortegnelse:

Anonim

Hvad er JVM?

JVM er en specifikation, hvor funktionen af ​​Java Virtual Machine er specifikt beskrevet. Algoritmen er imidlertid en uafhængig identitet, der kun vælges af implementeringsudbyderen som Oracle og andre kendte virksomheder. Som sådan er JVM en implementering kendt som Java Runtime Environment (JRE).

Definition

Det er defineret som en beskrivelse af et softwareprogram, der tilbyder runtime-miljø for kode og dets betydelige udførelse. Det er med andre ord, hvordan vi kører Java-programmerne - konfigurerer JVM's indstillinger og er afhængige af det for at klare programressourcerne under udførelsesprocessen.

forståelse

Java er kendt som platformuafhængig på grund af Java Virtual Machine. Når der indsendes en indsendelse til forskellige computere med det forskellige operativsystem, der har JVM, tolkes bytecoden til maskinniveau sprog af JVM. For at være præcise er JVM-programmer skrevet på C-programmeringssprog, mens JVM er uafhængig af operativsystemet. Det er en nøglekomponent i Java-arkitekturen.

Bortset fra alt dette er det ansvarligt for at tildele den essentielle hukommelse, der kræves af et Java-program. Det er også ansvarligt for at forbyde hukommelsesområdet.

Hvad det gør?

De vigtige operationer, som JVM udfører, er som følger:

  • Indlæsning af kode
  • Kodeverificering
  • Kodeudførelse
  • Runtime miljøforsyning

Bortset fra alt dette, ruller det klassifikationer ud for klassefilformat, hukommelsesområde, indsamlet bunke med affald, registersæt, dødelig fejlrapportering osv

JVM Arkitektur

Lad os få nogle vigtige indsigter om den interne arkitektur af JVM, der består af:

1. Klasselaster

Det er et undersystem af JVM, der bruges til at indlæse klassefiler. Når du kører java-programmet, indlæses det først af klasselæseren. De tre klasselastere, som Java inkluderer, er som følger:

a) Bootstrap ClassLoader

Det er superklassen i Extension klasselæsser. Det hjælper med indlæsning af rt.jar-filer, der bærer alle klassefiler.

b) Extension ClassLoader

Det er den overordnede klasselaster til System klasselaster og børneklasseindlæser til Bootstrap. Krukkefilerne i biblioteket $ JAVA_HOME / jre / lib / ext kan ekstraheres gennem Extension ClassLoader.

C) System / Application ClassLoader

Det er barnet til Extension classloader, også kendt som Application classloader. Klassefilerne fra klassespaden kan udvindes gennem den. Classpath, som som standard er indstillet til det aktuelle bibliotek, kan ændres ved hjælp af '-cp' eller '-clpathpath' switch.

2.Klasse (metode) Område

Strukturen i klassen som felt- og metodata, løbende konstant pool og koden for metoder gemmes i klasse (metode) -området. Det er en hukommelse, der oprettes ved JVM-opstart og deles mellem alle tråde som Heap.

3. Heap

Objekterne tildeles gennem dette nyttige runtime data-område. Det er et hukommelsessted, der gemmer objekter sammen med dets forekomstvariabler. Hver gang et objekt oprettes i Java, går det ind i dyngen - hukommelsesområdet.

4. Stak

Sammen med lagring af rammer indeholder Java Stack variabler og delvise resultater. Det spiller også en central rolle i metode, påkaldelse og tilbagevenden. Hver enkelt tråd består af sin private JVM-stak, oprettet på samme tid som tråd. Hver gang en metode eskalerer, genereres en ny ramme og knuses, når metodeinvokationen afsluttes.

5. Registrering af programtæller (PC)

PC-registeret indeholder JVM-instruktionsadressen på tidspunktet for dens udførelse. Hold styr på instruktionerne, det har værdi for enhver instruktion, der er udefineret til de oprindelige metoder.

6. Native Method Stack

De oprindelige procedurer, der bruges i applikationerne, er en del af Native Method Stack. Disse metoder er skrevet på andre sprog end Java. Ved hjælp af hver tråd kan JVM-implementeringer ikke stole på konventionelle stabler og kan ikke indlæse originale metoder. For at være præcis ligner den stak, men bruges til oprindelige metoder.

7. Motor

Da det er det centrale aspekt af JVM, kommunikerer det med dets forskellige hukommelsesområder. Dette inkluderer:

en. Skraldemand

Dette spiller en vigtig rolle i JVM's dynamiske hukommelsesstyringssystem. Den hukommelse, der er optaget og ikke længere henvises til af nogen af ​​de tilgængelige Java-objekter, frigives gennem Garbage Collector.

b. Tolk

Det udfører instruktionerne efter at have læst bytecode-strømmen.

c. Just-In-Time (JIT) kompilator

Aktiverer ydelsesforbedring, JIT-kompilator kompilerer dele af bytecoden med lignende funktionalitet på samme tid. Det hjælper med at reducere den tid, der kræves til kompilationsprocessen.

8. Java Native Interface (JNI)

De applikationer, der er scriptet på andre sprog, dvs. C, C ++, samling osv. Kan forbindes til via en interface leveret af JNI. JNI-rammer bruges af Java til at interagere med OS-biblioteker eller til at sende output til konsollen.

Hvad er brugen af ​​JVM?

JVM har to primære funktioner: at give Java-programmer mulighed for at køre på enhver enhed eller operativsystem (kendt som "Skriv en gang, kør hvor som helst") og at styre og optimere programhukommelse.

Fordele og ulemper

Java-programmer udføres passende gennem JVM. Bytecode - et mellemsprog bruges til at kompilere Java-programmer og derefter udføres gennem JVM. Hvert individuelt program, der kompileres til bytecode, kan udføres af enhver platform brændt af JVM. Dette muliggør Java-software mere effektiv såvel som kompatibel som pr. Forskellige beregnede platforme. JVM har et par bemærkelsesværdige fordele og ulemper, som enhver udvikler skal veje nøje, før de investerer i Java-udvikling.

1. Sikkerhed

Gennem JVMs sikkerhedsniveau kan programmererne effektivt skrive avancerede, sikre Java-programmer. Det giver styresystemets ressourcer mulighed for at identificere den ondsindede software og hjælper også med dets forebyggelse i overensstemmelse hermed.

2. Ydeevne

Java-programmer, der kører på en JVM, tilbyder sandsynligvis langsommere udførelse sammenlignet med de programmer, der er skrevet i C ++. Dette skyldes kodeoptimering, som overdrevent afhænger af forskellige systemspecifikke funktioner. Java-bytekoden kan heller ikke optimeres til et specifikt hardwaresæt, da det er systemneutral.

3. Korrekthed

Det korrekte er programmet, der udfører effektivt og imødekommer en brugers forventning til fulde. JVMs indbyggede funktioner gør det muligt for det at fungere korrekt og uden fejl.

Hvorfor skal vi bruge JVM?

På trods af at have syntaktisk Java-kode, kan JVM køre på forskellige sprogprogrammer. Nogle af grundene til, at det bruges så udbredt, og hvorfor det bruges på forskellige platforme, er vist nedenfor:

Den bruger heap-hukommelse: Heap-hukommelse er en kernekomponent, der bruges til dynamisk hukommelsesallokering til at definere klasser og objektinitialisering, og da JVM understøtter heap-hukommelse, har den bred accept.

Tilbyder sikkerhed for placering af fjernkode: JVM-rammer er designet på en sådan måde, at fjernapplikation let udføres. Denne teori følges for eksekvering af Java Applet.

Konklusion

Det faktum, at JVM fungerer på flere operativsystemer, giver det en tommel op på teknologiområdet. Ved hjælp af det på Windows, Linux og andre operativsystemer er det aktiveret at transformere bytecode uanset hardware og operativsystem, der skal udføres. Derudover er dens evne til at tilbyde værtscomputeren sikkerhed ved at sikre deres data og program en anden grund til, at JVM har haft så succes i fortiden og fortsat er dominerende i fremtiden.

Anbefalede artikler

Dette har været en guide til Hvad er en JVM (Java Virtual Machine). Her diskuterede vi de grundlæggende koncepter med listen over arkitektur og anvendelser af JVM. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Bedste Javascript-rammer
  2. Er Python-objektorienteret
  3. Anvendelser af C ++ i Real World
  4. Karriere i ASP.NET
  5. JRE vs JVM | Top 8 forskelle med (Infographics)