bytecode
bytecodeは、人間が読み書きする高水準言語のソースコードと、コンピューターのハードウェアが直接理解するマシンコードの中間に位置する形式です。特定のハードウェアに依存せず、仮想マシンというソフトウェア層を介して動作するため、異なるOSやCPUの間でプログラムを共有できる一度書けば、どこでも動くという移植性を実現しています。
マシンコードとの決定的な違いmachine codeが特定のCPUアーキテクチャ(例えばx86やARMなど)に密接に結びついたバイナリ形式であるのに対し、bytecodeは仮想的なCPU向けに設計されています。実行時には、仮想マシンがこのbytecodeをリアルタイムでマシンコードに変換する(JITコンパイルなど)か、あるいは一行ずつ解釈して実行(インタプリタ方式)します。これにより、開発者はターゲットとなるハードウェアの詳細を意識せずにプログラムを配布することが可能です。
代表的な実装例と動作フロー
最も有名な例はJavaです。Javaコンパイラがソースコードをbytecodeに変換し、それをJava仮想マシン(JVM)が実行します。同様の仕組みはPythonやC#(共通中間言語:CIL)などでも採用されています。
ソースコード(人間が記述) $\rightarrow$ コンパイル $\rightarrow$ bytecode(中間表現) $\rightarrow$ 仮想マシン $\rightarrow$ マシンコード(ハードウェアが実行)
意味
物理的な中央処理装置によって直接ではなく、仮想マシンによって実行されるように設計された、プログラムのソースコードの低レベルな中間表現であること
The Java compiler converts source code into bytecode, which is then run by the Java Virtual Machine.
Javaコンパイラはソースコードをバイトコードに変換し、それがJava仮想マシンによって実行される。