Mi a JVM?

A JVM egy olyan specifikáció, ahol a Java virtuális gép működését külön ismertetik. Az algoritmus azonban egy független identitás, amelyet csak a megvalósítási szolgáltató választ ki, például az Oracle és más neves cégek. Mint ilyen, a JVM egy Java Runtime Environment (JRE) néven ismert megvalósítás.

Meghatározás

Ez egy olyan szoftver program leírása, amely futási környezetet kínál a kódhoz és annak jelentős végrehajtásához. Más szavakkal, hogyan futtatjuk a Java programokat - konfiguráljuk a JVM beállításait, és támaszkodunk rá, hogy megbirkózzunk a program erőforrásaival a végrehajtás során.

Megértés

A Java a Java virtuális gép miatt platformfüggetlen. Amikor az elküldést különféle számítógépekre hajtják végre, és a különféle operációs rendszerek JVM-mel rendelkeznek, a bytekódot a JVM gépi szintű nyelvre értelmezi. Pontosabban: a JVM programokat C programozási nyelven írják, míg a JVM független az operációs rendszertől. Ez a Java architektúra kulcsfontosságú eleme.

Mindezen kívül a Java program által megkövetelt alapvető memória hozzárendeléséért is felelős. Feladata a memóriaterület megtiltása.

Mit csinál?

A JVM által elvégzendő kritikus műveletek a következők:

  • Kód betöltése
  • Kód ellenőrzése
  • Kódfuttatás
  • Futásidejű környezetvédelem

Mindezeken kívül osztályozásokat hajt végre az osztályfájl-formátum, a memóriaterület, a hulladékgyűjtött kupac, a regisztrációkészlet, a halálos hibajelentés stb.

JVM építészet

Nézzünk néhány fontos betekintést a JVM belső architektúrájához, amely a következőket foglalja magában:

1. Osztályozó

Ez a JVM alrendszere, amelyet osztályfájlok betöltésére használnak. A Java program futtatásakor először betöltődik az osztály-betöltő. A Java három osztálytöltője a következő:

a) Bootstrap ClassLoader

Ez az Extension osztálytöltő szuperosztálya. Segít az rt.jar fájlok betöltésében, amely az összes osztályfájlt hordozza.

b) Extension ClassLoader

Ez a System classloader szülő osztályos betöltője és a Bootstrap gyermek osztályos betöltője. A $ JAVA_HOME / jre / lib / ext könyvtárban található jar fájlok az Extension ClassLoader segítségével kibonthatók.

C) Rendszer / alkalmazás ClassLoader

Az Extension classloader gyermeke, más néven Application classloader. Az osztályfájlból az osztályfájlok kibonthatók rajta. Az Classpath, amelyet az aktuális könyvtárra állít, alapértelmezés szerint megváltoztatható a '-cp' vagy '-classpath' kapcsolóval.

2.Class (módszer) terület

Az osztály előtti struktúrákat, például a mező- és metódusadatokat, a futásidejű állandó készletet és a módszerek kódját az osztály (módszer) területén tárolják. Ez egy olyan memória, amelyet a JVM indításakor hoztak létre, és megoszlik az összes szál között, mint a Heap.

3. Halom

Az objektumokat ezen a hasznos futási időtartományon keresztül rendelik hozzá. Ez egy memóriahely, amely tárgyakat tárol a példányváltozókkal együtt. Amikor egy objektumot létrehoznak a Java-ban, az a halomba megy - a memória területére.

4. Verem

A keretek tárolásával együtt a Java Stack változókkal és részleges eredményekkel is rendelkezik. Kulcsfontosságú szerepet játszik a módszerben, a meghívásban és a visszatérésben is. Minden egyes szál a saját JVM vereméből áll, amelyet a szálakkal egyidejűleg készítenek. Amikor egy módszer eszkalálódik, egy új keret jön létre, és megtört, amikor a módszer meghívása befejeződik.

5. Programszámláló (PC) regisztráció

A PC-regiszter tartalmazza a JVM utasítás címét annak végrehajtásakor. Az utasítások nyomon követése esetén minden utasítás számára értéke van, amely a natív módszereknél nincs meghatározva.

6. Natív módszer verem

Az alkalmazásokban alkalmazott natív eljárások a natív módszer-verem részét képezik. Ezeket a módszereket a Java nyelvektől eltérő nyelven írják. Az egyes szálakhoz társítva, a JVM implementációk nem támaszkodhatnak hagyományos kötegekre, és nem tudnak betölteni natív módszereket. Pontosabban: hasonlít a stack-hez, de natív módszereknél használják.

7. Motor

Mivel a JVM kulcsfontosságú eleme, kommunikál a különféle memóriaterületeivel. Ebbe beletartozik:

a. Szemetes

Ez alapvető szerepet játszik a JVM dinamikus memóriakezelő rendszerében. Az a memória, amelyben az egyik elérhető Java objektum sem foglalkozik, a Garbage Collectoron keresztül szabadul fel.

b. Tolmács

Az utasításokat a bájtkód-adatfolyam elolvasása után hajtja végre.

c. A Just-In-Time (JIT) fordító

A teljesítményjavítás lehetővé tétele érdekében a JIT fordító egyidejűleg hasonló funkcionalitással állítja össze a bájtkód részeit. Segít csökkenteni a fordítási folyamathoz szükséges időt.

8. Java natív interfész (JNI)

Más nyelveken, például C, C ++, Assembly stb. Írt alkalmazások a JNI által biztosított felületen keresztül csatlakoztathatók. A JNI-keretrendszert a Java használja az operációs rendszerkönyvtárakkal való interakcióhoz vagy a konzolhoz történő kimenet küldéséhez.

Mire használják a JVM-et?

A JVM két elsődleges funkcióval rendelkezik: lehetővé teszi a Java programok futtatását bármilyen eszközön vagy operációs rendszeren (az úgynevezett „Írja egyszer, futtasson bárhol” elv), valamint a programmemória kezelését és optimalizálását.

Előnyök és hátrányok

A Java programokat a JVM-en keresztül kell végrehajtani. Bytecode - egy közbenső nyelv a Java programok összeállításához, majd a JVM-en keresztül végrehajtásra kerül. Minden egyes program, amelyet bájtkódba állítanak össze, a JVM által üzemeltetett bármely platformon végrehajtható. Ez lehetővé teszi a Java szoftverek hatékonyságát és kompatibilitását a különféle számítógépes platformokat illetően. A JVM-nek néhány figyelemre méltó előnye és hátránya van, amelyeket minden fejlesztőnek gondosan mérlegelnie kell, mielőtt a Java fejlesztésbe fektetne.

1. Biztonság

A JVM biztonsági rései révén a programozók hatékonyan tudnak írni csúcskategóriás, biztonságos Java programokat. Felhatalmazza az operációs rendszer erőforrásait a rosszindulatú szoftverek azonosítására, és ennek megfelelően segít megelőzésében.

2. Teljesítmény

A JVM-en futó Java programok valószínűleg lassabb végrehajtást kínálnak, mint a C ++ -on írt programok. Ennek oka a kódoptimalizálás, amely túlzottan támaszkodik a különböző rendszer-specifikus szolgáltatásokra. Ezenkívül a Java bytecode nem optimalizálható egy adott hardverkészlethez, mivel a rendszer semleges.

3. Helyesség

A helyes a program, amely hatékonyan teljesít, és teljes mértékben megfelel a felhasználói elvárásoknak. A JVM beépített funkciói lehetővé teszik a megfelelő működést és hibamentességet.

Miért kellene a JVM-et használni?

A JVM annak ellenére, hogy rendelkezik Java szintaktikai kóddal, különféle nyelvi programokon futhat. Az alábbiakban felsoroljuk néhány oka annak, hogy miért olyan széles körben használják, és miért használja azt különböző platformon keresztül:

Halommemóriát használ: A halommemória alapvető összetevő, amelyet a dinamikus memória allokációhoz használnak az osztályok meghatározásához és az objektumok inicializálásához, és mivel a JVM támogatja a halom memóriát, széles körben elfogadott.

Biztonság a távoli kódmeghatározáshoz: A JVM keretrendszerét úgy tervezték, hogy a távoli alkalmazás könnyen végrehajtható legyen. Ezt az elméletet követik a Java Applet végrehajtásához.

Következtetés

Az a tény, hogy a JVM több operációs rendszeren működik, remekül szolgál a technológiai területen. Windows, Linux és más operációs rendszereken történő használata lehetővé teszi a bájtkódok átalakítását, függetlenül a végrehajtandó hardvertől és operációs rendszertől. Ezenkívül az a képessége, hogy biztonságot nyújt a gazdagép számára az adatok és a program biztonságossá tételével, egy másik ok, amiért a JVM olyan sikeres volt a múltban, és továbbra is domináns a jövőben.

Ajánlott cikkek

Ez egy útmutató a Mi a JVM (Java virtuális gép) útmutatóhoz. Itt megvitattuk az alapvető fogalmakat a JVM architektúrájának és felhasználásának listájával. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. A legjobb Javascript keretek
  2. A Python objektum-orientált
  3. C ++ alkalmazások a valós világban
  4. Karrier az ASP.NET-ben
  5. JRE vs JVM | A 8 legfontosabb különbség az (infographics) között

Kategória: