gpt4 book ai didi

java - 使用不同版本的 JDK 和相同的目标和源版本编译 Java 是否保证相同的执行?

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:31 26 4
gpt4 key购买 nike

我们将更新我们的 CI 系统,该系统创建从 Java 7 到 Java 8 的构建。稍后我们想将项目一个一个地迁移到 Java 8。当然,我们希望能够为仍然使用 Java 7 的旧版本创建错误修复版本。

如果我们将构建相同的源、目标版本和源版本从 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 文件将具有相同的字节码,但由于嵌入式编译时间戳属性,文件可能仍然不同。

但是,如果您想比较概念上等效的字节码文件,此问答提供了一些可能的线索:


我希望您发现 Java 7 和 Java 8 编译器生成的字节码之间存在一些差异,但这无关紧要。

关于java - 使用不同版本的 JDK 和相同的目标和源版本编译 Java 是否保证相同的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com