Što je JVM? Java Virtualni stroj Architektura

U čemu je JVM Java?

Java Virtualni stroj (JVM) je motor koji pruža okruženje za rad Java Kod ili aplikacije. Preobraća se Java bajt kod u strojni jezik. JVM je dio Java Runtime Environment (JRE). U drugim programskim jezicima, prevodilac proizvodi strojni kod za određeni sustav. Međutim, Java kompajler proizvodi kod za virtualni stroj poznat kao Java Virtualni stroj.

Kako radi JVM?

Prvo, Java kod se kompajlira u bajt kod. Ovaj bajt kod se tumači na različitim strojevima. Između glavnog sustava i Java izvora, bajt kod je posrednički jezik. JVM u Java odgovoran je za dodjelu memorijskog prostora.


Kako radi JVM
Rad od Java Virtualni stroj (JVM)

U ovom vodiču za JVM naučit ćete-

Archistruktura JVM (Java virtualni stroj)

Sada u ovom JVM vodiču, shvatimo Architekstura JVM-a. JVM arhitektura u Java sadrži class loader, memorijsko područje, izvršni mehanizam itd.

 


JVM Architektura
Java Virtualni stroj Architektura

1) Učitavač klasa
Učitavač klase je podsustav koji se koristi za učitavanje datoteka klase. Obavlja tri glavne funkcije, tj. Učitavanje, povezivanje i inicijalizacija.

2) Područje metode
Područje metoda JVM-a pohranjuje strukture klasa poput metapodataka, stalnog skupa vremena izvođenja i koda za metode.

3) Hrpa
Sve objekti, njihove povezane varijable instance i nizovi pohranjeni su u gomilu. Ova memorija je zajednička i dijeli se na više niti.

4) JVM jezični nizovi
Java jezik Stogovi pohranjuju lokalne varijable i to su djelomični rezultati. Svaka nit ima vlastiti JVM stog, kreiran istovremeno s kreiranjem niti. Novi okvir se stvara svaki put kada se pozove metoda, a briše se po dovršetku procesa pozivanja metode.

5) PC registri
PC registar pohranjuje adresu Java instrukcija virtualnog stroja koja se trenutno izvršava. U Java, svaka nit ima svoj zasebni PC registar.

6) Native Method Stacks
Stogovi izvornih metoda drže instrukcije izvornog koda ovise o izvornoj knjižnici. Napisano je na drugom jeziku umjesto Java.

7) Izvršni motor
To je vrsta softvera koji se koristi za testiranje hardvera, softvera ili kompletnih sustava. Motor za izvođenje testa nikada ne nosi nikakve informacije o testiranom proizvodu.

8) Sučelje izvorne metode
Sučelje izvorne metode programski je okvir. Dopušta Java kod koji se izvodi u JVM-u za pozivanje biblioteka i izvornih aplikacija.

9) Knjižnice izvornih metoda
Native Libraries zbirka je Native Libraries(C, C++) koji su potrebni izvršnom mehanizmu.

Proces kompilacije i izvođenja softverskog koda

Kako biste napisali i izvršili softverski program, potrebno vam je sljedeće

1) Urednik – Da biste utipkali svoj program, možete koristiti bilježnicu

2) kompajler – Za pretvaranje vašeg programa visokog jezika u izvorni strojni kod

3) Povezivač – Za kombiniranje različitih referenci programskih datoteka u vašem glavnom programu.

4) Utovarivač – Za učitavanje datoteka s vašeg sekundarnog uređaja za pohranu poput tvrdog diska, Flash pogona, CD-a u RAM za izvođenje. Učitavanje se automatski vrši kada izvršite svoj kod.

5) Izvršenje – Stvarno izvršenje koda kojim rukuje vaš OS i procesor.

Uz ovu pozadinu, pogledajte sljedeći video i naučite JVM interni rad i arhitekturu JVM (Java Virtualni stroj).

Kliknite ovdje ako video nije dostupan

Proces kompilacije i izvođenja C koda

Da se razumijemo Java proces sastavljanja u Java. Prvo bacimo brzi pogled na proces kompajliranja i povezivanja u C-u.

Pretpostavimo da ste uglavnom pozvali dvije funkcije f1 i f2. Glavna funkcija je pohranjena u datoteci a1.c.

Proces kompilacije i izvođenja C koda

Funkcija f1 pohranjena je u datoteci a2.c

Proces kompilacije i izvođenja C koda

Funkcija f2 pohranjena je u datoteci a3.c

Proces kompilacije i izvođenja C koda

Sve te datoteke, tj. a1.c, a2.c i a3.c, šalju se prevoditelju. Čiji su izlaz odgovarajuće objektne datoteke koje su strojni kod.

Proces kompilacije i izvođenja C koda

Sljedeći korak je integracija svih ovih objektnih datoteka u jednu .exe datoteku uz pomoć povezivača. Povezivač će spojiti sve ove datoteke i proizvesti .exe datoteku.

Proces kompilacije i izvođenja C koda

Tijekom izvođenja programa, program za učitavanje će učitati a.exe u RAM za izvršenje.

Proces kompilacije i izvođenja C koda

Java kompilacija i izvođenje koda u Java VM

Sada u ovom JVM vodiču, pogledajmo proces za JAVA. U vašem glavnom, imate dvije metode f1 i f2.

  • Glavna metoda je pohranjena u datoteci a1.java
  • f1 je pohranjen u datoteci kao a2.java
  • f2 je pohranjen u datoteci kao a3.java

Java kompilacija i izvođenje koda u Java VM

Kompajler će prevesti tri datoteke i proizvesti 3 odgovarajuće .class datoteke koje se sastoje od BYTE koda. Za razliku od C-a, nema povezivanja.

The Java VM ili Java Virtualni stroj se nalazi na RAM-u. Tijekom izvođenja, korištenjem učitavača klase datoteke klase se unose u RAM. BYTE kod se provjerava za bilo kakve povrede sigurnosti.

Java kompilacija i izvođenje koda u Java VM

Zatim će izvršni mehanizam pretvoriti bajt kod u izvorni strojni kod. Ovo je upravo na vrijeme za sastavljanje. To je jedan od glavnih razloga zašto Java je relativno sporo.

Java kompilacija i izvođenje koda u Java VM

NAPOMENA: JIT ili Just-in-time kompajler je dio Java Virtualni stroj (JVM). On tumači dio bajt koda koji ima sličnu funkcionalnost u isto vrijeme.

Zašto je Java i interpretirani i kompilirani jezik?

Programski jezici su klasificirani kao

  • Jezik više razine Npr. C++, Java
  • Jezici srednje razine Npr. C
  • Jezik niske razine Npr Assembly
  • konačno najniža razina kao strojni jezik.

A kompajler je program koji pretvara program s jedne razine jezika na drugu. Primjer pretvorbe C++ programirati u strojni kod. Java prevoditelj pretvara Java kod visoke razine u bajt kod (koji je također vrsta strojnog koda).

An tumač je program koji pretvara program na jednoj razini u drugi programski jezik na ista razina. Primjer pretvorbe Java programirati u C++

In Java, Generator Just In Time Code pretvara bajt kod u izvorni strojni kod koji je na istim programskim razinama.

Stoga, Java je i kompilirani i interpretirani jezik.

Zašto je Java usporiti?

Dva su glavna razloga za sporost Java ima

  1. Dinamičko povezivanje: Za razliku od C-a, povezivanje se vrši u vrijeme izvođenja, svaki put kada se program pokrene Java.
  2. Tumač za vrijeme izvođenja: Pretvorba bajt koda u izvorni strojni kod vrši se za vrijeme izvođenja u Java što dodatno usporava brzinu

Međutim, najnovija verzija Java je u velikoj mjeri riješio uska grla u izvedbi.

Rezime:

  • Puni oblik JVM-a je Java Virtualni stroj. JVM u Java je motor koji pokreće Java Kodirati. Preobraća se Java bajt kod u strojni jezik.
  • JVM arhitektura u Java sadrži class loader, memorijsko područje, izvršni mehanizam itd.
  • U JVM, Java kod je kompajliran u bajt kod. Ovaj bajt kod se tumači na različitim strojevima
  • JIT je kratica za Just-in-time compiler. JIT je dio Java Virtualni stroj (JVM). Koristi se za ubrzavanje vremena izvršenja
  • U usporedbi s drugim strojevima za prevođenje, JVM in Java može biti sporo u izvršenju.