バイトコードと仮想マシーン
WindowsやmacOSなどのPC向けプログラムはスパコンでは動かない
パソコンとスパコンでは、CPUが理解できる命令(マシン語)が異なるから
しかし、Javaで開発したプログラムはPCでもスパコンでも同様に動く
これは、Javaコンパイラから出力されるバイトコードが特定のCPUに依存しない凡用的なマシン語であるため
Windows用のマシン語にスパコンで実行する場合にはスパコン用のマシン語に変換される
PCやスパコン中にある
「凡用マシン語を理解するコンピューター」がバイトコードを実行しているように見える
これが「Java仮想マシン(JVM)」という名前の由来
スパコン
一般的なコンピュータでは解くことが困難な大規模で高度な科学技術計算を高速に行うことができ、主に研究機関や企業などで使われている
パソコンの数十万倍の速度での計算処理を可能とする高性能なコンピューターのこと
バイトコード
Javaの仮想マシンのために用いられる実行可能なプログラムとしてのバイナリデータ
機械語ではなく、中間コードに分類
開発の流れで理解
コンパイル
- ソースコードはそのままでは実行できない
- コンパイルという処理を行い、ソースファイルをクラスファイルに変換する「.class」
- ソースコードの各命令をコンピューターが実行しやすいように変換したバイトコードというものが中に詰まっている
- コンパイルはコンパイラというソフトウェアを用いて誤りがあればコンパイルが失敗し誤りの箇所が指摘される
実行
- バイトコードはソースコードに比べ実行に適しているが、実行はできない
- インタリプタと呼ばれるソフトウェアに対してバイトコードの変換実行を依頼する
- インタリプタは内部にJVMという仕組みを持っていて結果としてコンピューターはソースコードで支持した通りに動作する