Eclipse使用哪种Java编译器?

Eclipse使用哪种Java编译器?,java,eclipse,Java,Eclipse,我已经在文件夹Java\jdk1.8.0_152中安装了自己的JDK 8。Eclipse允许我们从Window/Preferences/Java/compiler指定Java编译器。如果我指定编译器版本1.8(见下文),Eclipse实际使用的编译器是我自己安装的位于Java\jdk1.8.0_152的JDK还是Eclipse自己的捆绑JDK?这两个编译器的区别是什么 如果我错了,请纠正我。我的第二个问题是,当我们为Eclipse指定已安装的JRE(Window/Preferences/Jav

我已经在文件夹Java\jdk1.8.0_152中安装了自己的JDK 8。Eclipse允许我们从Window/Preferences/Java/compiler指定Java编译器。如果我指定编译器版本1.8(见下文),Eclipse实际使用的编译器是我自己安装的位于Java\jdk1.8.0_152的JDK还是Eclipse自己的捆绑JDK?这两个编译器的区别是什么

如果我错了,请纠正我。我的第二个问题是,当我们为Eclipse指定已安装的JRE(Window/Preferences/Java/installed JRE)时,我们必须指定我们自己已安装的JRE,因为Eclipse不包括任何JRE。我说得对吗


注意,此问题不是离题,因为它不要求推荐或查找书籍、工具、软件库、教程或其他非现场资源,而是特定编译器设置的含义。它是切换编译器,还是将设置委托给JDK编译器(以便可以在那里找到其含义),还是意味着其他什么?要在两台不同的计算机上生成相同的字节码,您需要知道。

Eclipse有自己的Java编译器,称为[JDT Core][1](org.Eclipse.JDT.Core)。编译器本身包含在org.eclipse.jdt.core插件中。Eclipse不会使用任何用户安装的JDK。相反,由于以下主要原因,它使用自己的JDT内核编译Java程序:

主要原因是JDT core具有增量编译的能力,这意味着它增量编译代码中的更改(这也是Eclipse不需要编译按钮的原因,因为它在检测到更改时自动编译)。但是Oracle的JDK不支持增量编译

Eclipse的JDT核心编译器是否包含JRE?

  • 不,JDT内核与JDK不同。JDT核心是一个不包含JRE的编译器(而JDK包含JRE)。这就是为什么我们必须为Eclipse指定已安装的JRE才能启动
总之,Eclipse使用自己的JDT内核作为Java编译器。JDT核心编译器没有JRE。因此Eclipse需要用户安装的JRE来运行.class代码

参考资料:

[1] JDT插件开发人员指南

[2] JDT核心组件


[3] Eclipse如何仅使用JRE编译类

与其他JavaIDE相比,Eclipse使用自己的Java增量编译器。它可以显示比
javac
更多的警告和错误。Eclipse编译器和
javac
都实现了。有些情况下,两个编译器产生不同的字节码,或者其中一个出现故障(例如,请参阅)

Eclipse编译器至少需要类文件的JRE,例如。g
java/lang/String.class
。JDK只是为了查看源代码,而不是Eclipse编译器所需要的


到目前为止,Eclipse还没有附带JRE(请参阅)。但是,在Java虚拟机成为Eclipse项目后不久,这种情况可能会改变。

JRE=library(
class
files)+虚拟机(
Java
);JDK=JRE+源代码+编译器(
javac
)和其他工具(例如
javadoc
)。太棒了!!这就是我要找的。谢谢。