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

问题描述 投票:184回答:4

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

java eclipse javac
4个回答
200
投票

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

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

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

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

ECJ优于javac的一些例子是:


36
投票

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

Compile-time optimization related

Generics type inferrence related


17
投票

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

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


14
投票

它是一个单独的编译器。这是必要的,因为javac不允许从the eclipse site编译稍微损坏的代码

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

© www.soinside.com 2019 - 2024. All rights reserved.