Co je JVM? Java Virtuální stroj Architecture
V čem je JVM Java?
Java Virtuální stroj (JVM) je motor, který poskytuje běhové prostředí pro řízení Java Kód nebo aplikace. Převádí se Java bytecode do strojového jazyka. JVM je součástí Java Runtime Environment (JRE). V jiných programovacích jazycích kompilátor vytváří strojový kód pro konkrétní systém. Však, Java kompilátor vytváří kód pro virtuální stroj známý jako Java Virtuální stroj.
Jak JVM funguje?
Za prvé, Java kód je zkompilován do bajtkódu. Tento bajtkód je interpretován na různých počítačích. Mezi hostitelským systémem a Java zdroj, Bytecode je zprostředkující jazyk. JVM v Java je zodpovědný za alokaci paměťového prostoru.

V tomto tutoriálu JVM se naučíte-
Archistruktura JVM (Java virtuální stroj)
Nyní v tomto tutoriálu JVM pochopíme Architecture of JVM. Architektura JVM v Java obsahuje classloader, paměťovou oblast, prováděcí stroj atd.
1) ClassLoader
Zavaděč tříd je subsystém používaný pro načítání souborů tříd. Plní tři hlavní funkce, tj. Načítání, propojení a inicializace.
2) Oblast metody
Oblast metod JVM ukládá struktury tříd, jako jsou metadata, fond konstantního běhu a kód pro metody.
3) Hromada
Všechny Objekty, jejich související proměnné instance a pole jsou uloženy v haldě. Tato paměť je společná a sdílená mezi více vlákny.
4) Jazykové zásobníky JVM
Java Jazykové sady ukládají místní proměnné a jsou to dílčí výsledky. Každé vlákno má svůj vlastní zásobník JVM, který se vytváří současně s vytvářením vlákna. Při každém vyvolání metody se vytvoří nový rámec a po dokončení procesu vyvolání metody se odstraní.
5) Registry PC
Registr PC ukládá adresu Java instrukce virtuálního stroje, která se právě provádí. V Java, každé vlákno má svůj samostatný registr PC.
6) Zásobníky nativních metod
Zásobníky nativních metod obsahují instrukce nativního kódu závisí na nativní knihovně. Místo toho je napsáno v jiném jazyce Java.
7) Prováděcí stroj
Je to typ softwaru používaný k testování hardwaru, softwaru nebo celých systémů. Testovací engine nikdy nenese žádné informace o testovaném produktu.
8) Rozhraní nativní metody
Rozhraní Native Method Interface je programovací rámec. To umožňuje Java kód, který běží v JVM, aby mohl volat knihovny a nativní aplikace.
9) Knihovny nativních metod
Native Libraries je sbírka nativních knihoven (C, C++), které potřebuje Execution Engine.
Proces kompilace a spuštění softwarového kódu
Abyste mohli napsat a spustit softwarový program, potřebujete následující
1) Redaktor – Chcete-li zadat svůj program, můžete k tomu použít poznámkový blok
2) překladač – Chcete-li převést váš program ve vysokém jazyce na nativní strojový kód
3) Linker – Chcete-li kombinovat různé odkazy na soubory programu ve vašem hlavním programu.
4) Nakladač – Chcete-li načíst soubory z vašeho sekundárního úložného zařízení, jako je pevný disk, jednotka Flash, disk CD, do paměti RAM za účelem provedení. Načítání se provádí automaticky při spuštění kódu.
5) Provedení – Skutečné provedení kódu, který zpracovává váš operační systém a procesor.
S tímto pozadím se podívejte na následující video a naučte se vnitřní fungování a architekturu JVM (Java Virtuální stroj).
klikněte zde pokud video není přístupné
Proces kompilace a provádění kódu C
Porozumět Java proces kompilace v Java. Pojďme se nejprve rychle podívat na proces kompilace a propojení v C.
Předpokládejme, že jste zavolali dvě funkce f1 a f2. Hlavní funkce je uložena v souboru a1.c.
Funkce f1 je uložena v souboru a2.c
Funkce f2 je uložena v souboru a3.c
Všechny tyto soubory, tj. a1.c, a2.c a a3.c, jsou přiváděny do kompilátoru. Jejich výstupem jsou odpovídající objektové soubory, které jsou strojovým kódem.
Dalším krokem je integrace všech těchto objektových souborů do jednoho .exe souboru pomocí linkeru. Linker spojí všechny tyto soubory dohromady a vytvoří soubor .exe.
Během běhu programu zavaděč nahraje a.exe do RAM za provedení.
Java kompilace a spuštění kódu v Java VM
Nyní se v tomto tutoriálu JVM podíváme na proces pro JAVA. V hlavním máte dvě metody f1 a f2.
- Hlavní metoda je uložena v souboru a1.java
- f1 je uložen v souboru jako a2.java
- f2 je uložen v souboru jako a3.java
Kompilátor zkompiluje tři soubory a vytvoří 3 odpovídající soubory .class, které se skládají z kódu BYTE. Na rozdíl od C se neprovádí žádné propojení.
Jedno Java VM popř Java Virtuální stroj je umístěn v paměti RAM. Během provádění pomocí zavaděče třídy jsou soubory třídy přeneseny do paměti RAM. Kód BYTE je ověřen z hlediska jakéhokoli porušení zabezpečení.
Dále prováděcí stroj převede Bytecode na nativní strojový kód. Toto je právě včas kompilace. Je to jeden z hlavních důvodů Java je poměrně pomalý.
POZNÁMKA: JIT nebo Just-in-time kompilátor je součástí Java Virtuální stroj (JVM). Interpretuje část Byte Code, která má zároveň podobnou funkcionalitu.
Proč je Java jak interpretovaný, tak kompilovaný jazyk?
Programovací jazyky jsou klasifikovány jako
- Jazyk vyšší úrovně Př. C++, Java
- Jazyky střední úrovně Př. C
- Nízkoúrovňový jazyk Př Assembly
- konečně nejnižší úroveň jako strojový jazyk.
A kompilátor je program, který převádí program z jedné úrovně jazyka do druhé. Příklad konverze C++ programovat do strojového kódu. Kompilátor java převádí vysokoúrovňový kód Java na bajtkód (což je také typ strojového kódu).
An tlumočník je program, který převádí program na jedné úrovni do jiného programovacího jazyka stejná úroveň. Příklad konverze Java naprogramovat do C++
In Java, generátor Just In Time Code převádí bajtový kód na nativní strojový kód, který je na stejných programovacích úrovních.
Proto, Java je kompilovaný i interpretovaný jazyk.
Proč je Java pomalý?
Dva hlavní důvody pomalosti Java jsou
- Dynamické propojení: Na rozdíl od C se propojení provádí za běhu, pokaždé, když je program spuštěn Java.
- Interpret za běhu: Převod bajtového kódu na nativní strojový kód se provádí za běhu Java což dále zpomaluje rychlost
Nicméně, nejnovější verze Java do značné míry řešil problémová místa výkonu.
Shrnutí:
- Plná forma JVM je Java Virtuální stroj. JVM v Java je motor, který pohání Java Kód. Převádí se Java bytecode do strojového jazyka.
- Architektura JVM v Java obsahuje classloader, paměťovou oblast, prováděcí stroj atd.
- V JVM, Java kód je zkompilován do bajtkódu. Tento bajtkód je interpretován na různých počítačích
- JIT je zkratka pro Just-in-time kompilátor. JIT je součástí Java Virtuální stroj (JVM). Používá se ke zrychlení doby provádění
- Ve srovnání s jinými kompilačními stroji, JVM in Java může být pomalé při provádění.