Java virtuális gép

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. május 14-én felülvizsgált verziótól ; az ellenőrzések 7 szerkesztést igényelnek .
JVM
Fejlesztő Sun Microsystems
Bit mélység 32 (64 Java 9-el)
Bemutatták 1994
Verziók 18.0.1.1 [1]
Típusú Stack gép, dedikált memória hozzáféréssel
Byte sorrend big-endian
Regiszterek
Általános rendeltetésű Operandus verem minden metódushoz (legfeljebb 65535 operandus), és metódus helyi változói (legfeljebb 65535)

Java Virtual Machine (rövidítve Java VM , JVM ) - Java virtuális gép - a Java végrehajtó rendszer fő része, az úgynevezett Java Runtime Environment ( JRE ). A Java virtuális gép olyan Java bájtkódot hajt végre , amelyet korábban egy Java program forráskódjából állított elő a Java fordító ( javac ). A JVM más programozási nyelveken írt programok végrehajtására is használható . Például az Ada forráskódot le lehet fordítani Java bájtkódba, amelyet aztán a JVM végrehajthat.

A JVM a Java platform kulcsfontosságú összetevője. Mivel a Java virtuális gépek számos hardver- és szoftverplatformhoz elérhetők, a Java köztes szoftvernek és önálló platformnak is tekinthető. Az egy bájtkód használata sok platformon lehetővé teszi, hogy a Java a következőképpen írható le: "egyszer lefordítani, bárhol futtatni" (egyszer lefordítani, bárhol futtatni).

A Java virtuális gépek általában tartalmaznak bájtkód értelmezőt , azonban a teljesítmény javítása érdekében sok gép JIT -összeállítást is használ a gyakran végrehajtott bájtkód töredékekből gépi kódba .

JVM specifikáció

1996- ban a Sun kiadta a JVM Blue Book dokumentum első változatát , amely leírta a Java virtuális gép specifikációit , amely a Java platform de facto ipari szabványává vált . Ennek a dokumentumnak köszönhetően megjelentek a JVM alternatív megvalósításai, amelyek " a nulláról való fejlesztés " ( eng.  clean room design ). Ilyen például a Kaffe .

A J2SE 5.0-tól kezdődően a JVM specifikáció módosításait az érintettek formalizált kívánságai szerint generálják. A JVM-specifikációk módosításának folyamatát Java közösségi folyamatnak nevezik .

A Sun C - forrásában elérhető JVM- et KVM-nek (Kilo Virtual Machine) hívják, és elérhető a webhelyükön.

Verseny a Sun és a Microsoft között

A „Java” platform fejlesztésének kezdetén a Java virtuális gépnek két versengő megvalósítása volt:

A „Microsoft Java VM” azonban nem volt teljesen kompatibilis a Sun által a „JVM blue book”-ban leírt specifikációkkal, és jelentős teljesítmény- és biztonsági problémákkal küzdött nagy munkaterhelés mellett (nagyszámú egyidejűleg futó szál mellett).

A Sun ezt a helyzetet elfogadhatatlannak ítélte, és úgy döntött, hogy a Microsoft szándékosan hiteltelenné és meggyalázza a Java platformot a Java Virtual Machine verziójának terjesztésével, amely a fenti hátrányokkal rendelkezik. Ennek alapján a Sun ismételten beperelte a Microsoftot – és a Microsoftot megfosztották a következő végrehajtási jogoktól:

  1. Nevezzük „Java VM”-nek (az új név „Microsoft VM”);
  2. Beágyazása a böngészők és operációs rendszerek szállításába (beleértve az Internet Explorert és a Windowst is) – de az oldalon való letöltés jogával;
  3. Új verziók és frissítések fejlesztése;
  4. Töltse le az oldalon.

Egyes számítógép-ellenőrök felvetették, hogy a Sun Java-val kapcsolatos kemény álláspontja további ösztönzést jelenthetett a Microsoft számára saját Windows-megoldás, a " .NET-keretrendszer " kifejlesztésére.

A Sun és az IBM közötti nézeteltérések

2001 - ben azzal a céllal, hogy szabványt dolgozzon ki a platformok közötti asztali alkalmazásokhoz , az IBM elindított egy nyílt forráskódú projektet: "Eclipse" .

Az "Eclipse" keretrendszer egy korábbi zárt fejlesztésen alapult: az IBM "VisualAge"-en . A Free Software Foundation által elismert Eclipse Public License -ben az IBM-nek sikerült egyensúlyt teremtenie a szabad közösség és az üzleti érdekek (az ő érdekeik) között .

A projekt sikeresen fejlődik, az iparban használatos, nagyrészt az IBM-től függetlenné vált (lásd: "Eclipse Foundation" ).

A Sun továbbra is ellenzi az Eclipse Foundationt , valamint a Microsoftot. Formálisan a viták fő oka továbbra is a "Standard Widget Toolkit" (SWT) könyvtár, amely ellentmond a Sun virtuális gépről szóló koncepciójának és a Java alkalmazások hordozhatóságának.

Futásidő

A JVM-en futtatni kívánt programokat szabványosított hordozható bináris formátumban kell lefordítani, amelyet általában ".class" fájlokként ábrázolnak. Egy program több osztályból állhat, amelyek különböző fájlokban vannak elhelyezve. A nagy programok hosztolásának megkönnyítése érdekében egyes ".class" fájlokat össze lehet csomagolni egy úgynevezett ".jar" fájlba (a "Java Archívum" rövidítése).

A JVM végrehajtja a ".class" és ".jar" fájlokat, emulálva a bennük adott utasításokat a következő módokon:

Manapság a legtöbb JVM-ben a JIT összeállítást használják a nagyobb sebesség elérése érdekében. Vannak olyan előrehaladott fordítók is, amelyek lehetővé teszik az alkalmazásfejlesztők számára az osztályfájlok újrafordítását platform-natív kódba.

A legtöbb virtuális géphez hasonlóan a Java virtuális gépnek is van egy verem-orientált architektúrája, amely közös a mikrovezérlőkben és mikroprocesszorokban .

JVM - a JRE (Java Runtime Environment) egy példánya, amely Java programok végrehajtásakor lép működésbe; a végrehajtás befejeztével ezt a példányt a szemétgyűjtő eltávolítja. A JIT a Java virtuális gép azon része, amelyet az alkalmazások végrehajtásának felgyorsítására használnak; A JIT egyszerre fordítja le a bájtkód azon részeit, amelyeknek ugyanaz a funkcionalitása, ami csökkenti a fordítási időt.

Lásd még

Jegyzetek

  1. JDK kiadási  verziók . Java (2022. május 2.). Letöltve: 2022. május 24. Az eredetiből archiválva : 2022. június 4.

Irodalom

Linkek