Java – narzędzia

Java- narzedzia

W języku potocznym pod nazwą Java kryje się wiele modułów, rozumie się nie tylko jako język programowania, ale także jako środowisko uruchomieniowe i cały pakiet programistyczny.

W tym artykule znajdziesz odpowiedzi na poniższe pytania:

  • Czym wyróżnia się język programowania Java w porównaniu do innych?
  • Czym różni się JDK a JRE?
  • Czym jest JVM i jaką pełni rolę?
  • Jakie narzędzia posiada JDK?
  • Jakie narzędzia posiada JRE?

Produkt dostępny jest dla wielu systemów operacyjnych, a więc można powiedzieć, że Java jest językiem wieloplatformowym. Został utworzony przez firmę Sun, a którego obecnym właścicielem jest Oracle Corporation. W artykule Java – licencjonowanie i wersjonowanie możemy znaleźć jaką aktualnie rolę pełni Oracle Corporation. Wyróżnia się kilka platform Javy: Standard Edition, Enterprise Edition, Micro Edition. Skupimy się jedynie na edycji standardowej (Java Platform, Standard Edition – zwana wcześniej jako J2SE).

Język programowania

Język programowania Java służy do wytwarzania kodów źródłowych, które następnie są kompilowane do kodu bajtowego. Sam język programowania Java należy do języków wieloparadygmatowych. Języki programowania, poza przynależnością do określonego paradygmatu (deklaratywne, logiczne, funkcyjne, imperatywne, obiektowe, strukturalne itd.) rozważa się w kontekście typizacji – system typów. Tak jak na obrazku przedstawiono, Java jest językiem silnie typowanym i typowany statycznie.

Dwie niezależne klasyfikacje języków
źródło: https://blogs.agilefaqs.com/2011/07/11/dynamic-typing-is-not-weak-typing/

Produkty

Pakiet Java Development Kit, w skrócie JDK zawiera w sobie środowisko uruchomieniowe (JRE) oraz zestaw narzędzi niezbędnych do kompilowania oraz budowania gotowych uruchamialnych plików.

Pakiet Java Runtime Environment, w skrócie JRE zawiera w sobie wszystkie niezbędne narzędnika do uruchomienia zbudowanych plików.

Do wersji Java 11, Oracle wypuszczał zestaw JRE jako niezależny pakiet. Począwszy od wersji 11 należy pobrać cały pakiet JDK lub utworzyć niestandardowe środowisko JRE.

Wirtualna maszyna Javy (Java Virtual Machine, w skrócie JVM) to środowisko zdolne do wykonywania skompilowanego kodu aplikacji. Posiada takie narzędzia jak kompilator JIT i garbage collector.

Kompilator JIT działa w czasie wykonywania programu i jego celem jest skompilowanie kodu bajtowego Java do natywnego kodu wykonywalnego, który wykonywany jest bezpośrednio przez procesor.

Zadaniem Garbage Collector’a jest dbanie o alokowaną pamięć, czyszczenie z nieużywanych plików oraz wydajność aplikacji.

Komponenty zawarte w Java Development Kit

Wytwarzanie kodu

Aby móc zrozumieć działanie poszczególnych modułów/komponentów w JVM należy prześledzić cykl wytwarzania oprogramowania i zrozumieć jaką rolę odgrywa wirtualna maszyna Java, czyli Java Virtual Machine. Pierwszym krokiem w wytwarzaniu oprogramowania jest napisanie kodu źródłowego przez programistę.

To właśnie w tym miejscu najczęściej popełniane są błędy wydajnościowe. Wprowadzone mechanizmy i zmiany w wersjach mają na celu zadbać o optymalizację tego kodu. 

Następnym krokiem jest zbudowanie artefaktu przy pomocy kompilatora javac. Wynikiem kompilacji kodu źródłowego przez javac są pliki z rozszerzeniem class, czyli kod bajtowy.  Ostatnim krokiem jest uruchomienie kodu bajtowego na wirtualnej maszynie Java, który następnie będzie interpretowany i cały czas analizowany pod względem wydajnościowym. Wirtualna maszyna Javy zbiera szereg informacji na temat wykonywanego kodu np. czas wykonywania poszczególnych funkcji oraz liczba wywołań danej metody.

Jeszcze przed samym uruchamianiem programu maszyna wykonuje następujące procesy:

  • wczytywanie plików z rozszerzeniem class do pamięci JVM,
  • weryfikacja definicji klas (zmienne mają wartość prawidłowego typu, bytecode nie próbuje w złośliwy sposób manipulować stosem),
  • przygotowanie plików, czyli tworzenie i inicjalizacja wszystkich pól statycznych,
  • rozwiązywanie zależności, który zapewnia, że każdy typ jest gotowy do wykorzystania,
  • proces inicjalizacji obiektu

Dzięki takiemu rozwiązaniu, program może zostać uruchomiony na każdej platformie, na której jest możliwość zainstalowania wirtualnej maszyny Java.

Wirtualne maszyny Javy

W przypadku implementacji wirtualnej maszyny Javy jest podobnie jak z dystrybucją JDK. Istnieje kilka produktów, które implementują specyfikacje Wirtualnej Maszyny Java. Referencyjną implementacją wirtualnej maszyny Java jest HotSpot rozwijany przez projekt OpenJDK. Innymi słowy większość dostępnych produktów rozszerza HotSpot dodając funkcjonalności specyficzne dla konkretnych grup docelowych. Do takich implementacji należy Eclipse OpenJ9, Amazon Corretto oraz Azul Zulu. W niniejszej pracy został użyty JVM z pakietu OpenJDK.


Ciekawe artykuły

  1. J.Kubryński, Co każdy programista Java powinien wiedzieć o JVM, https://bottega.com.pl/pdf/materialy/jvm/jvm1.pdf

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *