Jason. Cała informatyka w jednym miejscu!

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 napisać, kompilacja w języku Java działa pół na pół. Kompiluje się do kodu pośredniego, aby go potem interpretować :D. Wyjaśnienia zostawiam w środku.

KOMPILACJA W JĘZYKU JAVA DZIAŁA TROCHĘ INACZEJ NIŻ MOŻESZ MYŚLEĆ

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. Kiedy zostanie uruchomiony program, to interpreter wchodzi na scenę i wykonuje swoją część zadań. To prawda, że Java jest kompilowana, ale wykonywanie instrukcji na bieżąco zawdzięczamy interpreterowi.

Logo języka Java

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. Kompilacja w języku Java działa zatem do połowy!

Źródło: Wikipedia

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 wyrzuci 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 przez blok "try-catch"), po prostu przerywa dalsze egzekwowanie metody (jeśli w metodzie pojawił się problem). "Brutalne" wyjście programu występuje tylko przy wyjątku "NullPointerException", ale to tak na marginesie.


Od teraz, bądźcie świadomi: kompilacja w języku Java sprowadza się do wytworzenia kodu pośredniego, który on sam jest później interpretowany!

PODOBNE ARTYKUŁY