Mi az a JVM? Java Virtuális gép Architectúra
Miben van a JVM? Java?
Java Virtuális gép (JVM) egy olyan motor, amely futásidejű környezetet biztosít a Java Kód vagy alkalmazások. Megtérít Java bájtkód a gépek nyelvére. A JVM része Java Futókörnyezet (JRE). Más programozási nyelvekben a fordító gépi kódot állít elő egy adott rendszerhez. Viszont, Java A fordítóprogram kódot állít elő egy virtuális géphez, az úgynevezett Java Virtuális gép.
Hogyan működik a JVM?
Először is, Java kód bájtkódba van fordítva. Ezt a bájtkódot a rendszer különböző gépeken értelmezi. Gazdarendszer és Java forrás, a Bytecode egy közvetítő nyelv. JVM be Java felelős a memóriaterület lefoglalásáért.

Ebben a JVM oktatóanyagban megtudhatja,
ArchiJVM (Java virtuális gép)
Most ebben a JVM oktatóanyagban értsük meg a Archia JVM struktúrája. JVM architektúra be Java osztálybetöltőt, memóriaterületet, végrehajtó motort stb.
1) ClassLoader
Az osztálybetöltő egy alrendszer, amelyet osztályfájlok betöltésére használnak. Három fő funkciót lát el, pl. Betöltés, összekapcsolás és inicializálás.
2) Módszer terület
A JVM Method Area osztálystruktúrákat tárol, például a metaadatokat, az állandó futásidejű készletet és a metódusok kódját.
3) Halom
Minden tárgyak, a kapcsolódó példányváltozók és tömbök a kupacban tárolódnak. Ez a memória gyakori és több szálon megosztva.
4) JVM nyelvi veremek
Java A nyelvi veremek helyi változókat tárolnak, és ez részeredmények. Minden szálnak saját JVM-verme van, amely a szál létrehozásával egyidejűleg jön létre. Egy metódus meghívásakor új keret jön létre, és törlődik, amikor a metódushívási folyamat befejeződött.
5) PC-regiszterek
PC regiszter tárolja a címét Java virtuális gép utasítás, amely jelenleg fut. In Java, minden szálnak külön PC-regisztere van.
6) Natív Method Stackek
A natív metódusveremek a natív kód utasításait tárolják a natív könyvtártól függően. Más nyelven van írva helyette Java.
7) Végrehajtó motor
Ez egy olyan szoftvertípus, amelyet hardver, szoftver vagy komplett rendszerek tesztelésére használnak. A tesztvégrehajtó motor soha nem hordoz semmilyen információt a tesztelt termékről.
8) Natív módszer interfész
A Native Method Interface egy programozási keretrendszer. Megengedi Java kód, amely egy JVM-ben fut a könyvtárak és natív alkalmazások általi híváshoz.
9) Native Method Libraries
A Native Libraries a Native Libraries (C, C++), amelyekre az Execution Engine-nek szüksége van.
Szoftverkód összeállítási és végrehajtási folyamat
Szoftverprogram írásához és futtatásához a következőkre van szüksége
1) Szerkesztő – A program begépeléséhez egy jegyzettömb használható
2) fordítóprogram – Magas nyelvű programjának natív gépi kóddá alakításához
3) Linker – Különböző programfájlok hivatkozásainak kombinálása a fő programban.
4) Rakodó – Fájlok betöltése a másodlagos tárolóeszközről, például merevlemezről, flash meghajtóról, CD-ről a RAM-ba végrehajtás céljából. A betöltés automatikusan megtörténik, amikor végrehajtja a kódot.
5) Végrehajtás – Az operációs rendszer és a processzor által kezelt kód tényleges végrehajtása.
Ezzel a háttérrel tekintse meg a következő videót, és ismerje meg a JVM belső működését és architektúráját (Java Virtuális gép).
Kattints itt ha a videó nem érhető el
C kód Összeállítási és végrehajtási folyamat
Megérteni a Java összeállítási folyamatban Java. Először vessünk egy gyors pillantást a fordítási és összekapcsolási folyamatra C-ben.
Tegyük fel, hogy a főben két f1 és f2 függvényt hívtunk meg. A fő funkció az a1.c fájlban található.
Az f1 függvény egy a2.c fájlban van tárolva
Az f2 függvény egy a3.c fájlban van tárolva
Mindezek a fájlok, azaz az a1.c, a2.c és a3.c, a fordítóba kerülnek. A kimenete a megfelelő objektumfájlok, amelyek a gépi kód.
A következő lépés az összes objektumfájl integrálása egyetlen .exe fájlba a linker segítségével. A linker egyesíti ezeket a fájlokat, és létrehozza az .exe fájlt.
A program futása közben egy betöltő program betölti a.exe fájlt a RAM a végrehajtáshoz.
Java kód Összeállítás és végrehajtás in Java VM
Most ebben a JVM oktatóanyagban nézzük meg a JAVA folyamatát. A főben két módszere van: f1 és f2.
- A fő módszer az a1.java fájlban található
- Az f1 fájlban a2.java néven van tárolva
- Az f2 fájlban a3.java néven van tárolva
A fordító lefordítja a három fájlt, és létrehoz 3 megfelelő .class fájlt, amely BYTE kódból áll. A C-vel ellentétben nem történik linkelés.
A Java VM ill Java A virtuális gép a RAM-on található. A végrehajtás során az osztálybetöltő segítségével az osztályfájlok a RAM-ba kerülnek. A BYTE kódot minden biztonsági rést ellenőrzik.
Ezután a végrehajtó motor a bájtkódot natív gépi kóddá alakítja. Ez éppen időben van összeállítva. Ez az egyik fő oka annak, hogy miért Java viszonylag lassú.
JEGYZET: JIT vagy a Just-in-time fordító az a része Java Virtuális gép (JVM). A bájtkód egy részét értelmezi, amely egyidejűleg hasonló funkciókkal rendelkezik.
Miért lett Java tolmácsolt és összeállított nyelv egyaránt?
Programozási nyelvek besorolása:
- Magasabb szintű nyelv pl. C++, Java
- Középszintű nyelvek pl. C
- Alacsony szintű nyelv pl Assembly
- végül a legalacsonyabb szint, mint a Gépnyelv.
A fordítóprogram egy olyan program, amely egy programot konvertál egyik nyelvi szintről a másikra. Példa átalakításra C++ programozzon gépi kódba. A java fordító a magas szintű java kódot bájtkóddá alakítja (ami szintén egy gépi kód típus).
An tolmács egy olyan program, amely az egyik szinten lévő programot egy másik programozási nyelvre konvertálja a ugyanaz a szint. Példa átalakításra Java programozzon be C++
In Java, a Just In Time Code generátor a bájtkódot natív gépi kóddá alakítja, amelyek ugyanazon a programozási szinten vannak.
Ennélfogva, Java összeállított és értelmezett nyelv is.
Miért lett Java lassú?
A lassúság mögött meghúzódó két fő ok Java faliórái
- Dinamikus linkelés: A C-vel ellentétben a linkelés futási időben történik, minden alkalommal, amikor a program befut Java.
- Futásidejű tolmács: A bájtkód natív gépi kódká való átalakítása futási időben történik Java ami tovább lassítja a sebességet
Azonban a legújabb verziója Java nagymértékben kezelte a teljesítmény szűk keresztmetszeteit.
Összegzésként:
- A JVM teljes formája Java Virtuális gép. JVM be Java az a motor, ami hajtja a Java Kód. Megtérít Java bájtkód a gépek nyelvére.
- JVM architektúra be Java osztálybetöltőt, memóriaterületet, végrehajtó motort stb.
- A JVM-ben Java kód bájtkódra van fordítva. Ezt a bájtkódot a rendszer különböző gépeken értelmezi
- A JIT a Just-in-time fordító rövidítése. A JIT része a Java Virtuális gép (JVM). A végrehajtási idő felgyorsítására szolgál
- Más fordítógépekhez képest a JVM in Java lassú lehet a végrehajtás.