微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

新版本的 java 可以在旧版本上运行吗?

如何解决新版本的 java 可以在旧版本上运行吗?

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

解决方法

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

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

,

简短回答:是的。这才是重点。您的古老字节码,即使来自 Java 1,也将在 Java 11 下运行。

更详细的回答:有几个类现在终于从标准库中删除了。但很可能你没有使用它们。

编辑:我似乎误读了您的问题。不,你不能在Java 8下运行用Java 11编译的代码。字节码版本增加了,Java 8会拒绝运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。