繁体   English   中英

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

[英]What is the difference between javac and the Eclipse compiler?

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

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

它与 javac 不同,javac 是 Sun JDK 附带的编译器。 一个显着的区别是 Eclipse 编译器允许您运行实际上没有正确编译的代码。 如果出现错误的代码块从未运行过,您的程序将运行良好。 否则,它会抛出一个异常,表明您试图运行无法编译的代码。

另一个区别是 Eclipse 编译器允许从 Eclipse IDE 内部进行增量构建,也就是说,一旦您完成输入,所有代码都会被编译。

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

ECJ 优于 javac 的几个例子是:

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

编译时优化相关

泛型类型推断相关

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

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

它完全是一个单独的编译器。 这是必需的,因为 javac 不允许编译来自eclipse 站点的轻微损坏的代码

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM