Eclipse的Java编译器只是围绕javac
程序所包含的同一核心的包装器,还是一个单独的编译器?如果是后者,为什么他们会重新发明轮子?
Eclipse已经实现了自己的编译器,称为Eclipse Compiler for Java(ECJ)。
它与Sun JDK附带的javac(编译器)不同。一个值得注意的区别是Eclipse编译器允许您运行实际上没有正确编译的代码。如果从未运行带有错误的代码块,则程序运行正常。否则,它将抛出一个异常,表明您尝试运行无法编译的代码。
另一个区别是Eclipse编译器允许在Eclipse IDE中进行增量构建,也就是说,所有代码在您完成键入后立即编译。
Eclipse带有自己的编译器这一事实也很明显,因为您可以在Eclipse中编写,编译和运行Java代码,甚至无需安装Java SDK。
ECJ优于javac的一些例子是:
每个人都已经解释过他们是不同的。以下是我在两个编译器之间注意到的行为的一些区别。它们都归结为(至少)其中一个实现中的错误。
Eclipse的内置编译器基于IBM的Jikes java compiler。 (请注意,Eclipse也开始在IBM工作)。它完全独立于JDK中Sun的Java编译器;它不是Sun的javac
的包装。
Jikes已经存在了很长时间,它曾经比标准的JDK Java编译器快得多(但我不知道是否仍然如此)。至于为什么IBM想要编写自己的Java编译器:可能是因为许可原因(他们也有自己的Java实现)。
它是一个单独的编译器。这是必要的,因为javac不允许从the eclipse site编译稍微损坏的代码
增量Java编译器。作为Eclipse构建器实现,它基于从VisualAge for Java编译器演化而来的技术。特别是,它允许运行和调试仍包含未解决错误的代码。