Hva er JVM? Java Virtuell maskin Architecture

Hva er JVM i Java?

Java Virtuell maskin (JVM) er en motor som gir driftsmiljรธ for รฅ drive Java Code eller applikasjoner. Den konverterer Java bytekode til maskinsprรฅk. JVM er en del av Java Runtime Environment (JRE). I andre programmeringssprรฅk produserer kompilatoren maskinkode for et bestemt system. Imidlertid Java kompilatoren produserer kode for en virtuell maskin kjent som Java Virtuell maskin.

Hvordan fungerer JVM?

Fรธrst Java kode er kompilert til bytekode. Denne bytekoden blir tolket pรฅ forskjellige maskiner. Mellom vertssystem og Java kilde, Bytecode er et mellomsprรฅk. JVM inn Java er ansvarlig for รฅ tildele minneplass.


Hvordan JVM fungerer
Arbeider av Java Virtuell maskin (JVM)

I denne JVM-opplรฆringen vil du lรฆre-

Architecture av JVM (Java virtuell maskin)

La oss nรฅ i denne JVM-opplรฆringen forstรฅ Architecture av JVM. JVM-arkitektur i Java inneholder klasselaster, minneomrรฅde, utfรธrelsesmotor etc.

 


JVM Architecture
Java Virtuell maskin Architecture

1) ClassLoader
Klasselasteren er et undersystem som brukes til รฅ laste klassefiler. Den utfรธrer tre hovedfunksjoner, nemlig. Lasting, kobling og initialisering.

2) Metodeomrรฅde
JVM Method Area lagrer klassestrukturer som metadata, den konstante kjรธretidspoolen og koden for metoder.

3) Haug
Alle Objekter, deres relaterte forekomstvariabler og matriser lagres i heapen. Dette minnet er felles og deles pรฅ tvers av flere trรฅder.

4) JVM-sprรฅkstabler
Java language Stacks lagrer lokale variabler, og det er delvise resultater. Hver trรฅd har sin egen JVM-stabel, opprettet samtidig som trรฅden opprettes. En ny ramme opprettes hver gang en metode pรฅkalles, og den slettes nรฅr metodeanropsprosessen er fullfรธrt.

5) PC-registre
PC-register lagrer adressen til Java virtuell maskininstruksjon som kjรธres for รธyeblikket. I Java, hver trรฅd har sitt separate PC-register.

6) Native metodestabler
Innfรธdte metodestabler inneholder instruksjonene for opprinnelig kode, avhenger av det opprinnelige biblioteket. Den er skrevet pรฅ et annet sprรฅk i stedet for Java.

7) Utfรธrelsesmotor
Det er en type programvare som brukes til รฅ teste maskinvare, programvare eller komplette systemer. Testutfรธrelsesmotoren inneholder aldri informasjon om det testede produktet.

8) Native Method-grensesnitt
Native Method Interface er et programmeringsrammeverk. Det tillater Java kode som kjรธrer i en JVM for รฅ ringe av biblioteker og native applikasjoner.

9) Native metodebiblioteker
Native Libraries er en samling av Native Libraries (C, C++) som trengs av utfรธrelsesmotoren.

Software Code Kompilerings- og utfรธrelsesprosess

For รฅ skrive og kjรธre et program trenger du fรธlgende

1) Redaktรธr โ€“ For รฅ skrive programmet inn i, kan en notisblokk brukes til dette

2) kompilatoren โ€“ For รฅ konvertere ditt hรธysprรฅklige program til innfรธdt maskinkode

3) Linker โ€“ For รฅ kombinere ulike programfilreferanser i hovedprogrammet sammen.

4) Laster โ€“ For รฅ laste filene fra din sekundรฆre lagringsenhet som harddisk, flash-stasjon, CD til RAM for kjรธring. Lastingen gjรธres automatisk nรฅr du kjรธrer koden.

5) Utfรธrelse โ€“ Faktisk utfรธrelse av koden som hรฅndteres av ditt operativsystem og prosessor.

Med denne bakgrunnen, se fรธlgende video og lรฆr JVM internt arbeid og arkitektur til JVM (Java virtuell maskin).

Klikk her. hvis videoen ikke er tilgjengelig

C-kode kompilering og utfรธrelsesprosess

For รฅ forstรฅ Java kompileringsprosess i Java. La oss fรธrst ta en rask titt pรฅ kompilerings- og koblingsprosessen i C.

Anta at du i hovedsak har kalt to funksjoner f1 og f2. Hovedfunksjonen er lagret i fil a1.c.

C-kode kompilering og utfรธrelsesprosess

Funksjon f1 er lagret i en fil a2.c

C-kode kompilering og utfรธrelsesprosess

Funksjon f2 er lagret i en fil a3.c

C-kode kompilering og utfรธrelsesprosess

Alle disse filene, dvs. a1.c, a2.c og a3.c, mates til kompilatoren. Hvis utdata er de tilsvarende objektfilene som er maskinkoden.

C-kode kompilering og utfรธrelsesprosess

Det neste trinnet er รฅ integrere alle disse objektfilene i en enkelt .exe-fil ved hjelp av linker. Linkeren vil samle alle disse filene og produserer .exe-filen.

C-kode kompilering og utfรธrelsesprosess

Under programkjรธring vil et loader-program laste a.exe inn i RAM for utfรธrelsen.

C-kode kompilering og utfรธrelsesprosess

Java kode kompilering og utfรธrelse i Java VM

Nรฅ i denne JVM-opplรฆringen, la oss se pรฅ prosessen for JAVA. I hovedsak har du to metoder f1 og f2.

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

Java kode kompilering og utfรธrelse i Java VM

Kompileren vil kompilere de tre filene og produserer 3 tilsvarende .class-filer som bestรฅr av BYTE-kode. I motsetning til C, gjรธres ingen kobling.

Ocuco Java VM eller Java Virtual Machine ligger pรฅ RAM. Under kjรธring, ved รฅ bruke klasselasteren, bringes klassefilene til RAM. BYTE-koden er verifisert for eventuelle sikkerhetsbrudd.

Java kode kompilering og utfรธrelse i Java VM

Deretter vil utfรธrelsesmotoren konvertere bytekoden til Native maskinkode. Dette er akkurat i tide kompilering. Det er en av hovedgrunnene til det Java er forholdsvis treg.

Java kode kompilering og utfรธrelse i Java VM

NOTAT: JIT eller Just-in-time kompilator er en del av Java Virtuell maskin (JVM). Den tolker deler av byten Code som samtidig har lignende funksjonalitet.

Hvorfor er Java bรฅde tolket og kompilert sprรฅk?

Programmerings sprรฅk er klassifisert som

  • Sprรฅk pรฅ hรธyere nivรฅ Eks. C++, Java
  • Sprรฅk pรฅ mellomnivรฅ Eks. C
  • Sprรฅk pรฅ lavt nivรฅ Eks Assembly
  • endelig det laveste nivรฅet som maskinsprรฅket.

A kompilatoren er et program som konverterer et program fra ett sprรฅknivรฅ til et annet. Eksempel konvertering av C++ programmer inn i maskinkode. Java-kompilatoren konverterer java-kode pรฅ hรธyt nivรฅ til bytekode (som ogsรฅ er en type maskinkode).

An tolk er et program som konverterer et program pรฅ ett nivรฅ til et annet programmeringssprรฅk pรฅ samme nivรฅ. Eksempel konvertering av Java program inn C++

In Java, Akkurat i tide Code generatoren konverterer bytekoden til den opprinnelige maskinkoden som er pรฅ samme programmeringsnivรฅer.

Derfor Java er bรฅde kompilert og tolket sprรฅk.

Hvorfor er Java langsom?

De to hovedรฅrsakene bak tregheten til Java er

  1. Dynamisk kobling: I motsetning til C, gjรธres koblingen ved kjรธretid, hver gang programmet kjรธres inn Java.
  2. Kjรธretidstolk: Konverteringen av bytekode til innebygd maskinkode gjรธres ved kjรธretid Java som ytterligere reduserer hastigheten

Imidlertid er den nyeste versjonen av Java har adressert flaskehalsene i ytelse i stor grad.

Sammendrag:

  • Full form for JVM er Java Virtuell maskin. JVM inn Java er motoren som driver Java Code. Den konverterer Java bytekode til maskinsprรฅk.
  • JVM-arkitektur i Java inneholder klasselaster, minneomrรฅde, utfรธrelsesmotor etc.
  • I JVM, Java kode kompileres til bytekode. Denne bytekoden blir tolket pรฅ forskjellige maskiner
  • JIT stรฅr for Just-in-time kompilator. JIT er en del av Java Virtuell maskin (JVM). Den brukes til รฅ fremskynde utfรธrelsestiden
  • Sammenlignet med andre kompilatormaskiner, JVM in Java kan vรฆre treg i utfรธrelse.

Oppsummer dette innlegget med: