Co warto wiedzieć o JVM?
Ostatnia aktualizacja 23 sierpnia, 2022
JVM, czyli maszyna wirtualna Javy jest aplikacją, która pozwala na interpretację kodu bajtowego Javy niezależnie od środowiska, a ponadto umożliwia optymalizację. Priorytetem dla twórców Javy było umożliwienie uruchamiania tej samej aplikacji bez konieczności modyfikacji kodu na różnych platformach sprzętowych. Znalazło to swoje odzwierciedlenie w akronimie WORA (Write Once, Run Anywhere).
Ostatnia aktualizacja: 2022.08.23. Dodatkowa treść dotycząca elementów składowych JVM.
Tworzenie aplikacji bez JVM
Tworząc aplikację, która będzie uruchamiana bezpośrednio przez system operacyjny, programista nie posługuje się żadnymi dodatkowymi warstwami pośredniczącymi. Oczywiście, może wykorzystać różne frameworki, języki programowania lub inne narzędzia, natomiast pomiędzy wyjściowym plikiem a systemem operacyjnym nie ma dodatkowej warstwy.
Programista pisze kod, który następnie kompiluje z wykorzystaniem zestawu narzędzi, np. kompilator lub linker. Binarny plik jest końcowym efektem kompilacji. W dużym uproszczeniu plik jest zestawem instrukcji, które mają zostać wykonane przez procesor.
Co więcej, w zależności od architektury procesora i systemu operacyjnego plik będzie miał różną zawartość. Jednym słowem wiąże się to z koniecznością kompilowania programu dla każdej obsługiwanej architektury.
Sprawdź: CodeGym – zgrywalizowany kurs Javy
Tworzenie aplikacji z wykorzystaniem JVM
JVM jest warstwą pośredniczącą pomiędzy końcowym plikiem binarnym a systemem operacyjnym i procesorem, dzięki której kod skompilowany do postaci kodu bajtowego Javy nie wymaga rekompilacji dla każdej nowej architektury.
Jedynym wymaganiem dla uruchomienia programu na nowej architekturze jest zainstalowanie na niej maszyny wirtualnej Javy. Z biegiem czasu inne języki zyskały możliwość uruchamiania programów na JVM pod warunkiem, że są kompilowane do kodu bajtowego Javy.
Zobacz: Ile zarabia programista Java?
Elementy składowe JVM
Maszyna wirtualna Javy (JVM) skłąda się z kilku elementów. Wyróżniamy głównie:
- Interpreter, którego zadaniem jest wykonywanie programu zapisanego w kodzie bajtowym.
- Kompilator JIT (Just-In_Time), którego zadaniem jest tłumaczenie kodu do postaci natywnej, aby potem go wykonać w całości. Zwiększa wydajność, jeśli kod wykonywany jest wielokrotnie.
- Zarządca pamięci, którego zadaniem jest deklaracja minimalnej i maksymalnej ilości pamięci RAM (sterty), jaką może wykorzystać program. Pozwala także zwalniać nieużywaną ilość pamięci, czyli ją odśmiecać.
- Weryfikator kodu bajtowego, który ma za zadanie sprawdzić kod przed wykonaniem, aby uruchomienie programu nie wpłynęło negatywnie na stabilność systemu.
- Java API, czyli zestaw bibliotek, z których korzystają uruchamiane aplikacje.
Popularność Javy
Ze względu na łatwe przenoszenie kodu, Javę wykorzystuje się w wielu branżach i typach urządzeń. Programy napisane w Javie można spotkać na serwerach dużych firm finansowych, gdzie obsługują transakcje.
Indywidualni użytkownicy na swoich komputerach mogą mieć zainstalowane programy napisane w Javie, a strona, którą odwiedzają, będzie używała Javy na swoim serwerze. Programy używające JVM można spotkać także w smartfonach i urządzeniach IoT.
Wysoka popularność Javy wynika z jej uniwersalności, ale też bogatego zaplecza funkcji i bibliotek dostępnych do wykorzystania bez dodatkowych kroków.