美文网首页
java9新特性-6-多版本兼容jar包

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

作者: 程序员驴子酱 | 来源:发表于2018-01-04 22:09 被阅读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 及之前版本的环境下进行测试即可

    相关文章

      网友评论

          本文标题:java9新特性-6-多版本兼容jar包

          本文链接:https://www.haomeiwen.com/subject/ebvdnxtx.html