なぜ Eclipse は JRE を使っているのにコンパイルできるの?

Eclipse で Java 開発をしていて、こんな疑問を持ちませんでしたか?

    Eclipse 自体は JRE で動かしていて、特に JDK を使っていないのに
  Java ソースのコンパイルができているけど、なんでだろう??



Java のコードをコンパイルする場合、Java のコンパイラが必要です。
開発環境では Java のコンパイラや Java クラスライブラリを含む JDK を使用し、
実行環境では JRE を使っているという方も多いのではないでしょうか。

でも、Eclipse では JDK の指定をしなくてもコンパイルがされます。
なぜ、Eclipse で JDK の指定をしなくてもコンパイルがされるのか?
というと、

    Eclipse には独自のコンパイラが含まれているから

なのです。

もう少し正確にいうと、

    Eclipse の Java 開発用のプラグインである JDT(Java Development Tools)の中に、
    「ECJ(Eclipse Compiler for Java)」という Eclipse 独自のコンパイラが含まれている


のです。


Eclipse SDK を使う場合は、SDK の中に JDT が含まれていますので、
JDT 単体のダウンロードは不要ですが、Eclipse Platform を使う場合は、
JDT を単体でダウンロードすることになります。

JDT の単体ダウンロードは、下記の eclipse project downloads ページから可能です。

http://download.eclipse.org/eclipse/downloads/


上記ページでダウンロードしたい Eclipse バージョンのリンクを選択し、
次に表示されたページで「JDT Runtime Binary」をクリックします。

jdt1.gif

図: Eclipse 3.4.2 のダウンロードページ


通常は JDT の存在をあまり意識することはないかもしれません。
しかし、Eclipse を使用してコンパイルするときには、JDT 内の ECJ が準拠すべき
Java のバージョンを、意識して設定しておく必要があります。


準拠バージョンをどのように設定するか、それは次回に!


<追記>

次の記事はこちらです。
Eclipse でコンパイルする際の Java 準拠バージョン設定