JVM - Hvad er Java Virtual Machine & dens arkitektur

Indholdsfortegnelse:

Anonim

Hvad er JVM?

Java Virtual Machine (JVM) er en motor, der giver runtime-miljø til at køre Java-koden eller applikationerne. Det konverterer Java bytecode til maskinens sprog. JVM er en del af Java Run Environment (JRE). I andre programmeringssprog producerer kompilatoren maskinkode til et bestemt system. Imidlertid producerer Java-kompilator kode til en virtuel maskine kendt som Java Virtual Machine.

Sådan fungerer JVM

For det første overholdes Java-kode i bytekode. Denne bytecode fortolkes på forskellige maskiner

Mellem værtssystem og Java-kilde er Bytecode et mellemliggende sprog.

JVM i Java er ansvarlig for tildeling af hukommelsesplads.

Arbejde med Java Virtual Machine (JVM)

I denne JVM-tutorial lærer du-

  • JVM-arkitektur
  • Software kodekompilering og udførelsesproces
  • C-kode Kompilering og udførelsesproces
  • Java-kode kompilering og udførelsesproces
  • Hvorfor fortolkes Java både som kompileret sprog?
  • Hvorfor er Java langsom?

JVM-arkitektur

Lad os nu forstå JVM's arkitektur i denne JVM-tutorial. JVM-arkitektur i Java indeholder classloader, hukommelsesområde, udførelsesmotor osv.
Java Virtual Machine Architecture

1) ClassLoader

Klasselæsseren er et undersystem, der bruges til at indlæse klassefiler. Det udfører tre hovedfunktioner, nemlig. Indlæsning, sammenkædning og initialisering.

2) Metodeområde

JVM Method Area gemmer klassestrukturer som metadata, den konstante runtime-pool og koden til metoder.

3) Bunke

Alle objekterne, deres relaterede instansvariabler og arrays gemmes i bunken. Denne hukommelse er almindelig og deles på tværs af flere tråde.

4) JVM-sprogstakke

Java-sprogstakke gemmer lokale variabler, og det er delvise resultater. Hver tråd har sin egen JVM-stak, der oprettes samtidigt, når tråden oprettes. En ny ramme oprettes, hver gang en metode påberåbes, og den slettes, når fremgangsmåden til påkaldelse er afsluttet.

5) PC-registre

PC-register gemmer adressen på den Java-virtuelle maskineinstruktion, der i øjeblikket udføres. I Java har hver tråd sit separate pc-register.

6) Indfødte metode stakke

Indfødte metode stakke holder instruktionen om native kode afhænger af det oprindelige 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 oplysninger om det testede produkt.

8) Grænseflade Native Method

Native Method Interface er en programmeringsramme. Det gør det muligt for Java-kode, der kører i en JVM, at kalde op af biblioteker og indfødte applikationer.

9) Native Method Biblioteker

Indfødte biblioteker er en samling af indfødte biblioteker (C, C ++), som er nødvendige af udførelsesmotoren.

Software kodekompilering og udførelsesproces

For at kunne skrive og udføre et softwareprogram har du brug for følgende

1) Editor - Hvis du vil skrive dit program i, kan en notesblok bruges til dette

2) Compiler - For at konvertere dit højsprogsprogram til native maskinkode

3) Linker - For at kombinere forskellige programfilreferencer i dit hovedprogram sammen.

4) Loader - For at indlæse filerne fra din sekundære lagerenhed som harddisk, Flash Drive, CD i RAM til udførelse. Indlæsningen udføres automatisk, når du udfører din kode.

5) Udførelse - Faktisk udførelse af den kode, der håndteres af dit operativsystem og din processor.

Med denne baggrund henvises til følgende video og lærer JVM's interne arbejde og arkitektur for JVM (Java Virtual Machine).

Klik her, hvis videoen ikke er tilgængelig

C-kode Kompilering og udførelsesproces

At forstå Java-kompileringsprocessen i Java. Lad os først se hurtigt på kompilering og sammenkædningsproces i C.

Antag, at du i det væsentlige har kaldt to funktioner f1 og f2. Hovedfunktionen er gemt i fil a1.c.

Funktion f1 er gemt i en fil a2.c

Funktion f2 er gemt i en fil a3.c

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

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

Under programkørsel vil et loader-program indlæse a.exe i RAM'en til udførelse.

Java-kodekompilering og -udførelse i Java VM

Nu i denne JVM-tutorial, lad os se på processen for JAVA. I det væsentlige har du to metoder f1 og f2.

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

Compileren kompilerer de tre filer og producerer 3 tilsvarende .class-filer, der består af BYTE-kode. I modsætning til C sker der ingen sammenkædning .

Java VM eller Java Virtual Machine findes på RAM'en. Under udførelsen med klasselæsseren bringes klassefilerne på RAM'en. BYTE-koden er verificeret for eventuelle sikkerhedsbrud.

Derefter konverterer eksekveringsmotoren Bytecode til Native maskinkode. Dette er lige i tide at kompilere. Det er en af ​​hovedårsagerne til, at Java er forholdsvis langsom.

BEMÆRK: JIT eller Just-in-time compiler er den del af Java Virtual Machine (JVM). Det fortolker en del af Byte-koden, der har lignende funktionalitet på samme tid.

Hvorfor er Java både fortolket og kompileret sprog?

Programmeringssprog er klassificeret som
  • Sprog på højere niveau Ex. C ++, Java
  • Sprog på mellemniveau Ex. C
  • Low-Level Language Ex Assembly
  • endelig det laveste niveau som maskinsproget.

En kompilator er et program, der konverterer et program fra et sprogniveau til et andet. Eksempel på konvertering af C ++ - program til maskinkode.

Java-kompilatoren konverterer Java-kode på højt niveau til bytekode (som også er en type maskinkode).

En tolk er et program, der konverterer et program på et niveau til et andet programmeringssprog på samme niveau. Eksempel på konvertering af Java-program til C ++

I Java konverterer Just In Time Code-generatoren bytekoden til den oprindelige maskinkode, som har de samme programmeringsniveauer.

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

Hvorfor er Java langsom?

De to hovedårsager til Java's langsommelighed er

  1. Dynamisk sammenkædning: I modsætning til C udføres sammenkædning ved kørselstid, hver gang programmet køres i Java.
  2. Køretidstolk: Konvertering af bytekode til indbygget maskinkode udføres ved kørselstid i Java, hvilket fremmer hastigheden

Den nyeste version af Java har dog i høj grad adresseret flaskehalse i ydeevnen.

Resume :

  • Fuld form for JVM er Java Virtual Machine. JVM i Java er den motor, der driver Java-koden. Det konverterer Java bytecode til maskinens sprog.
  • JVM-arkitektur i Java indeholder classloader, hukommelsesområde, udførelsesmotor osv.
  • I JVM kompileres Java-kode til bytekode. Denne bytecode fortolkes på forskellige maskiner
  • JIT står for Just-in-time compiler. JIT er den del af Java Virtual Machine (JVM). Det bruges til at fremskynde udførelsestiden
  • Sammenlignet med andre kompilermaskiner kan JVM i Java udføre langsomt.