Hvad er JVM? Java Virtual Machine Architecture

Hvad er JVM i Java?

Java Virtuel maskine (JVM) er en motor, der giver et driftsmiljø til at køre Java Kode eller applikationer. Det konverterer Java bytekode til maskinsprog. JVM er en del af Java Runtime Environment (JRE). I andre programmeringssprog producerer compileren maskinkode til et bestemt system. Imidlertid, Java compiler producerer kode til en virtuel maskine kendt som Java Virtuel maskine.

Hvordan fungerer JVM?

First, Java kode kompileres til bytekode. Denne bytekode bliver fortolket på forskellige maskiner. Mellem værtssystem og Java kilde, Bytecode er et mellemsprog. JVM ind Java er ansvarlig for at tildele hukommelsesplads.


Sådan fungerer JVM
Arbejde af Java Virtuel maskine (JVM)

I denne JVM-tutorial lærer du-

Architecture af JVM (Java virtuel maskine)

Lad os nu i denne JVM-tutorial forstå Architecture af JVM. JVM-arkitektur i Java indeholder klasseindlæser, hukommelsesområde, udførelsesmotor osv.

 


FMV Architecture
Java Virtual Machine Architecture

1) ClassLoader
Klasseindlæseren er et undersystem, der bruges til at indlæse klassefiler. Den udfører tre hovedfunktioner, dvs. Indlæsning, sammenkædning og initialisering.

2) Metodeområde
JVM Method Area gemmer klassestrukturer som metadata, den konstante runtime-pulje og koden til metoder.

3) Hobe
Alle Objekter, deres relaterede instansvariabler og arrays gemmes i heapen. Denne hukommelse er fælles og deles på tværs af flere tråde.

4) JVM sprog stakke
Java language Stacks gemmer lokale variabler, og det er delvise resultater. Hver tråd har sin egen JVM-stak, der oprettes samtidig med at tråden oprettes. En ny ramme oprettes, hver gang en metode kaldes, og den slettes, når metodeindkaldelsesprocessen er fuldført.

5) PC-registre
PC-register gemmer adressen på Java virtuel maskine-instruktion, som i øjeblikket udføres. I Java, hver tråd har sit separate pc-register.

6) Native Method Stacks
Native metodestakke indeholder instruktionen af ​​native kode afhænger af det native bibliotek. Det er skrevet på et andet sprog i stedet for Java.

7) Udførelsesmotor
Det er en type software, der bruges til at teste hardware, software eller komplette systemer. Testudførelsesmotoren bærer aldrig nogen information om det testede produkt.

8) Native Method-grænseflade
Native Method Interface er en programmeringsramme. Det tillader Java kode, der kører i en JVM til at kalde af biblioteker og native applikationer.

9) Native metodebiblioteker
Native Libraries er en samling af Native Libraries(C, C++), som er nødvendige for udførelsesmotoren.

Software Code Compilation & Execution proces

For at skrive og udføre et softwareprogram skal du bruge følgende

1) Redaktør – Til at skrive dit program ind i, kan en notesblok bruges til dette

2) compiler – At konvertere dit højsprogede program til indbygget maskinkode

3) Linker – At kombinere forskellige programfiler reference i dit hovedprogram sammen.

4) Læssemaskine – For at indlæse filerne fra din sekundære lagerenhed som harddisk, flashdrev, cd til RAM til udførelse. Indlæsningen sker automatisk, når du udfører din kode.

5) Udførelse – Faktisk udførelse af koden, som håndteres af dit OS og processor.

Med denne baggrund, se følgende video og lær JVM's interne arbejde og arkitektur (Java virtuel maskine).

Klik link. hvis videoen ikke er tilgængelig

C-kode kompilerings- og eksekveringsproces

For at forstå Java kompileringsproces i Java. Lad os først tage et hurtigt kig på kompilerings- og linkprocessen i C.

Antag, at du i hovedsagen har kaldt to funktioner f1 og f2. Hovedfunktionen er gemt i filen a1.c.

C-kode kompilerings- og eksekveringsproces

Funktion f1 er gemt i en fil a2.c

C-kode kompilerings- og eksekveringsproces

Funktion f2 er gemt i en fil a3.c

C-kode kompilerings- og eksekveringsproces

Alle disse filer, dvs. a1.c, a2.c og a3.c, føres til compileren. Hvis output er de tilsvarende objektfiler, som er maskinkoden.

C-kode kompilerings- og eksekveringsproces

Det næste trin er at integrere alle disse objektfiler i en enkelt .exe-fil ved hjælp af linker. Linkeren samler alle disse filer og producerer .exe-filen.

C-kode kompilerings- og eksekveringsproces

Under programkørsel vil et loader-program indlæse a.exe i RAM for udførelsen.

C-kode kompilerings- og eksekveringsproces

Java kode kompilering og eksekvering i Java VM

Lad os nu i denne JVM-tutorial se på processen for JAVA. I dit hoved har du to metoder f1 og f2.

  • Hovedmetoden er gemt i filen a1.java
  • f1 er gemt i en fil som a2.java
  • f2 er gemt i en fil som a3.java

Java kode kompilering og eksekvering i Java VM

Compileren vil kompilere de tre filer og producerer 3 tilsvarende .class-filer, som består af BYTE-kode. I modsætning til C foretages der ingen linkning.

Java VM eller Java Virtuel maskine ligger på RAM'en. Under udførelse, ved brug af klasseindlæseren, bringes klassefilerne på RAM'en. BYTE-koden er verificeret for eventuelle sikkerhedsbrud.

Java kode kompilering og eksekvering i Java VM

Dernæst vil eksekveringsmotoren konvertere bytekoden til Native maskinkode. Dette er lige i tide at kompilere. Det er en af ​​hovedårsagerne Java er forholdsvis langsom.

Java kode kompilering og eksekvering i Java VM

BEMÆRK VENLIGST: JIT eller Just-in-time compiler er en del af Java Virtuel maskine (JVM). Det fortolker en del af bytekoden, der har lignende funktionalitet på samme tid.

Hvorfor er Java både fortolket og kompileret sprog?

Programmeringssprog klassificeres som

  • Sprog på højere niveau Eks. C++, Java
  • Sprog på mellemniveau Eks. C
  • Sprog på lavt niveau Eks Assembly
  • endelig det laveste niveau som Maskinsproget.

A compiler er et program, der konverterer et program fra et sprogniveau til et andet. Eksempel konvertering af C++ programmere ind i maskinkode. Java-kompileren konverterer java-kode på højt niveau til bytekode (som også er en type maskinkode).

An tolk er et program, der konverterer et program på ét niveau til et andet programmeringssprog på samme niveau. Eksempel konvertering af Java program ind C++

In Java, konverterer Just In Time Code-generatoren bytekoden til den oprindelige maskinkode, som er på de samme programmeringsniveauer.

derfor Java er både kompileret såvel som fortolket sprog.

Hvorfor er Java langsom?

De to hovedårsager bag langsomheden af Java er

  1. Dynamisk linking: I modsætning til C, sker linkning ved kørsel, hver gang programmet køres ind Java.
  2. Run-time Tolk: Konverteringen af ​​bytekode til indbygget maskinkode udføres ved run-time in Java hvilket yderligere sænker hastigheden

Men den seneste version af Java har i vid udstrækning adresseret flaskehalse i ydeevnen.

Resumé:

  • Fuld form for JVM er Java Virtuel maskine. JVM ind Java er den motor, der driver Java Kode. Det konverterer Java bytekode til maskinsprog.
  • JVM-arkitektur i Java indeholder klasseindlæser, hukommelsesområde, udførelsesmotor osv.
  • I JVM, Java kode kompileres til bytekode. Denne bytekode bliver fortolket på forskellige maskiner
  • JIT står for Just-in-time compiler. JIT er en del af Java Virtuel maskine (JVM). Det bruges til at fremskynde udførelsestiden
  • I sammenligning med andre compilermaskiner, JVM in Java kan være langsom i udførelse.