从Java 9到Java 8的兼容性和迁移

xde*_*000 6 java java-9

我正在阅读有关新Java 9模块系统的文档.

3兼容性和迁移解释了如何将代码从Java 8迁移到Java 9,但没有说明如何"迁移"或运行用Java 9编写的应用程序到Java 9运行时之前.

所以,如果我有,比如一个以模块化方式编写的JAR应用程序(每个模块都有一个模块描述符),如果我将它部署在一起,即JDK 8运行时会发生什么?

Zhe*_*lov 8

如果您的类文件是使用--release 8flag 编译的,那么它们应该在Java 8上正常运行module-info.class.较旧的JVM将忽略这些文件.

如果您的Java 8项目是基于maven的,您可以轻松地将其配置为包括module-info.java:https://maven.apache.org/plugins/maven-compiler-plugin/examples/module-info.html

另外,看看JEP 238(多发行版JAR文件).这使您可以在不破坏与Java 8的兼容性的情况下获得Java 9功能的更多优势.


Bet*_*ide 5

您无法使用小于其构建的JRE启动Java应用程序.

如果您只使用javac没有任何特殊选项,它将生成在JRE上运行的类等于或大于使用的JDK.

但是javac支持交叉编译.您可以使用JDK 8编译JDK 6兼容的类文件.在javac文档中搜索交叉编译选项.

  • 这不是普遍*真的.但这是一个合理的指导方针. (4认同)