1. ホーム
  2. java

[解決済み】javacとEclipseコンパイラの違いは何ですか?

2022-04-13 23:53:19

質問

EclipseのJavaコンパイラは、Javaと同じコアのラッパーに過ぎないのでしょうか? javac それとも、まったく別のコンパイラなのでしょうか?もし後者なら、なぜ車輪の再発明をしたのでしょうか?

解決方法は?

Eclipseは、独自のコンパイラである Java用Eclipseコンパイラ (ECJ)です。

Sun JDKに同梱されているコンパイラであるjavacとは別物です。特筆すべき違いは、Eclipseコンパイラーでは、実際には適切にコンパイルされなかったコードを実行できることです。エラーのあるコードブロックが一度も実行されなければ、プログラムは問題なく実行されます。 そうでない場合は、コンパイルされていないコードを実行しようとしたことを示す例外が投げられます。

もうひとつの違いは、Eclipse コンパイラーは Eclipse IDE 内でインクリメンタル・ビルドが可能であること、つまり、入力が終わると同時にすべてのコードがコンパイルされることです。

Java SDKをインストールしなくても、EclipseでJavaのコードを書き、コンパイルし、実行することができるので、Eclipseに独自のコンパイラーが付属していることも明らかです。

javacよりもECJが好まれる例をいくつか挙げます。