Kompilator JIT (Just-In-Time) kompiluje kod w czasie wykonywania, tj. Podczas działania programu. Dlatego koszt kompilacji jest częścią czasu wykonania programu i dlatego należy ją zminimalizować.
Przeciwieństwem tego jest kompilator wyprzedzający (AOT), który jest w zasadzie synonimem „kompilatora wsadowego”. Konwertuje to kod źródłowy na kod maszynowy, a następnie dystrybuowany jest tylko kod maszynowy. Dlatego kompilator może działać bardzo wolno, ponieważ nie wpływa na czas wykonywania wynikowego programu.
W dzisiejszych czasach, gdy ludzie mówią „kompilator”, zwykle mają na myśli kompilator AOT. Rzeczywiście, pojęcie „kompilator AOT” zaczęło być popularne stosunkowo niedawno, gdy ludzie zaczęli tworzyć kompilatory AOT dla języków kompilowanych w JIT, zwłaszcza JavaScript. Wiele z tych języków, np. C #, kompiluje się do języka pośredniego dla maszyny wirtualnej, która jest następnie kompilowana w JIT do kodu maszynowego w czasie wykonywania. Termin „kompilator AOT” ma konotację, że kod źródłowy zostanie skompilowany bezpośrednio do kodu maszynowego, dlatego w czasie wykonywania nie jest wymagana żadna forma kompilacji JIT.
„Kompilator wsadowy” jest w tym momencie trochę archaicznym terminem. Prawdziwym przeciwieństwem kompilatora wsadowego, gdy termin był popularny, był kompilator przyrostowy . Kompilacja przyrostowa jest często kojarzona z językami takimi jak Lisp, w których posiadasz REPL i możesz interaktywnie poprosić o implementację języka, aby skompilował określoną funkcję. Jeśli funkcja została wykonana, której kompilacji nie zażądano wcześniej, zwykle byłaby interpretowana. Natomiast kompilator wsadowy skompilował wszystkie funkcje jednocześnie, tj. Wsadowo.