HotSpot, używany w OpenJDK, wykorzystuje kompilację JIT, w której kod jest kompilowany do instrukcji maszynowych w trakcie działania programu.

HotSpot stosuje profilowanie wykonywanego programu i może kompilować częściej wykonywane fragmenty z różnymi poziomami optymalizacji. Domyślnie wykorzystywana jest kompilacja warstwowa (tiered compilation), łącząca szybkie rozpoczęcie wykonywania z późniejszą optymalizacją często używanego kodu.

Kompilacja AOT i GraalVM Native Image

Alternatywnym modelem wykonywania programów Java jest kompilacja AOT. Jednym z rozwiązań stosujących ten model jest GraalVM Native Image, które analizuje aplikację i jej zależności podczas budowania, a następnie kompiluje wymagany kod do natywnego pliku wykonywalnego przeznaczonego dla konkretnego systemu operacyjnego i architektury.

Utworzony w ten sposób program nie jest wykonywany przez klasyczną JVM i zawiera potrzebne komponenty środowiska uruchomieniowego. Native Image pozwala m.in. ograniczyć czas uruchamiania i zużycie pamięci, lecz analiza wykonywana podczas budowania wymaga znajomości kodu