JREやらJDKやら
javaのCLASSPATHについて調べてたらJDKやらJREやらバージョンが多くて混乱してきたのでメモ。
まずはJavaを動かすために必要なもの。これは以下の4つ。
この4つはWindowsにもLinuxにも標準装備されていない。よって、自力でインストールする必要がある。(ただしソースコードについては別)
▼API(J2SE、J2EE)
関数群のこと。
Javaには死ぬほどたくさん関数が用意されているため、一気にインストールすると大変。ということで、必要に応じてインストールしてやる。
代表的なAPIがJ2SEとJ2EE。
▼コンパイラとJava VM(Java Virtual Machine)
Java VMとは、Javaを実行するためのソフトウェア。
ただし、ソースコードを書いただけではもちろん実行できない。なぜならJava言語を理解できないから。
よって、Java VMが理解できるように翻訳してやるコンパイラが必要となる。
▼結局なにをインストールすればいいのか
JDKというものをインストールしてやると、以下の3つが一気に準備できる。
つまりJDKとは、Javaのコードを作成して実行するためのキット。
ちなみに最新バージョンはJDK1.6(6.0)で、1.4まではJDKのことはJ2SDKと呼んでいた。大変紛らわしい。
▼で、JDKとJREの違いは?
JDKは↑の通り、開発環境のキット。一方、JREは実行環境のキット。JREにはコンパイラやAPIなどは含まれない。
他にも以下のような違いがある。
- JDKは複数のバージョンを使い分けることができるが、JREは使い分けができず、常に最新のバージョンが推奨される。(自動的にネットでチェックして新しいバージョンがあれば更新可能であることをユーザに通知するのがデフォルトの設定)
- 同じバージョンのJDKとJREをインストールしても不整合は生じない。
- JDKとJREが混在したときのPATH、CLASSPATH
JDKやらJREやらについて疑問が沸いたきっかけというのが、JUnitを起動したときに、
「なぜCLASSPATHに%JUNIT_HOME%\junit.jarを指定しているのに、jre1.6.0_02のPATHが通されるのか」
だったので、たぶん3つ目のあたりがポイントなんだろう。