不同的JDK更新是否会生成不同的Java字节代码?

11 java compiler-construction compilation

假设情景:

我有一个项目的源合规级别指定为1.5.现在我用两个不同的JDK编译这个项目:首先使用JDK 6 Update 7,然后使用JDK 6 Update 20.

这两个不同的JDK是否会产生不同的Java字节代码,尽管它们的Update版本只有不同?

pol*_*nts 10

没有什么可以阻止不同版本生成不同的字节码,只要它符合JLS中指定的行为即可.JLS留下了许多实现细节,从一个实现到另一个实现.


Joa*_*uer 9

生成的代码通常仅在编译器错误修复的情况下有所不同.

但是,JLS 没有指定从源代码到生成的字节代码的1:1映射,因此您不应该依赖于生成完全相同的字节代码.