由浅到深认识Java语言(52):JDK9新特性(改进JavaDocs&共存JAR)

该文章Github地址:https://github.com/AntonyCheng/java-notes【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】

在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template【有条件的情况下推荐直接访问GitHub以获取最新的代码更新】& CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!

上一章:由浅到深认识Java语言(51):JDK9新特性(模块化&REPL)

54.JDK9新特性

改进JavaDocs

一直以来,Java 生成的文档 JavaDoc 一直使用的都是 HTML 4 格式,这次 Java 9 使用了 HTML 5,但还不是默认的,如果要输出 HTML 5 格式,还必须在命令行程序中添加 -html5 选项。

旧的JavaDoc文档格式

假设工作区是 D:\javadoc ,那么在其下 src 目录中创建一个 JavaDocTester.java 文件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后就可以使用 javadoc 命令输出该类的文档:

D:\javadoc\src>javadoc.exe -encoding UTF-8 -d . JavaDocTester.j
ava
正在加载源文件JavaDocTester.java...
正在构造 Javadoc 信息...
javadoc: 警告 - 未指定要使用的 HTML 版本。
默认值当前为 HTML 4.01,但在未来发行版中
将更改为 HTML5。要隐藏此警告,请使用 -html4-html5 选项,指定要由此 doclet 生成的、
在文档注释中使用的 HTML 版本。
标准 Doclet 版本 10.0.2
正在构建所有程序包和类的树...
正在生成./JavaDocTester.html...
正在生成./package-frame.html...
正在生成./package-summary.html...
正在生成./package-tree.html...
正在生成./constant-values.html...
正在构建所有程序包和类的索引...
正在生成./overview-tree.html...
正在生成./index-all.html...
正在生成./deprecated-list.html...
正在构建所有类的索引...
正在生成./allclasses-frame.html...
正在生成./allclasses-frame.html...
正在生成./allclasses-noframe.html...
正在生成./allclasses-noframe.html...
正在生成./index.html...
正在生成./help-doc.html...
1 个警告

可以看到 javadoc 默认使用的还是 html 4.0.1 版本,可以在浏览器中打开生成的 index.html 文件:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

新的JavaDoc文档格式

从上面的输出结果中还可以看出,可以使用 -html5 选项指定输出结果为 HTML 5

D:\javadoc\src>javadoc -html5 -encoding UTF-8 -d . JavaDocTester.java 
正在加载源文件JavaDocTester.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 10.0.2
正在构建所有程序包和类的树...
正在生成./JavaDocTester.html...
正在生成./package-frame.html...
正在生成./package-summary.html...
正在生成./package-tree.html...
正在生成./constant-values.html...
正在构建所有程序包和类的索引...
正在生成./overview-tree.html...
正在生成./index-all.html...
正在生成./deprecated-list.html...
正在构建所有类的索引...
正在生成./allclasses-frame.html...
正在生成./allclasses-frame.html...
正在生成./allclasses-noframe.html...
正在生成./allclasses-noframe.html...
正在生成./index.html...
正在生成./help-doc.html...

当使用HTML 5 格式时,输出日志都变少,然后打开当前目录下的 index.html ,可以发现页面长的还是一样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多版本共存JAR

Java 9 之前的 JAR 格式中只能包含一个 Java 版本,显然,这是不符合 Java 这种开启了版本帝的发展线路了,想想,现在大多数 Java 还停留在 Java 6 7 8 的年代,Java 10 已经发布,如果要发布一个 JAR 格式的类库,意味着要编译多个版本的 JAR 所以 Java 9 开始支持多版本共存的 JAR 了。Java 9 引入了一个新的功能,其实也不算,就是增强了 JAR 格式,可以在同一个 JAR 中维护和使用不同版本的 java 类或资源。

JAR多版本共存原理

首先在 JAR 中,文件 MANIFEST.MF 文件的 main 节中有一个条目 Multi-Release:true,用于指定该 JAR 包是多 Java 版本共存的。同时,JAR 目录下的子目录 META-INF 还包含一个 versions 子目录,其子目录 (从 9 开始,用于 Java 9) 存储特定于版本的类和资源文件。

多版本编译示例

javac --release 10 -d java10  src/main/java10/top.sharehome/MultiReleaseJarTester.java
javac --release 9  -d java9   src/main/java9/top.sharehome/MultiReleaseJarTester.java
javac --release 8  -d java8   src/main/java8/top.sharehome/MultiReleaseJarTester.java

最重要的就是带上 --release [version] 属性。

注意

首先,没必要特别区分 java10java9 java8这几个目录,如果代码都相同,只要一份即可;

其次,多版本真正最重要的是编译的时候带上 --release [version] 版本号,用来指定编译版本;

最后,一定要存在一个默认版本,一般情况下,可以使用主流版本为默认版本,这个默认版本可以不用添加 --release 参数;

下一章:由浅到深认识Java语言(53):JDK9新特性(不可变集合&接口私有方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值