Čo je JVM?

JVM je špecifikácia, v ktorej je špecificky opísaná funkcia Java Virtual Machine. Algoritmus je však nezávislá identita, ktorú si vyberá iba poskytovateľ implementácie, ako je Oracle a ďalšie renomované spoločnosti. JVM je implementácia známa ako Java Runtime Environment (JRE).

definícia

Je definovaný ako popis softvérového programu ponúkajúceho runtime prostredie pre kód a jeho významné vykonanie. Inými slovami, takto spúšťame Java programy - konfigurujeme nastavenia JVM a spoliehame sa na to, že počas procesu vykonávania sa s programovými prostriedkami vyrovnajú.

porozumenie

Java je známa ako platformovo nezávislá vďaka Java Virtual Machine. Ak sa odovzdanie uskutoční na rôznych počítačoch s rôznym operačným systémom, ktorý má JVM, bajtový kód sa interpretuje do jazyka strojovej úrovne pomocou JVM. Presnejšie povedané, programy JVM sú napísané v programovacom jazyku C, zatiaľ čo JVM je nezávislé na operačnom systéme. Je kľúčovou súčasťou architektúry Java.

Okrem toho je zodpovedný za priradenie základnej pamäte vyžadovanej programom Java. Je tiež zodpovedný za zákaz pamäťového priestoru.

Čo to robí?

Kľúčové operácie, ktoré vykonáva JVM, sú tieto:

  • Načítanie kódu
  • Overenie kódu
  • Vykonanie kódu
  • Poskytovanie prostredia za behu

Okrem toho všetko zavádza klasifikácie pre formát súborov triedy, oblasť pamäte, haldy zozbierané odpadky, sadu registrov, hlásenie závažných chýb atď.

Architektúra JVM

Pozrime sa na niekoľko dôležitých poznatkov o vnútornej architektúre JVM, ktorá pozostáva z:

1. Triedič nakladačov

Je to podsystém JVM používaný na načítanie súborov triedy. Pri spustení programu java sa tento program načíta najskôr pomocou nástroja loadloader. Tri triedy loadery, ktoré Java obsahuje, sú nasledujúce:

a) Bootstrap ClassLoader

Je to nadtrieda Classloader rozšírenia. Pomáha pri načítaní súborov rt.jar, ktoré nesú všetky súbory triedy.

b) Rozšírenie ClassLoader

Je to nadradený classloader systému classloader a podradený classloader Bootstrapu. Súbory jar v adresári $ JAVA_HOME / jre / lib / ext je možné extrahovať prostredníctvom Extension ClassLoader.

C) Systémový / aplikačný ClassLoader

Je to dieťa triedy Classloader Extension, známe tiež ako Application classloader. Súbory triedy z cesty triedy sa dajú extrahovať. Cesta triedy, ktorá je nastavená na aktuálny adresár, sa dá predvolene zmeniť pomocou prepínača '-cp' alebo '-classpath'.

2.Trieda triedy (metóda)

Štruktúry predtried, ako sú údaje o poliach a metódach, oblasť runtime konštánt a kód pre metódy, sú uložené v oblasti triedy (metódy). Je to pamäť, ktorá je vytvorená pri štarte JVM a je zdieľaná medzi všetkými vláknami ako Heap.

3. Halda

Objekty sú priradené prostredníctvom tejto užitočnej oblasti údajov o runtime. Je to pamäťové miesto na ukladanie objektov spolu s premennými inštancie. Kedykoľvek je objekt vytvorený v Jave, ide do haldy - do oblasti pamäte.

4. Zásobník

Spolu s ukladaním rámcov obsahuje Java Stack premenné a čiastkové výsledky. Hrá tiež kľúčovú úlohu v metóde, vyvolávaní a návrate. Každé jednotlivé vlákno sa skladá z jeho súkromného zásobníka JVM, vytvoreného v rovnakom čase ako vlákno. Vždy, keď sa metóda eskaluje, vygeneruje sa nový rámec a po dokončení vyvolania metódy sa rozbije.

5. Registrácia počítadla programov (PC)

Register PC obsahuje adresu inštrukcie JVM v čase jej vykonania. Sledovanie inštrukcií má hodnotu pre každú inštrukciu, ktorá nie je definovaná pre natívne metódy.

6. Zásobník natívnych metód

Natívne postupy používané v aplikáciách sú súčasťou súboru Native Method Stack. Tieto metódy sú napísané v iných jazykoch ako Java. Implementácie JVM, spojené s každým vláknom, sa nemôžu spoliehať na konvenčné zásobníky a nemôžu načítať natívne metódy. Presnejšie povedané, je podobný stohu, ale používa sa pri natívnych metódach.

7. Motor

Keďže je kľúčovým aspektom JVM, komunikuje so svojimi rôznymi pamäťovými oblasťami. Toto zahŕňa:

a. Smetiar

To hrá zásadnú úlohu v systéme riadenia dynamickej pamäte JVM. Pamäť, ktorá je obsadená a už na ne nie je uvedený žiaden z prístupných objektov Java, sa uvoľní prostredníctvom zberača odpadu.

b. Tlmočník

Vykonáva pokyny po prečítaní toku bajtkódu.

c. Kompilátor Just-In-Time (JIT)

Kompilátor JIT, ktorý umožňuje zvýšenie výkonu, kompiluje časti bajtkódu s podobnou funkciou súčasne. Pomáha znižovať množstvo času potrebného na proces kompilácie.

8. Natívne rozhranie Java (JNI)

K aplikáciám skriptovaným v iných jazykoch, napr. C, C ++, Assembly atď., Je možné sa pripojiť prostredníctvom rozhrania dodávaného JNI. Framework JNI používa Java na interakciu s knižnicami OS alebo na odoslanie výstupu do konzoly.

Aké je použitie JVM?

JVM má dve primárne funkcie: umožniť programom Java spúšťať sa na akomkoľvek zariadení alebo operačnom systéme (známy ako princíp „Raz raz spustiť kdekoľvek“) a spravovať a optimalizovať programovú pamäť.

Výhody a nevýhody

Programy Java sa vhodne vykonávajú prostredníctvom JVM. Bytecode - stredný jazyk sa používa na kompilovanie programov Java a potom sa vykonáva prostredníctvom JVM. Každý jednotlivý program, ktorý je kompilovaný do bajtkódu, môže byť vykonaný akoukoľvek platformou podporovanou JVM. Toto umožňuje softvéru Java efektívnejšie a kompatibilnejšie podľa rôznych výpočtových platforiem. JVM má niekoľko významných výhod a nevýhod, ktoré by mal každý vývojár pred investovaním do vývoja Java starostlivo zvážiť.

1. Bezpečnosť

Prostredníctvom bezpečnostných kľúčov JVM môžu programátori efektívne vytvárať špičkové zabezpečené programy Java. Oprávňuje prostriedky operačného systému na identifikáciu škodlivého softvéru a podľa toho pomáha v prevencii.

2. Výkon

Programy Java, ktoré bežia na JVM, pravdepodobne ponúkajú pomalšie vykonávanie v porovnaní s programami napísanými v C ++. Je to kvôli optimalizácii kódu, ktorá sa nadmerne spolieha na rôzne špecifické vlastnosti systému. Bajtový kód Java tiež nie je možné optimalizovať pre konkrétny hardvérový súbor, pretože je systémovo neutrálny.

3. Správnosť

Správny je program, ktorý funguje efektívne a čo najlepšie naplní očakávania používateľa. Vstavané funkcie JVM mu umožňujú pracovať správne a bez chýb.

Prečo by sme mali používať JVM?

Napriek tomu, že má Java syntaktický kód, JVM môže bežať na rôznych jazykových programoch. Nižšie je uvedených niekoľko dôvodov, prečo sa tak často používa a prečo sa používa na rôznych platformách:

Využíva pamäť haldy: Pamäť haldy je základným komponentom, ktorý sa používa na dynamické prideľovanie pamäte na definovanie tried a inicializáciu objektov, a pretože JVM podporuje pamäť haldy, má širokú akceptáciu.

Poskytovanie bezpečnosti pre vzdialené umiestnenie kódu: Rámec JVM je navrhnutý tak, aby bolo možné ľahko vykonať vzdialenú aplikáciu. Táto teória sa dodržiava pri vykonávaní apletu Java.

záver

Skutočnosť, že JVM pracuje na viacerých operačných systémoch, mu dáva palec hore v technologickej oblasti. Pri použití v operačných systémoch Windows, Linux a ďalších operačných systémoch umožňuje transformáciu bajtkódu bez ohľadu na hardvér a operačný systém, ktorý sa má vykonať. Jeho schopnosť ponúknuť bezpečnosť hostiteľskému počítaču zabezpečením ich údajov a programu je navyše ďalším dôvodom, prečo bol JVM v minulosti taký úspešný a naďalej dominuje v budúcnosti.

Odporúčané články

Táto príručka bola sprievodcom programom What is JVM (Java Virtual Machine). Tu sme diskutovali základné pojmy so zoznamom architektúry a použitia JVM. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Najlepšie Javascriptové rámce
  2. Je Python objektovo orientovaný
  3. Aplikácie C ++ v reálnom svete
  4. Kariéra v ASP.NET
  5. JRE vs JVM | 8 najlepších rozdielov s (infografika)

Kategórie: