R154OP4VMKRV6
Zdjęcie przedstawia kartkę zapisaną wzorami matematycznymi, to układ równań.

I_P_W13_M01_Java Rozpoczynamy przygodę z programowaniem

Źródło: Antoine Dautry, domena publiczna.

Wprowadzenie do materiału

Pznaliśmy już podstawowe informacje o języku Java. Wiemy, skąd się wywodzi, do czego jest wykorzystywany oraz jak przygotować środowisko pracy programisty, czyli zainstalować potrzebne narzędzia i uruchomić pierwsze programy w wybranym środowisku programistycznym.

Teraz przejdziemy do bardzo ważnego pytania: co dzieje się z kodem, który programista zapisuje w pliku? Gdy piszemy instrukcje w języku Java, są one zrozumiałe dla człowieka, ale komputer nie potrafi wykonać ich bezpośrednio w takiej postaci. Zanim program zostanie uruchomiony, kod musi zostać przetworzony na formę, którą może odczytać i wykonać komputer.

W języku Java ten proces jest szczególnie ciekawy, ponieważ kod źródłowy nie jest od razu zamieniany bezpośrednio na kod maszynowy konkretnego komputera. Najpierw zostaje skompilowany do tak zwanego kodu bajtowego, a dopiero później jest wykonywany przez Wirtualną Maszynę Javy, czyli JVM. Dzięki temu program napisany w Javie może działać na różnych systemach operacyjnych, o ile znajduje się na nich odpowiednia wersja JVM.

W tym materiale dowiemy się, czym są pliki .java i .class, jaką rolę pełni kompilator javac, czym jest JIT, a także jakie elementy wchodzą w skład Java Development Kit, czyli JDK. Zrozumienie tych pojęć pozwoli lepiej wyjaśnić jedną z najważniejszych cech języka Java: zasadę WORA, czyli „Write Once, Run Anywhere” — napisz raz, uruchamiaj wszędzie.

W jaki sposób jest wykonywany kod źródłowy w języku Java?

Kod źródłowy tworzy w swoim IDE programista. Zanim dojdzie do uruchomienia programu, w komputerze zachodzi seria procesów, głównie związanych z kompilacją. Przebieg wszystkich operacji w języku Java, związanych z wykonywaniem kodu źródłowego, przedstawia poniższa ilustracja.

RBc1E2DT4snIv
Cały proces wykonania kodu źródłowego Javy można podzielić na procesy zachodzące w trakcie kompilacji, czyli jeszcze przed uruchomieniem programu, oraz na procesy zachodzące w trakcie działania programu.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Procesy zachodzące w trakcie kompilacji

Kod źródłowy napisany w języku Java (plik z rozszerzeniem .java) trafia najpierw do kompilatora (javac). Jest on wtedy wstępnie tłumaczony z jednego języka (źródłowego) na równoważny inny język (wynikowy). Oznacza to, że jest kompilowany do postaci kodu bajtowego języka Java (plik z rozwinięciem .class).

Procesy zachodzące podczas działania programu

Kod bajtowy języka Java jest tłumaczony przez kompilator JIT (Just in Time), dzięki czemu przyjmuje postać kodu maszynowego, zrozumiałego dla procesora. Kompilator JIT jest jednym z komponentów JVM – Wirtualnej Maszyny Javy.

Kod źródłowy języka Java jest tworzony dla każdego systemu operacyjnego w ten sam sposób (zgodnie z WORA principle), natomiast JVM jest specyficzne dla danego systemu operacyjnego.

RJkMiMIs56VZB
Architektura Java Development Kit
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Komponenty Java Development Kit:

  • JRE (Java Runtime Environment), w tym JVM oraz różne biblioteki i archiwa potrzebne do pisania i uruchamiania programów;

  • narzędzia programistyczne, takie jak np. kompilator (javac).