Code giống như các nốt nhạc, engine giống như nhạc công, còn runtime giống như nhạc cụ

Nếu như một lập trình viên là một nhạc sĩ, thì cái script họ viết ra chính là cái sheet nhạc. Một bản nhạc được phát ra khi nhạc công nhìn vào văn bản nhạc và thao tác trên nhạc cụ. Tương tự, một chương trình chạy được khi engine đọc code và sử dụng runtime. Engine là thứ có thể đọc và hiểu code, còn runtime là toàn bộ những thứ mà engine dùng để tương tác với môi trường bên ngoài.

Nếu như đây là code của một chương trình:
|300
Thì đây là chương trình đó khi nó có engine và runtime:

Có nhiều cách thức để ta ký hiệu âm thanh xuống trang giấy, cũng như có nhiều cách thức để lưu một ý tưởng vào ổ đĩa. JavaScript là một cách để lưu ý tưởng, Python là một cách khác. Cái code mà bạn thường nghe nói tới chính là cái cách để bạn ký hiệu những ý tưởng của mình. Chúng chỉ là những ký hiệu, giống như những dòng chữ này.

Để chạy được những ký hiệu này, chúng cần tới engine, thứ có thể đọc và hiểu chúng. Có nhiều loại runtime khác nhau cho JavaScript, và đây là những runtime bạn thường được nghe đến: Firefox, Chrome, Safari, Opera, Edge, Node, Deno, Electron. Như bạn thấy, 5 cái đầu chính là các trình duyệt chứ chẳng phải là gì xa lạ. Còn Electron chính là cái để viết ra phiên bản desktop cho Obsidian, Notion, Slack, VS Code, Discord, Dropbox, Figma, v.v. Trừ Firefox, Safari và Edge ra, thì tất cả các runtime còn lại đều dùng V8, một engine do Google viết ra.

Node là một runtime, một môi trường thực thi cho JavaScript. Sau một thập kỷ phát triển, tác giả của Node viết đã viết ra Deno để khắc phục những thiếu sót của Node. Có thể xem bài diễn thuyết 10 điều tôi hối hận về Node.js của tác giả. (Tác giả không giải thích cái tên Deno có nghĩa là gì, nhưng nhiều người đoán nó là viết ngược lại của Node.)

Xem thêm:: Stack Overflow, What is the difference between JavaScript Engine and JavaScript Runtime Environment - Stack Overflow

Runtime là lúc chạy, runtime environment là môi trường thực thi. Nhưng nhiều lúc môi trường thực thi được gọi tắt là runtime