Aby się mocno nie przemęczyć, teraz będzie lekki artykuł rozwiewający wątpliwości na temat Javy. Jak to z nią jest, Java jest kompilowana czy interpretowana? Czy może jedno i drugie? Jakby to Wam powiedzieć, działa ona pół na pół. Kompiluje się do kodu pośredniego, aby go potem interpretować. Wyjaśnienia zostawiam poniżej.

JAVA JEST KOMPILOWANA, ALE DO PEWNEGO MOMENTU

Prześledźmy cały przebieg postępowania języka Java od kliknięcia "kompiluj" do uruchomienia aplikacji. W pierwszym momencie jest sprawdzany cały nasz kod źródłowy w celu wykrycia potencjalnych błędów składniowych. Jeżeli teraz jest sprawdzenie kodu to znaczy, że musi działać kompilator, gdyż on sprawdza cały kod przed uruchomieniem programu. Po pomyślnym zweryfikowaniu składni i skompilowaniu programu zostają utworzone nowe pliki. To jest drugi dowód na to, że kompilator maczał w tym palce. Konkretnie pisząc, są to pliki klasowe wytwarzane przez działanie kompilatora. I w tym momencie, to interpreter wchodzi na scenę i wykonuje swoją część zadań. To prawda, że Java jest kompilowana, ale do pewnego momentu.

Java jest kompilowana i interpretowana jednocześnie!

Java w celu zapewnienia niezależności platformowej, musi najpierw skompilować kod źródłowy na pliki pośrednie, a te z kolei są przechwytywane przez interpreter, aby "podstawić" je pod aktualnie wykorzystywany system operacyjny. Java jest zatem i kompilowana, i interpretowana!

JAVA JEST KOMPILOWANA I INTERPRETOWANA ZARAZEM!

Cała "magia" charakteryzująca się możliwością ujrzenia takiego samego działania na różnych platformach bez żadnych modyfikacji kodu czy nawet kompilacji warunkowej, kryje się pod działaniem interpretacji kodu bajtowego przez wirtualną maszynę Javy (Java Runtime Environment). W chwili, gdy ujrzymy okno (zakładając, że jest to aplikacja z graficznym interfejsem), za uruchomienie i wykonywanie czynności aż do zamknięcia procesu odpowiedzialny jest interpreter należący do środowiska uruchomieniowego. Spadek wydajności również jest spowodowany korzystaniem z interpretera (to oczywiście nie jest jedyny powód). Jeżeli wywali Wam wyjątek w konsoli, to przecież nie musi to powodować natychmiastowego zamknięcia aplikacji. Dlaczego? Ponieważ interpreter wykonuje czynności jedna po drugiej, a w chwili natrafienia na wyjątek (który nie został obsłużony klauzulą "try-catch", więcej informacji o tym znajdziecie w tym artykule), po prostu przerywa dalsze egzekwowanie funkcji (jeśli w funkcji pojawił się problem). "Brutalne" wyjście programu występuje tylko przy wyjątku "NullPointerException" w "Android Studio", ale to tak na marginesie.


Od teraz, bądźcie świadomi: Java jest kompilowana i interpretowana jednocześnie! Kończę pisanie na dzisiaj. Dziękuję za przeczytanie i do jutra! Teraz będzie weekend więc nie przewiduję żadnych przeszkód w redagowaniu.

PODOBNE ARTYKUŁY