Trình biên dịch JIT (Just-In-Time) biên dịch mã vào thời gian chạy, tức là khi chương trình đang chạy. Do đó, chi phí biên dịch là một phần của thời gian thực hiện chương trình, và do đó nên được giảm thiểu.
Đối lập với điều này là trình biên dịch trước thời hạn (AOT), về cơ bản đồng nghĩa với "trình biên dịch bó". Điều này chuyển đổi mã nguồn thành mã máy và sau đó chỉ mã máy được phân phối. Do đó, trình biên dịch có thể rất chậm vì nó không ảnh hưởng đến thời gian thực hiện của chương trình kết quả.
Ngày nay, khi mọi người nói "trình biên dịch", họ thường có nghĩa là trình biên dịch AOT. Thật vậy, thuật ngữ "Trình biên dịch AOT" chỉ thực sự bắt đầu trở nên phổ biến gần đây khi mọi người bắt đầu tạo trình biên dịch AOT cho các ngôn ngữ được biên dịch JIT, đặc biệt là JavaScript. Nhiều ngôn ngữ trong số này, ví dụ C #, biên dịch sang ngôn ngữ trung gian cho VM sau đó được JIT biên dịch thành mã máy vào thời gian chạy. Thuật ngữ "Trình biên dịch AOT" có ý nghĩa rằng mã nguồn sẽ được biên dịch trực tiếp thành mã máy, do đó không cần phải có hình thức biên dịch JIT nào trong thời gian chạy.
"Trình biên dịch hàng loạt" là một chút của một thuật ngữ cổ xưa tại thời điểm này. Sự tương phản thực sự với một trình biên dịch hàng loạt khi thuật ngữ này phổ biến là một trình biên dịch gia tăng . Biên dịch tăng dần thường được liên kết với các ngôn ngữ như Lisp nơi bạn đã có REPL và bạn có thể tương tác yêu cầu triển khai ngôn ngữ để biên dịch một chức năng cụ thể. Nếu một chức năng đã được thực thi mà việc biên dịch chưa được yêu cầu trước đó, thì nó thường sẽ được giải thích. Ngược lại, một trình biên dịch bó, biên dịch tất cả các hàm cùng một lúc, tức là trong một đợt.