通常プログラムを実行する時には、最終的に各プラットフォームに対応したネイティブコードに変換されて実行されるが、このネイティブコードが各プラットホームごとに違うため、あるプラットホームで動いていたプログラムが、別のプラットホームでは動かない。
この問題をJavaはJava仮想マシンと呼ばれるソフトウェアを使うことで、見事に解決した。Javaのソースコードはコンパイルすると、バイトコードと呼ばれる中間コードに変換されます。バイトコードが書かれたファイルをクラスファイルといい、Javaのプログラムはクラスファイルの状態で配布されます。