Java Virtual Machine (JVM), rozdíl JDK, JRE & JVM – Core Java
Java je programovací jazyk na vysoké úrovni. Program napsaný v jazyce na vysoké úrovni nelze spustit přímo na jakémkoli počítači. Nejprve je třeba jej přeložit do tohoto konkrétního strojového jazyka. Javac kompilátor dělá tuto věc, to trvá java program (.java soubor obsahující zdrojový kód) a překládá jej do strojového kódu (označovaný jako byte kód nebo .soubor třídy).,
Java Virtual Machine (JVM) je virtuální stroj, který se nachází v reálném počítači (váš počítač) a jazyk stroje pro JVM je bajtový kód. To usnadňuje kompilátor, protože musí generovat byte kód pro JVM spíše než jiný strojový kód pro každý typ stroje. JVM provede bajtový kód generovaný kompilátorem a vytvoří výstup. JVM je ten, který dělá java platformu nezávislou.
nyní jsme pochopili, že primární funkcí JVM je spuštění bajtového kódu vytvořeného kompilátorem., Každý operační systém má jiný JVM, nicméně výstup, který produkují po provedení bajtového kódu, je stejný ve všech operačních systémech. Což znamená, že byte kód generovaný v systému Windows lze spustit v systému Mac OS a naopak. Proto nazýváme Javu jako nezávislý jazyk platformy. To samé lze vidět na obrázku níže:
Takže abych to shrnul všechno: Java Virtual machine (JVM) je virtuální stroj, který běží na skutečném stroji (počítači) a spustí Java byte kódu., JVM nerozumí zdrojovému kódu Java, proto musíme mít kompilátor javac, který kompiluje*.java soubory pro získání*.soubory třídy, které obsahují bajtové kódy, kterým rozumí JVM. JVM dělá Java přenosný (psát jednou, spustit kdekoliv). Každý operační systém má jiný JVM, nicméně výstup, který produkují po provedení bajtového kódu, je stejný ve všech operačních systémech.
JVM Architektury
podívejme se, jak JVM funguje:
Class Loaderu: classloader načte .,soubor třídy a uložte byte kód v oblasti metody.
oblast metody: v JVM je pouze jedna oblast metody, která je sdílena mezi všemi třídami. To má informace o úrovni třídy každého z nich .třídní složka.
Heap: Heap je součástí JVM paměti, kde jsou přiřazeny objekty. JVM vytváří objekt třídy pro každého .třídní složka.
Stack: Stack je také součástí JVM paměti, ale na rozdíl od haldy se používá pro ukládání dočasných proměnných.
PC Registry: tím se sleduje, která instrukce byla provedena a která z nich bude provedena., Vzhledem k tomu, že pokyny jsou prováděny vlákny, každé vlákno má samostatný registr PC.
nativní metoda stack: nativní metoda má přístup k datovým oblastem Runtime virtuálního počítače.
nativní metoda rozhraní: umožňuje java kód volat nebo být volán nativními aplikacemi. Nativní aplikace jsou programy, které jsou specifické pro hardware a OS systému.
sběr odpadků: instance třídy je explicitně vytvořena kódem java a po použití je automaticky zničena sběrem odpadků pro správu paměti.,
JVM Vs JRE Vs JDK
JRE: JRE je prostředí, ve kterém běží virtuální stroj java. JRE obsahuje Java virtual Machine (JVM), knihovny tříd a další soubory kromě vývojových nástrojů, jako je kompilátor a ladicí program.
což znamená, že můžete spustit kód v JRE, ale nemůžete vyvíjet a kompilovat kód v JRE.
JVM: jak jsme diskutovali výše, JVM spouští program pomocí třídy, knihoven a souborů poskytovaných JRE.,
JDK: JDK je sada JRE, obsahuje vše, co JRE má spolu s vývojovými nástroji, jako je kompilátor, debugger atd.