JVM - Što je Java virtualni stroj & njegova Arhitektura

Sadržaj:

Anonim

Što je JVM?

Java virtualni stroj (JVM) je mehanizam koji pruža runtime okruženje za pogon Java koda ili aplikacija. Pretvara Java bajtkod u jezik strojeva. JVM je dio Java Run Environment (JRE). U drugim programskim jezicima, kompajler proizvodi strojni kod za određeni sustav. Međutim, Java kompajler proizvodi kod za virtualni stroj poznat kao Java virtualni stroj.

Evo kako JVM radi

Prvo se Java kôd uklapa u bytecode. Ovaj se bytecode tumači na različitim strojevima

Između glavnog sustava i Java izvora, Bytecode je posrednički jezik.

JVM u Javi odgovoran je za dodjelu memorijskog prostora.

Rad Java virtualnog stroja (JVM)

U ovom JVM tutorialu naučit ćete-

  • JVM Arhitektura
  • Proces sastavljanja i izvršavanja softverskog koda
  • Proces sastavljanja i izvršavanja C koda
  • Proces sastavljanja i izvršavanja Java koda
  • Zašto se Java tumači i kompajlira jezik?
  • Zašto je Java spora?

JVM Arhitektura

Sada u ovom JVM vodiču, shvatimo Arhitekturu JVM-a. JVM arhitektura u Javi sadrži učitavač razreda, područje memorije, izvršni mehanizam itd.
Java arhitektura virtualnog stroja

1) ClassLoader

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

2) Područje metode

JVM Method Area pohranjuje strukture klasa poput metapodataka, konstantnog spremišta vremena izvođenja i koda za metode.

3) Gomila

Svi objekti, njihove povezane varijable instance i nizovi pohranjeni su u hrpi. Ova je memorija uobičajena i dijeli se u više niti.

4) JVM jezični stogovi

Java jezični stogovi pohranjuju lokalne varijable i to su djelomični rezultati. Svaka nit ima svoj vlastiti JVM stog, stvoren istovremeno kada se nit stvara. Novi okvir stvara se kad god se metoda pozove i briše se kada je postupak pozivanja metode završen.

5) PC registri

PC registar pohranjuje adresu instrukcije Java virtualnog stroja koja se trenutno izvršava. U Javi svaka nit ima svoj zasebni PC registar.

6) Nativni stogovi metoda

Izvorni stogovi metoda sadrže upute izvornog koda koji ovisi o izvornoj knjižnici. Napisan je na drugom jeziku umjesto na Javi.

7) Izvršni motor

To je vrsta softvera koji se koristi za testiranje hardvera, softvera ili kompletnih sustava. Stroj za izvršavanje ispitivanja nikada ne sadrži nikakve informacije o testiranom proizvodu.

8) Sučelje izvorne metode

Sučelje izvorne metode programski je okvir. Omogućuje Java kôd koji je pokrenut u JVM-u da ga pozivaju knjižnice i matične aplikacije.

9) Knjižnice izvornih metoda

Native Libraries je zbirka Native Libraries (C, C ++) koje su potrebne izvršnom stroju.

Proces sastavljanja i izvršavanja softverskog koda

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

1) Uređivač - za upisivanje programa u to se može koristiti bilježnica

2) Prevoditelj - za pretvorbu programa na visokom jeziku u izvorni strojni kod

3) Linker - za kombiniranje različitih referenci programskih datoteka u vašem glavnom programu.

4) Utovarivač - za učitavanje datoteka sa vašeg sekundarnog uređaja za pohranu poput tvrdog diska, bljeskalice ili CD-a u RAM za izvršenje. Učitavanje se vrši automatski kada izvršite svoj kôd.

5) Izvršenje - Stvarno izvršavanje koda kojim upravlja vaš OS i procesor.

S ovom pozadinom pogledajte sljedeći videozapis i naučite interni rad i arhitekturu JVM-a JVM (Java virtualni stroj).

Kliknite ovdje ako videozapis nije dostupan

Proces sastavljanja i izvršavanja C koda

Da biste razumjeli postupak kompajliranja Java u Javi. Krenimo najprije na brzinu sastavljanja i povezivanja u C.

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

Funkcija f1 pohranjena je u datoteci a2.c

Funkcija f2 pohranjena je u datoteci a3.c

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

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

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

Kompilacija i izvršavanje Java koda u Java VM

Sada u ovom JVM vodiču, pogledajmo postupak za JAVA. U glavnom, imate dvije metode f1 i f2.

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

Prevoditelj će sastaviti tri datoteke i stvoriti 3 odgovarajuće .class datoteke koja se sastoji od BYTE koda. Za razliku od C, ne vrši se povezivanje .

Java VM ili Java virtualni stroj nalazi se u RAM-u. Tijekom izvršavanja, pomoću učitavača klasa datoteke klase se prenose u RAM. BYTE kôd je provjeren za bilo kakve sigurnosne povrede.

Dalje, izvršni mehanizam pretvorit će bytecode u izvorni strojni kôd. Ovo je upravo na vrijeme sastavljanje. To je jedan od glavnih razloga zašto je Java usporeno spora.

NAPOMENA: JIT ili Just-in-time compiler dio je Java virtualnog stroja (JVM). On istovremeno tumači dio bajt koda koji ima sličnu funkcionalnost.

Zašto je Java i interpretirani i kompajlirani jezik?

Programski jezici klasificirani su kao
  • Jezik više razine Pr. C ++, Java
  • Jezici srednje razine Pr. C
  • Biblijski jezik na niskoj razini
  • napokon najniža razina kao Strojni jezik.

Prevodilac je program koji pretvara program iz jedne razine jezika u drugi. Primjer pretvorbe programa C ++ u strojni kod.

Java kompajler pretvara java kod visoke razine u bytecode (koji je također vrsta strojnog koda).

Tumač je program koji pretvara program na jednoj razini u drugi programski jezik na istoj razini. Primjer pretvorbe Java programa u C ++

U Javi generator Just In Time Code pretvara bajt kod u izvorni strojni kôd koji je na istim programskim razinama.

Stoga je Java i kompajliran i interpretiran jezik.

Zašto je Java spora?

Dva su glavna razloga sporosti Java

  1. Dinamično povezivanje: Za razliku od C, povezivanje se vrši u vrijeme izvođenja, svaki put kad se program pokrene na Javi.
  2. Interpretator vremena izvođenja: Pretvorba bajt koda u izvorni strojni kôd vrši se za vrijeme izvođenja u Javi, što dodatno usporava brzinu

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

Sažetak :

  • Puni oblik JVM-a je Java virtualni stroj. JVM u Javi je motor koji pokreće Java kôd. Pretvara Java bajtkod u jezik strojeva.
  • JVM arhitektura u Javi sadrži učitavač razreda, područje memorije, izvršni mehanizam itd.
  • U JVM-u, Java kôd se kompajlira u bytecode. Ovaj se bytecode tumači na različitim strojevima
  • JIT je skraćenica za Just-in-time compiler. JIT je dio Java Virtual Machine (JVM). Koristi se za ubrzavanje vremena izvršenja
  • U usporedbi s drugim strojevima za kompajliranje, JVM u Javi može biti spor u izvršenju.