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

2022-08-31 06:11:46

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


答案 1

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

它与 Javac 不同,javac 是 Sun JDK 附带的编译器。一个值得注意的区别是,Eclipse编译器允许您运行实际上没有正确编译的代码。如果从未运行过带有错误的代码块,则程序将正常运行。否则,它将引发一个异常,指示您尝试运行未编译的代码。

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

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

ECJ优于javac的几个例子是:


答案 2

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

编译时优化相关

泛型类型推断相关


推荐