Dlaczego JVM to interpretor, a nie kompilator

0

Zawsze myślałem, że JVM to taki wirtualny komputer, który wykonuje binarny kod (bytecode) w asemblerze JVM tak jak Windows/Unix wykonuje program w języku C.

Dlaczego Java jest językiem interpretowalnym?

Pozdrawiam!

0
NiktWazny napisał(a):

Dlaczego Java jest językiem interpretowalnym?
Nie koniecznie: http://pl.wikipedia.org/wiki/GNU_Compiler_for_Java

0

Windows/Unix nie wykonują programu w języku C, tylko ładują kod x86 do pamięci i przekazują sterowanie do tego kodu. Z czego ten kod jest wygenerowany nie ma większego znaczenia - może to być C, ale równie dobrze też Haskell, czy Fortran.

Referencyjne JVM (czyli to Oraclowe) to JIT (Just-In-Time, w domyśle kompilator), czyli środowisko uruchomieniowe, które z początku interpretuje kod, a gdy dany kawałek kodu jest wykonywany wiele razy (staje się tzw gorącym punktem, stąd nazwa wewnętrznego JITa czyli HotSpot) to ten kawałek zostaje skompilowany do kodu natywnego, np x86 i ten kod jest wykorzystywany zamiast interpretowania bajtkodu Javy.

0

@niktWazny zauważ ze procesor komputera potrafi wykonywać tylko instrukcje dla procesora. W efekcie JVM musi zamieniać bytecode na kod zrozumiały na procesora i na tym etapie odbywa się interpretacja kodu (a czasem też kompilacja JIT)

1 użytkowników online, w tym zalogowanych: 0, gości: 1