Kompiler JIT (Just-In-Time) mengkompilasi kode pada saat run-time, yaitu ketika program sedang berjalan. Oleh karena itu biaya kompilasi adalah bagian dari waktu pelaksanaan program, dan karenanya harus diminimalkan.
Kebalikan dari ini adalah kompiler di masa depan (AOT) yang pada dasarnya identik dengan "kompiler batch". Ini mengubah kode sumber menjadi kode mesin dan kemudian hanya kode mesin didistribusikan. Oleh karena itu, kompiler dapat menjadi sangat lambat karena tidak memengaruhi waktu eksekusi program yang dihasilkan.
Saat ini, ketika orang mengatakan "kompiler" mereka biasanya berarti kompiler AOT. Memang, istilah "kompiler AOT" hanya benar-benar mulai menjadi populer relatif baru-baru ini ketika orang mulai membuat kompiler AOT untuk bahasa yang dikompilasi JIT, khususnya JavaScript. Banyak dari bahasa ini, misalnya C #, kompilasi ke bahasa perantara untuk VM yang kemudian dikompilasi dengan JIT ke kode mesin saat run-time. Istilah "kompiler AOT" memiliki konotasi bahwa kode sumber akan dikompilasi langsung ke kode mesin, jadi tidak ada bentuk kompilasi JIT yang diperlukan saat run-time.
"Batch compiler" adalah sedikit istilah kuno pada saat ini. Kontras nyata dengan kompiler batch ketika istilah itu populer adalah kompilator tambahan . Kompilasi tambahan sering dikaitkan dengan bahasa seperti Lisp di mana Anda memiliki REPL dan Anda bisa secara interaktif meminta implementasi bahasa untuk mengkompilasi fungsi tertentu. Jika suatu fungsi dieksekusi yang kompilasinya tidak diminta sebelumnya, biasanya akan ditafsirkan. Sebuah kompiler batch, sebaliknya, mengkompilasi semua fungsi sekaligus, yaitu dalam sebuah batch.