Strefa wolna od botów!
Piszemy my, nie maszyny.

Wszystko, co powinien wiedzieć programista o Java Virtual Machine

Zdecydowana większość programistów Java wykorzystuje w swojej codziennej pracy Java Virtual Machine, czyli Maszynę Wirtualną Javy (w skrócie JVM). W poniższym artykule przedstawiamy wszystko, co powinien wiedzieć programista na temat tego niezwykle przydatnego narzędzia.

 

 

JVM (Java Virtual Machine) – czym jest?

 

Do najczęściej wybieranych technologii i języków programowania z całą pewnością można zaliczyć Java. Java dominuje na rynku ofert pracy, dlatego nie ma się co dziwić, że tak wielu początkujących programistów poszukuje w internecie informacji na temat narzędzi i rozwiązań, które ułatwiają wykonywanie codziennych zadań. 

Java Virtual Machine to absolutna podstawa działania wszelkiego rodzaju programów i aplikacji napisanych w Javie. Program ten to zestaw poleceń służący do wykonywania poleceń na wirtualnej maszynie. Java Virtual Machine w trakcie funkcjonowania programu interpretuje polecenia, a następnie tłumaczy je na instrukcje niższego poziomu. JVM konwertuje kod bajtowy Javy na kod maszynowy. Java Virtual Machine to część środowiska Java Runtime Environment (JRE). Java to specjalizacja branży IT, która cieszy się znaczną popularnością właśnie ze względu na dostęp do wielu funkcjonalności ułatwiających codzienną pracę programistom.

 

 

Do czego używana jest JVM?

 

Java Virtual Machine interpretuje kod bajtowy Javy niezależnie od środowiska, na którym ją zainstalowano. Za pomocą JVM można uruchamiać programy napisane w różnych językach, takich jak:

  • Java,
  • Kotlin,
  • Grovy,
  • Scala.

Co więcej, w JVM uruchomimy w zasadzie program napisany w dowolnym języku – najważniejsze, by był on kompilowany do kodu bajtowego Javy. Tym, co przyświecało twórcom JVM, było wprowadzenie możliwości uruchamiania tej samej aplikacji bez potrzeby modyfikowania kodu na zróżnicowanych platformach sprzętowych. Działali oni zgodnie z hasłem “Write Once, Run Anywhere” (WORA). Trzeba przyznać, że jeśli chodzi o trendy automatyzacji i usprawnienia dedykowane programistom, Java Virtual Machine cieszy się znaczną popularnością wśród specjalistów z całego świata.

JVM to warstwa, która pośredniczy pomiędzy końcowym plikiem binarnym a systemem operacyjnym i procesorem. Dzięki niej kod skompilowany do postaci kodu bajtowego Javy nie musi być rekompilowany w nowej architekturze. Jak wygląda uruchomienie programu na nowej architekturze? To banalnie proste. Wystarczy, że zainstalujemy na niej maszynę wirtualną Javy. Ważne jest jedynie to, by dany program był kompilowany do kodu bajtowego Javy.

 

 

Architektura JVM

 

Na architekturę JVM składa się szereg elementów. Osoby, które stawiają pierwsze kroki w zawodzie programisty, szczegółowe informacje na temat zasad stosowania JVM mogą poznać na kierunkowym kursie bądź bootcampie. Na architekturę JVM składają się:

  • Ładowarka klas (Class Loader). Jest to podsystem, który wykorzystuje się do ładowania plików klas. Wykonuje on ładowanie, inicjowanie i łączenie.
  • Obszar metod (Method Arera). Odpowiada za przechowywanie struktur klas – metadanych, kod metod czy stałych pul czasu wykonywania.
  • Sterta (Heap). Są na niej przechowywane wszelkiego rodzaju obiekty oraz powiązane z nimi zmienne instalacji. Jest to pamięć wspólna oraz współdzielona przez kilka wątków.
  • Stosy języka (language Stacks). Ich zadaniem jest przechowywanie zmiennych lokalnych i częściowych wyników. Wszystkie wątki posiadają przyporządkowany własny stos JVM, który tworzony jest jednocześnie w trakcie tworzenia danego wątku.
  • Rejestr komputera PC (PC Registers). Przechowuje on adres aktualnie realizowanej instrukcji maszyny wirtualnej Java. Każdy wątek w Java posiada osobny rejestr PC.
  • Stosy metod natywnych (Native Method Stacks). Przechowywane są w nich instrukcje kodu natywnego w zależności od danej biblioteki natywnej.
  • Platforma programistyczna (Native Method Interface). Narzędzie, które pozwala na to, by dany kod mógł wywoływać biblioteki i aplikacje natywne.
  • Biblioteki (Native Method Libraries). Jest to zbiór bibliotek natywnych, które są niezbędne do tego, by silnik wykonawczy działał prawidłowo.

 

 

Just-In-Time Compiler (JIT)

 

Twórcy JVM dokładają wszelkich starań, aby ich rozwiązanie zapewniało jak najwyższy komfort programowania. W przypadku, gdy maszyna wirtualna odnotuje, że któryś fragment kodu powtarzany jest stosunkowo często w naszym kodzie, nastąpi skompilowanie go do kodu maszynowego, a tym samym dojdzie do przyspieszenia jego wykonania. 

Opisany mechanizm określa się jako Just-In-Time Compilation. Dzięki temu narzędziu znacząco wzrasta wydajność specjalistów. Mogą oni zaoszczędzić również mnóstwo czasu. 

 

 

JVM, czyli sposób na “odśmiecanie” pamięci

 

Podstawowym atutem Java Virtual Machine jest znaczące usprawnienie całego procesu zarządzania pamięcią. Chodzi o to, że podczas otwierania jakiegoś obiektu nie musimy zazwyczaj zwracać uwagi na to, by później go samodzielnie skasować. Odpowiada za to specjalny mechanizm, który nazywa się garbage collector.

Uruchamia się on co jakiś czas całkowicie automatycznie i odpowiada za odnajdywanie takich obiektów, co do których jesteśmy pewni, że nie będą już używane w naszym programie i można je usunąć. Dzięki temu mechanizmowi cały proces projektowania oprogramowania przebiega znacznie sprawniej.

Porozmawiajmy!

    Wypełnij formularz,
    a my pomożemy Ci wdrożyć najnowsze rozwiązania!