JVM - Čo je Java Virtual Machine & jeho architektúra

Obsah:

Anonim

Čo je JVM?

Java Virtual Machine (JVM) je motor, ktorý poskytuje behové prostredie na pohon Java kódu alebo aplikácií. Konvertuje bajtový kód Java do jazyka strojov. JVM je súčasťou Java Run Environment (JRE). V iných programovacích jazykoch kompilátor produkuje strojový kód pre konkrétny systém. Kompilátor Java však produkuje kód pre virtuálny stroj známy ako Java Virtual Machine.

Takto funguje JVM

Najskôr sa kód Java spracuje na bytecode. Tento bytecode sa interpretuje na rôznych strojoch

Medzi hostiteľským systémom a zdrojom Java je Bytecode sprostredkovateľským jazykom.

JVM v Jave je zodpovedný za pridelenie pamäťového priestoru.

Pracovanie s Java Virtual Machine (JVM)

V tomto výučbe JVM sa naučíte -

  • Architektúra JVM
  • Proces kompilácie a vykonania softvérového kódu
  • Proces kompilácie a vykonania kódu C
  • Proces kompilácie a vykonania kódu Java
  • Prečo je Java interpretovaný aj kompilovaný jazyk?
  • Prečo je Java pomalá?

Architektúra JVM

Teraz v tomto výučbe JVM poďme pochopiť architektúru JVM. Architektúra JVM v Jave obsahuje classloader, pamäťovú oblasť, spúšťací engine atď.
Architektúra Java Virtual Machine

1) ClassLoader

Class loader je subsystém používaný na načítanie súborov triedy. Vykonáva tri hlavné funkcie, tj. Načítanie, prepojenie a inicializácia.

2) Oblasť metódy

Oblasť metódy JVM ukladá štruktúry tried, ako sú metadáta, fond neustáleho behu, a kód metód.

3) Hromada

Všetky objekty, ich súvisiace premenné inštancie a polia sú uložené v halde. Táto pamäť je spoločná a je zdieľaná vo viacerých vláknach.

4) Stohy jazyka JVM

Zásobníky jazyka Java ukladajú miestne premenné a sú to čiastočné výsledky. Každé vlákno má svoj vlastný zásobník JVM, ktorý sa vytvára súčasne s vytváraním vlákna. Nový rámec sa vytvorí vždy, keď sa vyvolá metóda, a po dokončení procesu vyvolania metódy sa vymaže.

5) Registre PC

Register PC ukladá adresu aktuálne vykonávanej inštrukcie virtuálneho stroja Java. V prostredí Java má každé vlákno samostatný register PC.

6) Zásobníky natívnej metódy

V zásobníkoch natívnej metódy je uložená inštrukcia natívneho kódu, ktorá závisí od natívnej knižnice. Je napísaný v inom jazyku ako v jazyku Java.

7) Execution Engine

Je to typ softvéru, ktorý sa používa na testovanie hardvéru, softvéru alebo kompletných systémov. Stroj na vykonávanie testu nikdy neprináša žiadne informácie o testovanom produkte.

8) Rozhranie natívnej metódy

Rozhranie natívnej metódy je programovací rámec. Umožňuje kódu Java spustenému v prostredí JVM volať knižnice a natívne aplikácie.

9) Knižnice natívnych metód

Native Libraries je kolekcia natívnych knižníc (C, C ++), ktoré sú potrebné pre procesor Execution Engine.

Proces kompilácie a vykonania softvérového kódu

Na napísanie a vykonanie softvérového programu potrebujete nasledujúce

1) Editor - na napísanie programu je možné použiť poznámkový blok

2) Kompilátor - na konverziu vášho vysokojazyčného programu na natívny strojový kód

3) Linker - na kombinovanie odkazov na rôzne programové súbory vo vašom hlavnom programe.

4) Loader - Ak chcete načítať súbory z vášho sekundárneho úložného zariadenia, ako je Hard Disk, Flash Drive, CD, do RAM na vykonanie. Načítanie sa vykoná automaticky, keď spustíte kód.

5) Spustenie - skutočné spustenie kódu, ktorý spracováva váš operačný systém a procesor.

Na tomto pozadí si pozrite nasledujúce video a naučte sa internú prácu a architektúru JVM JVM (Java Virtual Machine).

Ak video nie je prístupné, kliknite sem

Proces kompilácie a vykonania kódu C

Porozumieť procesu kompilácie Javy v Jave. Poďme sa najskôr rýchlo pozrieť na proces kompilácie a prepojenia v C.

Predpokladajme, že v hlavnej časti ste volali dve funkcie f1 a f2. Hlavná funkcia je uložená v súbore a1.c.

Funkcia f1 je uložená v súbore a2.c

Funkcia f2 je uložená v súbore a3.c

Všetky tieto súbory, tj. A1.c, a2.c a a3.c, sa načítajú do kompilátora. Ich výstupom sú príslušné súbory objektov, ktoré sú strojovým kódom.

Ďalším krokom je integrácia všetkých týchto súborov objektov do jedného súboru .exe pomocou nástroja linker. Linker spojí všetky tieto súbory dohromady a vytvorí súbor .exe.

Počas behu programu zavádza program načítanie a.exe do RAM na vykonanie.

Kompilácia a spustenie kódu Java v prostredí Java VM

Teraz sa v tomto výučbe JVM pozrime na postup pre JAVA. Vo svojom hlavnom nastavení máte dve metódy f1 a f2.

  • Hlavná metóda je uložená v súbore a1.java
  • f1 je uložený v súbore ako a2.java
  • f2 je uložená v súbore ako a3.java

Kompilátor skompiluje tri súbory a vytvorí 3 zodpovedajúce súbory .class, ktoré sa skladajú z kódu BYTE. Na rozdiel od C sa neprepojuje .

Java VM alebo Java Virtual Machine je uložený v RAM. Počas vykonávania pomocou zavádzača tried sa súbory triedy prenesú do pamäte RAM. Kód BYTE sa overuje na prípadné narušenie bezpečnosti.

Ďalej vykonávací modul prevedie Bytecode na natívny strojový kód. Toto je čas zostaviť. Je to jeden z hlavných dôvodov, prečo je Java pomerne pomalá.

POZNÁMKA: Kompilátor JIT alebo Just-in-time je súčasťou Java Virtual Machine (JVM). Tlmočí časť bajtového kódu, ktorá má súčasne podobnú funkčnosť.

Prečo je Java interpretovaný aj kompilovaný jazyk?

Programovacie jazyky sú klasifikované ako
  • Jazyk na vyššej úrovni Ex. C ++, Java
  • Jazyky strednej úrovne Pr. C.
  • Zostava jazyka na nízkej úrovni
  • nakoniec najnižšia úroveň ako strojový jazyk.

Kompilátor je program, ktorý prevádza program z jednej úrovne jazyka do druhého. Príklad prevodu programu C ++ na strojový kód.

Kompilátor java prevádza vysokoúrovňový java kód do bytecode (čo je tiež typ strojového kódu).

Interpret je program, ktorý prevádza program na jednej úrovne do iného programovacieho jazyka na rovnakej úrovni. Príklad prevodu programu Java do C ++

V Jave generátor kódu Just In Time prevádza bytový kód na natívny strojový kód, ktorý je na rovnakej programovacej úrovni.

Preto je Java kompilovaný aj interpretovaný jazyk.

Prečo je Java pomalá?

Dva hlavné dôvody spomalenia Javy sú

  1. Dynamické prepojenie: Na rozdiel od C sa prepojenie vykonáva za behu programu, vždy, keď je program spustený v prostredí Java.
  2. Run-time Interpreter: Prevod bajtového kódu na natívny strojový kód sa vykonáva za behu programu v Jave, čo ďalej spomaľuje rýchlosť

Najnovšia verzia Java však do veľkej miery riešila úzke miesta v oblasti výkonu.

Zhrnutie :

  • Plnou formou JVM je Java Virtual Machine. JVM v Jave je motor, ktorý poháňa Java kód. Konvertuje bajtový kód Java do jazyka strojov.
  • Architektúra JVM v Jave obsahuje classloader, pamäťovú oblasť, spúšťací engine atď.
  • V JVM je kód Java skompilovaný do bajtkódu. Tento bytecode sa interpretuje na rôznych strojoch
  • JIT znamená kompilátor Just-in-time. JIT je súčasťou Java Virtual Machine (JVM). Používa sa na urýchlenie času vykonania
  • V porovnaní s inými kompilačnými strojmi môže byť JVM v jazyku Java pomalý pri vykonávaní.