gpt4 book ai didi

java - 为什么编译后的java不向前兼容

转载 作者:行者123 更新时间:2023-12-01 16:56:46 25 4
gpt4 key购买 nike

除非我误解了 JVM 的工作原理,否则 Java 字节码是否与编译的 C 语言相同,只是它运行在 JVM 上而不是操作系统上(JVM 充当操作系统)?

如果是这样,这是否意味着较新的 ​​jar 应该能够在我想要的任何版本的 JVM 上运行?

或者 Java 版本之间的实际字节码指令是否存在某种在 C 等语言中不存在的差异?

最佳答案

它不向前兼容,因为这意味着不可能引入新的字节码。

当新版本的 java 引入新的字节码时,旧版本的 VM 自然无法解释该字节码。

这意味着 java 无法向前兼容,因为它维护着一组不断发展的( native )命令。

这与 C/C++ 不同。这种语言的编译器会为您所针对的确切处理器生成字节码。处理器的命令集不会改变,它是静态的。因此,当为特定CPU编译C时,只要有与所需操作相对应的指令,每个版本的C/C++标准都会编译并运行。

<小时/>

编辑:当你仔细观察时,这个问题也可以在 C/C++ 中看到。例如标题 <cstdint>引入可选类型,例如int64_t 。这是出于向前兼容性的原因。较旧的芯片可能无法处理 64 位整数类型,因此为了保持这些整数类型的前向兼容性,该标准使它们可以选择声明。

关于java - 为什么编译后的java不向前兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713744/

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