All*_*Hay 6 java backwards-compatibility forward-compatibility
我有一个疑问,java是向后兼容还是向前兼容?另外,我们可以在具有 JDK 8 的 MAC 上运行在 JDK 11 Windows 中编写的 java 字节码吗?我试图理解平台独立性的概念。
简短回答:是的。这就是重点。您古老的字节代码,即使来自 Java 1,也将在 Java 11 下运行。
\n更详细的答案:现在有一些类最终实际上已从标准库中删除。但很可能您没有使用它们。
\n编辑:我似乎误读了你的问题。不,你不能在Java 8下运行用Java 11编译的代码。字节码版本已经增加,Java 8将拒绝运行它。
\nJava 字节码是向前兼容的。即,较新的 JVM 可以运行为较旧的 JVM 编译的 java 字节代码。反之则不然,程序将因“无法识别的类文件版本”错误而失败。
如果您想反其道而行之,您可以强制较新的 JDK 为较旧的 JVM 编译代码(通过设置语言级别),并且只要您不使用对该版本来说太新的语法,它应该有效。但请注意,这并不能阻止代码依赖更高版本 JDK 中引入的类/方法。如果您想确保代码从这个角度也向后兼容,您将需要像Animal Sniffer这样的第三方工具。
| 归档时间: |
|
| 查看次数: |
8297 次 |
| 最近记录: |