Eclipse的Java编译器只是围绕javac
程序所包含的同一核心的包装器,还是一个单独的编译器?如果是后者,为什么他们会重新发明轮子?
答案 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编译器演化而来的技术。特别是,它允许运行和调试仍包含未解决错误的代码。