Javaの特徴

Javaには様々な特徴がありますが、オブジェクト指向とは…と始めてしまうと解りにくく勉強のモチベーションも続きません。
ここでは、これから学んでいく上で前提となる特徴だけを説明します。

Java仮想マシン

C言語ではコンパイラにより実行可能なプログラム(exe)が作成されましたが、実はこのプログラムはWindows上でしか実行できません。
と言うのも、元来は各コンピュータ毎に異なる機械語で書かれていたプログラムを、人間が理解しやすいソースコードという形で記述してコンパイルすることでコンピュータの読めるプログラムにしていました(高級言語)。
それは実行環境が異なれば同じソースコードでも実行環境に依存してコンパイルし直す必要があるとも言えます。

そんな中で仮想マシン(Virtual Machine、以下VM)と呼ばれる仕組みが生まれました。
コンピュータやOSに依存する箇所はVMと呼ばれるプログラムで吸収し、そのプログラム上で作成したプログラムを実行します。
すると、実行するコンピュータ毎にVMは作る必要がありますが、作成したプログラムは全て再利用できることになります。

似た仕組みとしてはエミュレータと呼ばれるものがあります。
例えばMac用のWindowsエミュレータは、Mac-OS上で架空のプログラムを実行し、その上でならばWindowsのプログラムを使用できるというものです。

Javaはこのような仮想マシンの仕組みを取り入れており、Java仮想マシン(以下JVM)と呼ばれます。

クラスファイル

JavaのプログラムはJVM上で実行される為、専用の実行ファイルにコンパイルされます。
この専用の実行ファイルはJVM上でしか実行できず、中間コード(Javaバイトコード)と呼ばれます。
クラスファイル(Javaバイトコード)に変換すればどのような環境でもJVMさえあれば実行できると言えます。

JRESDK

JREとはJava Runtime Environmentの略で、Javaバイトコードを実行する為に必要な環境の事です。
大雑把に言えばJVMと標準ライブラリがJREに含まれています。
よってJavaのクラスファイルを実行するだけであればJREだけで実行可能になります。

これに対しSDKはSoftware Development Kitの略で、開発の為の基本的なツール郡の事です。
SDKにはJVMを含めJREに含まれるものは全て含んでおり、JREに加えてコンパイラなどの開発用ツールが含まれます。