首页 > 解决方案 > 新版本的 java 可以在旧版本上运行吗?

问题描述

我对java是向后兼容还是向前兼容有疑问?另外,我们可以在具有 JDK 8 的 MAC 上运行用 JDK 11 Windows 编写的 java 字节码而没有任何复杂性吗?我试图理解平台独立性的概念。

标签: javabackwards-compatibilityforward-compatibility

解决方案


Java 字节码是前向兼容的。即,较新的 JVM 可以运行为较旧的 JVM 编译的 java 字节码。反之亦然,程序将因“无法识别的类文件版本”错误而失败。

如果您想反其道而行之,可以强制较新的 JDK 为较旧的 JVM 编译代码(通过设置语言级别),并且只要您不使用任何对该版本来说太新的语法,它应该工作。但是请注意,这并不妨碍代码依赖于以后 JDK 中引入的类/方法。如果你想确保代码从这个角度也向后兼容,你需要像Animal Sniffer这样的第三方工具。


推荐阅读