javac和Eclipse编译器有什么区别?

时间:2010-06-17 12:41:42

标签: java eclipse javac

Eclipse的Java编译器只是围绕javac程序所包含的同一核心的包装器,还是一个单独的编译器?如果是后者,为什么他们会重新发明轮子?

4 个答案:

答案 0 :(得分:195)

Eclipse已经实现了自己的编译器,名为Eclipse Compiler for Java(ECJ)。

它与javac(Sun JDK附带的编译器)不同。一个值得注意的区别是Eclipse编译器允许您运行实际上没有正确编译的代码。如果从未运行带有错误的代码块,则程序运行正常。否则,它将抛出异常,指示您尝试运行无法编译的代码。

另一个区别是Eclipse编译器允许在Eclipse IDE中进行增量构建,也就是说,所有代码都会在您完成输入后立即编译。

Eclipse带有自己的编译器这一事实也很明显,因为您可以在Eclipse中编写,编译和运行Java代码,甚至无需安装Java SDK。

ECJ优于javac的一些例子是:

答案 1 :(得分:36)

每个人都已经解释过他们是不同的。以下是我在两个编译器之间注意到的行为的一些区别。它们都归结为(至少)其中一个实现中的错误。

编译时优化相关

泛型类型推理相关

答案 2 :(得分:16)

Eclipse的内置编译器基于IBM的Jikes java compiler。 (请注意,Eclipse也开始在IBM工作)。它完全独立于JDK中Sun的Java编译器;它不是Sun的javac

的包装器

Jikes已经存在很长时间了,它曾经比标准的JDK Java编译器快得多(但我不知道是否仍然如此)。至于为什么IBM想要编写自己的Java编译器:可能是因为许可原因(他们也有自己的Java实现)。

答案 3 :(得分:14)

它是一个单独的编译器。这是必需的,因为javac不允许从the eclipse site

编译稍微损坏的代码
  

增量Java编译器。作为Eclipse构建器实现,它基于从VisualAge for Java编译器演化而来的技术。特别是,它允许运行和调试仍包含未解决错误的代码。