Bytecode

Bytecode còn được gọi là portable code hoặc p-code, là cách thức lưu trữ dạng mã các chỉ thị (instructions - các opcode) trong lập trình máy tính, được thiết kế để phần mềm thông dịch thực hiện hiệu quả trên nền tảng máy ảo.

Bytecode lưu ở dạng mã nhị phân các lệnh, số, hằng, và tham chiếu (thường là địa chỉ bằng số), là mã hoá kết quả của phân tích và dịch những thứ như kiểu, phạm vi và cấp độ lồng (nesting depth) của các đối tượng chương trình. Do đó, nó cho phép thực thi với hiệu năng tốt hơn nhiều so với việc thông dịch trực tiếp mã nguồn văn bản.

Khi chuyển đổi ngôn ngữ lập trình từ mã nguồn sang mã máy, một số ngôn ngữ lập trình chuyển đổi mã nguồn thành mã trung gian được gọi là bytecode. Java là một trong những ngôn ngữ lập trình chính sử dụng mã bytecode. Quá trình chuyển đổi mã nguồn sang bytecode như sau:


Quá trình chuyển đổi từ mã nguồn sang bytecode. (Nguồn: vi.strephonsays.com)

Trong Java, có một máy ảo tên là Java Virtual Machine (JVM) giúp chạy các chương trình Java. Một máy ảo tương tự như một hệ điều hành được cài đặt trên hệ thống. Khi chạy chương trình Java, trình biên dịch chuyển đổi chương trình Java hoặc mã nguồn thành mã bytecode của Java. Sau đó, JVM chuyển đổi mã bytecode thành mã máy. Mã máy được thực thi trực tiếp bởi máy tính. Bytecode được viết cho JVM. Nó không phải là cụ thể cho máy. Do đó, mã bytecode được thực thi bởi nhiều nền tảng khác nhau như Windows, Linux và Mac. Bytecode có mã số, hằng số và tham chiếu mã hóa kết quả phân tích cú pháp và phân tích ngữ nghĩa.