JIT (ang.Just In Time) to metoda wykonywania programów polegająca na kompilacji do kodu maszynowego w locie, czyli bezpośrednio przed wykonaniem danego fragmentu kodu.
Cała procedura wygląda następująco:
program jest rozpowszechniany w postaci kodu bajtowego
na maszynie, na której program zostaje uruchomiony, maszyna wirtualna decyduje co kompilować a co interpretować. W szczególności może niczego nie kompilować, a wszystko interpretować, zwykle kompiluje tylko te części kodu które były już wiele razy uruchomione lub o których sądzi że zaraz będą (np. wnętrza pętli).
JIT jest bardzo obiecującą techniką. Jest szybszy od zwykłej interpretacji, a w przeciwieństwie do kompilacji
zachowuje przenośność kodu i umożliwia optymalizacje dokładnie dostosowane do parametrów maszyny (co może znacząco wpłynąć na wydajność).
Główną konkurencją dla JITa są popularna na Uniksach metoda rozpowszechniania źródeł, które dopiero na ostatecznej maszynie
zostaną skompilowane (kompilacja taka trwa jednak o wiele dłużej - po pierwsze skompilowane musi zostać wszystko, po drugie wychodzi się od źródeł zamiast od byte-kodu), oraz rozpowszechnianie wielu wersji programu dla różnych podwersji platformy (np. jedna wersja dla Pentium III, inna dla K6, inna dla Athlonów itd).
W wielu zastosowaniach tradycyjna kompilacja czy też interpretacja są w pełni wystarczające.
JIT jest używany głównie przez maszyny wirtualne Javy.