使用不同版本的JDK编译Java,同样的目标和源版本保证执行相同的操作?

前端之家收集整理的这篇文章主要介绍了使用不同版本的JDK编译Java,同样的目标和源版本保证执行相同的操作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们将更新我们的CI系统,从 Java 7创建构建到 Java 8.之后,我们希望将项目逐个迁移到Java 8.当然,我们希望能够为仍然使用Java 7的旧版本创建bug修复版本.

如果将相同的源代码,目标版本和源代码从JDK 7转移到JDK 8,我们可以确定不会出现任何问题吗?我们在开发机器上进行测试,没有任何问题.

在此之前,我们也逐步将部署服务器从JRE 7更新为JRE 8.

请注意,我们希望在CI系统上保留单个Java JDK安装,否则会变得复杂.

为了使之更清楚:
我对同样的执行结果更感兴趣,而不是相同的字节码.相同的字节码只会确认第一个(运行在同一个JRE上),如果我明白了.

我们将不会在代码中使用Java 8功能,直到我们在Java 8上运行所有部署.因此兼容性不是问题.

解决方法

Does compiling Java with different versions of JDK and same target and source version produce same bytecode?

没有保证.

实际上,使用相同编译器在相同硬件上使用相同选项创建的两个.class文件将具有相同的字节码,但由于嵌入的编译时间戳属性,这些文件可能仍然不同.

但是,如果您想比较名义上等效的字节码文件,这个Q& A提供了一些可能的线索:

> Is there a tool that we could use to compare two Jars at Binary/Byte code level?

我希望您会发现Java 7和Java 8编译器生成的字节码之间存在一些差异,但这并不重要.

猜你在找的Java相关文章