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 .
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.
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:
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.
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.
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.
Java virtuális gépek ( összehasonlítás ) | |
---|---|
Sun , Oracle |
|
Főbb megvalósítások | |
Beágyazott |
|
Egyéb | |
Nem támogatott |
Jáva | |
---|---|
Platformok | |
Sun Technologies | |
Harmadik fél kulcsfontosságú technológiái | |
Sztori |
|
Nyelvi tulajdonságok | |
Szkriptnyelvek |
|
Java konferenciák |
|
C programozási nyelv | |
---|---|
Fordítók |
|
Könyvtárak | |
Sajátosságok | |
Néhány leszármazott | |
C és más nyelvek |
|
Kategória:C programozási nyelv |