java - 新版本的 java 可以在旧版本上运行吗?
问题描述
我对java是向后兼容还是向前兼容有疑问?另外,我们可以在具有 JDK 8 的 MAC 上运行用 JDK 11 Windows 编写的 java 字节码而没有任何复杂性吗?我试图理解平台独立性的概念。
解决方案
Java 字节码是前向兼容的。即,较新的 JVM 可以运行为较旧的 JVM 编译的 java 字节码。反之亦然,程序将因“无法识别的类文件版本”错误而失败。
如果您想反其道而行之,可以强制较新的 JDK 为较旧的 JVM 编译代码(通过设置语言级别),并且只要您不使用任何对该版本来说太新的语法,它应该工作。但是请注意,这并不妨碍代码依赖于以后 JDK 中引入的类/方法。如果你想确保代码从这个角度也向后兼容,你需要像Animal Sniffer这样的第三方工具。
推荐阅读
- python - Python函数执行顺序
- node.js - 我们可以在服务器端编辑(位置、比例等)glTF 模型(没有三个.js)吗?
- python - 使用 Python sllurp 库读取 Motorola/Zebra FX9500 RFID 阅读器的标签清单
- python - TypeError:无法连接“str”和“UUID”对象
- java - Eclipse 中 HttpClient 对象的 JBOSS/Wildfly 中的 LinkageError
- c++ - 在本地使用 reference_wrapper 初始化向量
- node.js - 无法读取长度 - 接口内的字符串数组
- c# - 如何从目录列表文件中递归地填充树?
- java - 如何从硒的下拉列表中选择选项
- c++ - 按第二个元素对向量对进行排序,然后在第二个元素相等时按第一个元素按降序排序