java9新特性-6-多版本兼容jar包
2018-01-07 21:08
375 查看
1.官方Feature
238: Multi-Release JAR Files2.使用说明
当一个新版本的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 及之前版本的环境下进行测试即可
相关文章推荐
- Java版本HTTPSQS 纯java实现、 一个jar包、支持嵌入式启动、完全兼容HTTPSQS、TPS 1w+
- Java - 各版本特性,JDK1.5 - 9
- 判断jar包中class文件的java编译版本
- Java中的类装载机制、反射机制、JDK5.0版本新加入一些特性
- 【java】自定义枚举类(不使用enum的新特性)1.5版本前
- 黑马程序员——Java高新技术——JDK1.5版本的新特性泛型
- JAVA 解析excel兼容2003和2007以后的版本
- Java基础——JDK1.5版本新特性
- Java 的版本历史与特性
- TrustStrategy——Java中httpclient.jar和httpcore.jar版本差异带来的异常
- Java中同版本json.jar包在OpenJDK与OracleJDK环境中异常说明
- Java--JDK个版本新特性
- JDK/JAVA 1.5到1.9版本特性对比
- Java基础之《加载器对同名不同版本jar包加载的选择》
- 微信小程序下nginx代理wss,实现兼容原本服务协议ws,Java版本
- Java 8的重要新特性以及未来版本的发展规划
- Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
- Java中httpclient.jar和httpcore.jar版本差异带来的异常
- 在java项目开发中要加入的spring的jar包(以spring 3.1版本为例)
- Java-JDK各个版本的新特性