java9新特性-6-多版本兼容jar包

2018-01-04  本文已影响0人  程序员驴子酱

1.官方Feature

238: Multi-Release JAR Files



2.使用说明

当一个新版本的Java出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的Java版本(许多情况下就是Java 6 或者 Java7)。这实际上意味着未来的很长一段时间,你都不能在库中运用Java 9所提供的新特性。幸运的是,多版本兼容jar功能能让你创建仅在特定版本的Java环境中运行库程序选择使用的class版本。

举例1:

jar root

  - A.class

  - B.class

  - C.class

  - D.class

  - META-INF

     - versions

        - 9

           - A.class

           - B.class

说明:

在上述场景中,root.jar 可以在 Java 9 中使用,不过A或B类使用的不是顶层的root.A或root.B 这两个class,而是处在“META-INF/versions/9”下面的这两个。这是特别为 Java9 准备的 class 版本,可以运用 Java 9 所提供的特性和库。同时,在早期的 Java 诸版本中使用这个JAR 也是能运行的,因为较老版本的 Java只会看到顶层的A类或 B 类。

举例2:

jar root

  - A.class

  - B.class

  - C.class

  - D.class

  - META-INF

     - versions

        - 9

           -  A.class

           - B.class

        - 10

           -

  A.class

官方说明:

By this scheme, it is possiblefor versions of a class designed for a later Java platform release to overridethe version of that same class designed for an earlier Java platform release.


3.使用举例

步骤一:提供必要的类

在指定目录(E:\teach\01_Java9\multijar\src\main\java\com\atguigu)下提供如下的类:

【Generator.java】

【Application.java】

在如下目录(E:\teach\01_Java9\multijar\src\main\java-9\com\atguigu)下提供同名的类:

【Generator.java】

步骤二:打包

指令如下:

javac -d build --release 8  src/main/java/com/atguigu/*.java

javac -d build9 --release 9  src/main/java-9/com/atguigu/*.java

jar --create --main-class=Application --file  multijar.jar -C build . --release 9 -C build9 .

步骤三:在java 9 及之前版本的环境下进行测试即可

上一篇下一篇

猜你喜欢

热点阅读