Reklama

Pri programovaní v jazyku Java je Java Virtual Machine (JVM) skutočným menom. Na rozdiel od toho, čo názov naznačuje, sa Java Virtual Machine dá stretnúť aj vo vzťahu k iným programovacím jazykom.

Vo všeobecnosti nie je potrebné vedieť, čo je Java Virtual Machine, alebo čo robí, aby bolo možné programovať v Java. Na druhej strane, zoznámenie sa s vnútornými funkciami stroja pomáha zvýšiť porozumenie a celkový prehľad.

Tento článok sa venuje myšlienke Java Virtual Machine, čo pre vás robí a niektorým najdôležitejším kladom a záporom. Aj keď som sa snažil udržať to jednoduché a určite existuje viac pokročilej literatúry na túto tému, očakáva sa základné porozumenie Java a programovania.

Jazyky na vysokej úrovni

Sémantika programovacieho jazyka je navrhnutá tak, aby sa priblížila nášmu prirodzenému jazyku a zároveň zostala stručná a ľahko interpretovateľná pre stroj. Ako pravdepodobne viete, programovací jazyk sa úplne odlišuje od strojového kódu, súboru pokynov, ktoré počítač používa na zostavenie a spustenie programu. Tomu sa hovorí

instagram viewer
jazyky na vysokej úrovni; jednu alebo viac úrovní abstrakcie z strojového kódu.

Predtým, ako bude schopný bežať, musí sa najskôr interpretovať kód vysokej úrovne. Veľa programovacích rozhraní sa kompiluje vopred (Kompilácia AOT) pre konkrétnu platformu. Vďaka tomu je program efektívnejší za behu, ale oveľa menej kompatibilný s rôznymi platformami. Java naopak pracuje so stredným jazykom nazývaným Bajtové kódy Java a Virtuálny stroj Java.

JVM a Java Bytecode

Keď sa váš projekt Java vytvára, prekladá zdrojový kód (obsiahnutý v *.java zdrojové súbory) do bajtkódu Java (najčastejšie v súboroch * .class). Tým sa váš kód vysokej úrovne posunie o krok bližšie k strojovému kódu, ale ešte nie celkom. Tento bytecode je súbor kompaktných inštrukcií; jednoduchšie interpretovať stroj, ale menej čitateľné.

Keď na počítači, mobilnom telefóne alebo inej platforme s podporou jazyka Java spustíte aplikáciu Java, v podstate tento bajtový kód Java odovzdáte Java Virtual Machine. Tlmočník v Java Virtual Machine obvykle začína kompilovať celý bajtkód za behu, podľa princípov tzv. kompilácia just-in-time. To spôsobuje typické, aj keď často malé oneskorenie pri otváraní aplikácie Java, ale vo všeobecnosti zvyšuje výkon programu v porovnaní s interpretovaná kompilácia.

java virtuálny stroj

Hlavnou výhodou tohto systému je zvýšená kompatibilita. Keďže vaše aplikácie bežia na virtuálnom počítači namiesto priamo na vašom hardvéri, vývojár môže programovať a zostaviť ich aplikáciu raz, ktorá sa potom dá spustiť na každom zariadení s implementáciou Java Virtual Machine. Tento princíp spôsobil vznik sloganu Java: „Píšte raz, bežajte všade.”

Pro: Kompatibilita a vyššia bezpečnosť

Okrem kompatibility s kódom prináša Java Virtual Machine ďalšie výhody. Jedným z najdôležitejších z nich je relatívna bezpečnosť programov Java v dôsledku Java Virtual Machine. Zabezpečenie, čo znamená, že pri spustení programu vo virtuálnom počítači je oveľa pravdepodobnejšie, že v prípade výskytu problémov naruší operačný systém používateľa alebo poškodí dátové súbory.

Kon: Rôzne implementácie a ladenie JVM

Jedna z hlavných kritík proti kompatibilite kódu a Java Virtual Machine je kvôli mnohým rôznym implementáciám tohto jazyka. Vidíte, Java Virtual Machine nie je jeden softvér. Oracle, majitelia Java, majú implementáciu Java Virtual Machine, ale iní ľudia si ju môžu vytvoriť, ak uspokojí rôzne praktické a zmluvné nároky.

Tieto rôzne implementácie znamenajú, že váš kód môže bežať hladko na jednom Java Virtual Machine, ale na inom môže zlyhať a napáliť. Aj keď v praxi môžete svoj kód napísať raz a spustiť ho všade, niekedy zložitejší kód Stále je potrebné ladiť v rôznych implementáciách Java Virtual Machine, aby sa zabezpečila správna prevádzka.

Máte skúsenosti s prácou s Java Virtual Machine? Ak áno, je tu niečo, čo som tu zmeškal a ktoré by sa malo spomenúť?

Obrázok Kredit: Michaelaw, Dcoetzee

Som spisovateľ a študent počítačových vied z Belgicka. Vždy mi môžete dať láskavosť dobrým nápadom na článok, odporúčaním knihy alebo nápadom na receptúru.