【ばいとこーど】

バイトコード とは?

公開:
💡 CPUの言葉と人間の言葉をつなぐ「中間翻訳」。

機械語より抽象度が高く、仮想マシン上で実行される中間コード形式。

📌 このページのポイント
バイトコードの仕組み ソース コード バイト コード 仮想マシン (VM) コンパイル 実行 Windows Mac Linux 同じバイトコードが異なるOSでも動く
バイトコードによる移植性のイメージ
ひよこ ひよこ
ペンギン先生、Javaのプログラムって「.class」っていうファイルになるって聞いたけど、あれは何なの?
ペンギン先生 ペンギン先生
それがバイトコードだよ。ソースコードをコンパイルしてできる、機械語より抽象度が高い中間コードなんだ。
ひよこ ひよこ
機械語とは違うの?
ペンギン先生 ペンギン先生
違うよ。機械語はCPUが直接理解できる命令だけど、バイトコードはJVM(Java仮想マシン)のような仮想マシンが解釈して実行するものなんだ。
ひよこ ひよこ
わざわざ仮想マシンを間に挟むメリットは何?
ペンギン先生 ペンギン先生
一番大きいのは移植性だよ。同じバイトコードなら、WindowsでもMacでもLinuxでも、その環境に対応した仮想マシンさえあれば動くんだ。
ひよこ ひよこ
他の言語でもバイトコードって使われているの?
ペンギン先生 ペンギン先生
うん、Pythonの「.pyc」ファイルや、.NETの中間言語(CIL)なんかも同じ考え方だよ。多くの言語処理系が採用している仕組みなんだ。
ひよこ ひよこ
バイトコードって人間でも読めるの?
ペンギン先生 ペンギン先生
直接は読みにくいけど、逆アセンブラというツールを使えば人間が読める形式に変換できるよ。実行速度を上げるために、実行時にさらに機械語へ変換する「JITコンパイル」という技術もあるんだよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「バイトコード」って出てきたら「仮想マシンが実行する中間形式のコード」と思えればだいたいOK!
📖 おまけ:英語の意味
「Bytecode」 = バイト単位の命令コード
💬 命令が1バイト(またはそれに近い単位)で表現されることが多いことから「バイトコード」と呼ばれているんだよ。
← 用語集にもどる