JDK 增强提案(JEP)223 是一种新的 JDK 版本命名规则,旨在使主要版本、小版本及安全版本的辨认更简单。它更简单、更直观、易于解析,并且与当前的行业做法一致,尤其是“语义版本命名(Semantic Versioning)”规则。例如,如果使用新的版本命名规则,版本字符串JDK 1.7.0_65-b20(7u65)将变成JDK 7.6.15+20(7.6.15)。
在现有的JDK 版本命名规则中,“JDK 7 Update 65”、“JDK 1.7.0_65”和“JDK 7u65”是同一版本的不同名称。要识别和比较这些版本,简单地对解析出的标记逐点比较是不够的,这需要一个相当复杂的算法。另外,小写字母“u”既不是行业标准,也不是语言无关的。在现有的JDK 数字命名规则中,小版本是20 的倍数,它包含除安全修复之外的更新。安全版本是奇数,在之前小版本的基础上加5 或6 得出。那些不熟悉这种数字命名规则的用户可能会认为“JDK 7 Update 60”是“JDK 7 Update 55”之后的第五个版本,并且错误地认为前者有更多安全方面的修复。小版本和安全版本的这种用一个数值编码的方法不容易辨认,而且也会跳过许多版本。
JEP 223 的目标:版本应该易于理解和解析,应该与当前的语义版本命名这一行业做法一致,而且它应该可供现有的打包和部署系统使用。该提案还将提供一个 API,用于版本字符串解析、验证和比较。改变先前 JDK 版本的版本字符串格式并不是该项提案的目标。
版本号是一个由非负整数组成的非空序列,由句点分隔。它不包含前导零,并且匹配正则表达式 [1-9][0-9]*(\.(0|[1-9][0-9]*))*。前三个基本部分是 $MAJOR.$MINOR.$SECURITY。主要版本包含了新 Java SE 平台规范所指定的重要新特性,其发布时 $MAJOR 会增加。小的更新版本可能包含兼容的 Bug 修复、修改了标准 API 以及实现了像新的垃圾收集器或支持新硬件架构这样的新特性,其发布时 $MINOR 会增加。安全更新版本包含了重要的补丁,其发布时 $SECURITY 会增加。当 $MAJOR 增加时,$MINOR 和 $SECURITY 会重置为 0。在 $MAJOR 值一定的情况下,不管 $MINOR 值是多少,$SECURITY 值越大就表明它是一个更安全的版本。
版本字符串由版本号、可选的预发布及构建信息组成。预发布标识 ea 表示早期试用版本,正处于活跃开发状态。每完成一次构建,内部版本号都会增加,当版本号的任何部分增加时,内部版本号都会重置为 1。去掉尾随零的版本字符串称为短版本字符串。下表比较了 JDK 9 的两种可能的版本字符串,包括现有格式和提案格式。请注意,现有的假定 JDK 版本号永远以 1 开头的代码将无法正常工作。
Existing Proposed Release Type long short long short ------------ -------------------- -------------------- Early Access 1.9.0-ea-b19 9-ea 9.0.0-ea+19 9-ea Major 1.9.0-b100 9 9.0.0+100 9 Security #1 1.9.0_5-b20 9u5 9.0.1+20 9.0.1 Security #2 1.9.0_11-b12 9u11 9.0.2+12 9.0.2 Minor #1 1.9.0_20-b62 9u20 9.1.2+62 9.1.2 Security #3 1.9.0_25-b15 9u25 9.1.3+15 9.1.3 Security #4 1.9.0_31-b08 9u31 9.1.4+8 9.1.4 Minor #2 1.9.0_40-b45 9u40 9.2.4+45 9.2.4
该提案于 2014 年 10 月 20 日创建,现在处于候选状态,将随 JDK 9 一起发布。要了解更多信息,包括一个 JDK Java API 示例,请阅读 JEP 223 以及 JBS(JDK Bug System)8061493 。
查看英文原文:**** New Java Version - it’s not JDK 1.9
评论