Answers:
Eclipse已经实现了自己的编译器,称为Java Eclipse编译器(ECJ)。
它不同于Sun JDK附带的编译器javac。一个显着的区别是Eclipse编译器使您可以运行实际上未正确编译的代码。如果永远不会运行带有错误的代码块,则您的程序将正常运行。否则,它将引发异常,表明您试图运行未编译的代码。
另一个区别是Eclipse编译器允许从Eclipse IDE内部进行增量构建,也就是说,一旦完成键入,所有代码都将被编译。
Eclipse自带编译器的事实也很明显,因为您可以在Eclipse中编写,编译和运行Java代码,而无需安装Java SDK。
与Javac相比,首选ECJ的一些示例是:
-proceedOnError
,否则就不会从带有错误的源生成.class文件。
每个人都已经解释过它们是不同的。这是我在两个编译器之间注意到的一些行为差异。它们全都归结为(至少)一种实现中的错误。
Eclipse的内置编译器基于IBM的Jikes java编译器。(请注意,Eclipse也开始在IBM诞生)。它完全独立于JDK中Sun的Java编译器。它不是Sun公司的包装javac
。
Jikes已经存在很长时间了,它过去比标准的JDK Java编译器要快得多(但是我不知道那是否仍然如此)。关于IBM为什么要编写自己的Java编译器的原因:也许是由于许可的原因(它们也有自己的Java实现)。
它完全是一个单独的编译器。这是必需的,因为javac不允许从eclipse站点编译稍微损坏的代码
增量Java编译器。作为Eclipse构建器实现,它基于从VisualAge for Java编译器演变而来的技术。特别是,它允许运行和调试仍包含未解决错误的代码。