Java virtuální stroj

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 14. května 2021; kontroly vyžadují 7 úprav .
JVM
Vývojář Sun Microsystems
Bitová hloubka 32 (64 s Java 9)
Prezentováno 1994
Verze 18.0.1.1 [1]
Typ Stohovací stroj s vyhrazeným přístupem do paměti
Pořadí bajtů big-endian
Registry
obecný účel Zásobník operandů pro každou metodu (až 65535 operandů) a lokální proměnné metody (až 65535)

Java Virtual Machine (zkráceně Java VM , JVM ) - Java virtual machine - hlavní část exekučního systému Java , tzv. Java Runtime Environment ( JRE ). Java Virtual Machine spouští bajtový kód Java , který byl dříve vygenerován ze zdrojového kódu programu Java kompilátorem Java ( javac ). JVM lze také použít ke spouštění programů napsaných v jiných programovacích jazycích . Zdrojový kód Ada lze například zkompilovat do bajtkódu Java, který pak může JVM spustit.

JVM je klíčovou součástí platformy Java. Protože virtuální stroje Java jsou dostupné pro mnoho hardwarových a softwarových platforem, lze na Javu pohlížet jako na middleware i jako samostatnou platformu. Použití jednoho bajtkódu pro mnoho platforem umožňuje Javu popsat jako „zkompilujte jednou, spusťte kdekoli“ (zkompilujte jednou, spusťte kdekoli).

Virtuální stroje Java obvykle obsahují interpret bajtového kódu, avšak pro zlepšení výkonu mnoho strojů také používá JIT kompilaci často prováděných fragmentů bajtového kódu do strojového kódu .

Specifikace JVM

V roce 1996 Sun vydal první verzi dokumentu JVM Blue Book , který popisoval specifikaci pro virtuální stroj Java, který se stal de facto průmyslovým standardem pro platformu Java. Díky tomuto dokumentu se objevily alternativní implementace JVM, které jsou „ vývojem od nuly “ ( angl.  clean room design ). Příkladem je Kaffe .

Počínaje J2SE 5.0 jsou změny specifikace JVM generovány podle formalizovaných přání zúčastněných stran. Proces provádění změn specifikací JVM se nazývá Java Community Process .

JVM dostupný ve zdroji Sun C se nazývá KVM (Kilo Virtual Machine) a je dostupný na jejich webových stránkách.

Konkurence mezi Sun a Microsoft

Na počátku vývoje platformy „Java“ byly dvě konkurenční implementace Java VM:

„Microsoft Java VM“ však nebyl plně kompatibilní se specifikací popsanou společností Sun v „modré knize JVM“ a měl značné problémy s výkonem a zabezpečením při velkém pracovním zatížení (s velkým počtem souběžně běžících vláken).

Sun považoval tuto situaci za nepřijatelnou a rozhodl se, že Microsoft záměrně diskredituje a zprofanuje platformu Java distribucí své verze Java Virtual Machine, která má výše uvedené nevýhody. Na tomto základě Sun opakovaně žaloval Microsoft – a Microsoft byl zbaven následujících práv na implementaci:

  1. Říkejte tomu "Java VM" (nový název je "Microsoft VM");
  2. Vložit jej do dodávky prohlížečů a operačních systémů (včetně Internet Exploreru a Windows) – ale s právem nabízet ke stažení na webu;
  3. Vyvíjet jeho nové verze a aktualizace;
  4. Poskytněte jej ke stažení na webu.

Někteří počítačoví recenzenti se domnívají, že tvrdý postoj Sunu k Javě mohl Microsoftu poskytnout další pobídku k vývoji vlastního řešení pro Windows: „ .NET Framework “.

Neshody mezi Sun a IBM

V roce 2001 , s cílem vyvinout standard pro desktopové aplikace pro více platforem , IBM spustila open source projekt: „Eclipse“ .

Rámec „Eclipse“ byl založen na předchozím uzavřeném vývoji: „VisualAge“ od IBM . IBM se podařilo vyvážit zájmy svobodné komunity a zájmy podnikání (jejich zájmy) v Eclipse Public License , uznané Free Software Foundation .

Projekt se úspěšně rozvíjí, je využíván v průmyslu, z velké části se oddělil od IBM v nezávislý (viz "Eclipse Foundation" ).

Sun zůstává v opozici vůči Eclipse Foundation , stejně jako vůči Microsoftu. Formálně zůstává hlavní příčinou kontroverzí knihovna „Standard Widget Toolkit“ (SWT), která je v rozporu s konceptem virtuálního stroje Sunu a přenositelností Java aplikací.

Runtime

Programy určené ke spuštění na JVM musí být zkompilovány ve standardizovaném přenosném binárním formátu, který je obvykle reprezentován jako soubory ".class". Program se může skládat z mnoha tříd umístěných v různých souborech. Pro snazší hostování velkých programů lze některé soubory „.class“ sbalit dohromady do takzvaného souboru „.jar“ (zkratka pro „Java Archive“).

JVM spouští soubory ".class" a ".jar" a emuluje instrukce v nich uvedené následujícími způsoby:

V dnešní době se kompilace JIT používá ve většině JVM k dosažení vyšší rychlosti. Existují také předem připravené kompilátory, které umožňují vývojářům aplikací překompilovat soubory tříd do nativního kódu platformy.

Jako většina virtuálních strojů má Java Virtual Machine architekturu orientovanou na zásobník, která je společná pro mikrokontroléry a mikroprocesory .

JVM - instance JRE (Java Runtime Environment), která se aktivuje při spouštění programů Java; po dokončení provádění je tato instance odstraněna sběračem odpadu. JIT je ta část Java Virtual Machine, která se používá k urychlení spouštění aplikací; JIT kompiluje ty části bajtkódu, které mají stejnou funkcionalitu ve stejnou dobu, což zkracuje čas potřebný ke kompilaci.

Viz také

Poznámky

  1. Verze vydání JDK  . Java (2. května 2022). Získáno 24. května 2022. Archivováno z originálu dne 4. června 2022.

Literatura

Odkazy