我们将更新我们的CI系统,该系统创建从Java 7到Java 8的构建.稍后我们希望将项目逐个迁移到Java 8.当然,我们希望能够为仍使用Java 7的旧版本创建bugfix版本.
如果我们将构建相同的源,目标版本和源版本从JDK 7转移到JDK 8,我们能否确定不会出现任何问题?我们对开发机器进行了测试而没有任何问题.
在此之前,我们还逐步将部署服务器从JRE 7更新到JRE 8.
请注意,我们希望在CI系统上保持单个Java JDK安装,否则会变得复杂.
为了更清楚: 我对相同的执行结果更感兴趣,而不是相同的字节码.如果我理解正确的话,相同的字节码只会确认第一个(在相同的JRE上运行).
在我们在Java 8上运行所有部署之前,我们不会在代码中使用Java 8功能.因此兼容性不是问题.
使用不同版本的JDK和相同的目标和源版本编译Java是否会生成相同的字节码?
没有保证.
实际上,使用相同编译器在相同硬件上使用相同选项从相同源代码创建的两个.class文件将具有相同的字节码,但由于嵌入式编译时间戳属性,文件可能仍然不同.
但是,如果您想比较概念上等效的字节码文件,此问答可提供一些可能的线索:
我希望您会发现Java 7和Java 8编译器生成的字节码之间存在一些差异,但这并不重要.