バイトコード
バイトコードでいう仮想マシンとは、エミュレータのことである。エミュレータは、何かを真似するハードウェアやソフトウェアのことをいう。仮想マシンは一台のコンピュータを仮想的に複数存在させて動かしたり、アーキテクチャの異なるシステム上で、同じソフトウェアを動作させたりすることができる。
バイトコードは、命令の体系がバイト単位で扱われるところからきている用語である。また、一バイトのオペコードが使われているJavaで、エミュレータのマシン語をバイトコードと表現することが広まったため、こういった性質に関係なく、エミュレータで動作させるために作られた実行可能なバイナリ表現の中間言語をバイトコードと呼ぶようになった。
中間コードや中間言語と呼ばれるものは、人間が記述したソースコードと機械語の中間に位置する言語のことである。オペコードは実行させる操作のタイプを指定する部分のことで、この命令は一個で構成される。これと対になる操作対象部分はオペランドと呼ばれている。オペコードは数学でいう演算子で、オペランドは式に内包される演算対象の数値のことである。
マシン語や機械語と呼ばれるものは、二進数のバイナリで作られたバイナリコードのことである。オブジェクトコードやネイティブコードともいう。これらは機械が理解できる言葉のこと。人間が作ったソースコードはこれに変換、あるいは翻訳しなければコンピュータはそれを理解できない。この作業のことをコンパイルといい、通常はこういった作業が行われる。
バイトコードは、人間が記述したソースコードをコンパイラによって変換したものであり、実行時に仮想マシンを使って、実在するコンピュータが理解できる機械語へと置き換える。
そのため、仮想マシンがあればプラットフォームごとにそれぞれ対応した機械語を用意する必要が無く、異なるプラットフォーム間でも同じプログラムを動かすことができるようになる。インタプリタ型には、もともとこういった特性があり、こういった特性を残しながら、ソースコードより速い処理ができるバイトコードが用いられる訳である。
バイトコードが使われるプログラミング言語は、インタプリタ型とコンパイラ型の中間的な存在である。インタプリタは、細かく翻訳と実行を繰り返しながらコンパイルを行うタイプで、コンパイラ型はあらかじめまとめてコンパイルしてから実行へと移る。バイトコードは仮想環境を利用し、移植性や処理能力の向上を求めて考えられた仕組みである。