当前位置: 首页 > 科技观察

Java新版本不是JDK1.9

时间:2023-03-13 08:06:28 科技观察

JDKEnhancementProposal(JEP)223是一个新的JDK版本命名约定,旨在更容易识别主版本、次版本和安全版本。它更简单、更直观、更容易解析,并且符合当前的行业惯例,尤其是“语义版本控制”规则。例如,如果使用新版本命名约定,版本字符串JDK1.7.0_65-b20(7u65)将变为JDK7.6.15+20(7.6.15)。在现有的JDK版本命名规则中,“JDK7Update65”、“JDK1.7.0_65”和“JDK7u65”是同一版本的不同名称。要识别和比较这些版本,对解析的令牌进行简单的逐点比较是不够的,这需要相当复杂的算法。此外,小写字母“u”既不是行业标准也不是语言中立的。在现有的JDK数字命名约定中,次要版本是20的倍数,它包含除安全修复之外的更新。安全版本为奇数,是在之前的次要版本基础上加5或6得到的。不熟悉这个数字命名约定的用户可能会认为“JDK7Update60”是继“JDK7Update55”之后的第五个版本,而误认为前者有更多的安全修复。这种具有单个值的次要版本和安全版本的编码不容易阅读,并且还会跳过许多版本。JEP223的目标:版本控制应该易于理解和解析,应该与当前语义版本控制的行业实践一致,并且应该可以被现有的打包和部署系统使用。该提案还将提供用于版本字符串解析、验证和比较的API。本提案的目标不是更改以前JDK版本的版本字符串格式。版本号是由句点分隔的非负整数的非空序列。它不包含前导零并匹配正则表达式[1-9][0-9]*(\.(0|[1-9][0-9]*))*。前三个基本部分是$MAJOR.$MINOR.$SECURITY。主要版本包含新JavaSE平台规范指定的重要新功能,并且$MAJOR在发布时递增。可能包含兼容错误修复、修改标准API和实现新功能(如新垃圾收集器或支持新硬件架构)的次要更新版本将在发布时增加$MINOR。安全更新版本包含重要补丁,并且$SECURITY在发布时增加。当$MAJOR递增时,$MINOR和$SECURITY都被重置为0。在$MAJOR一定值的情况下,不管$MINOR的值是多少,$SECURITY的值越大表示越安全版本。版本字符串由版本号、可选的预发布和构建信息组成。预发布标志ea表示早期试用版,正在积极开发中。每次构建完成时构建号都会递增,并且当构建号的任何部分递增时重置为1。删除尾随零的版本字符串称为短版本字符串。下表比较了JDK9的两个可能的版本字符串,包括现有格式和建议格式。请注意,假定JDK版本号始终以1开头的现有代码将不起作用。ExistingProposedReleaseTypelongshortlongshort---------------------------------------------------EarlyAccess1.9.0-ea-b199-ea9.0.0-ea+199-eaMajor1.9.0-b10099.0.0+1009Security#11.9.0_5-b209u59.0.1+209.0.1Security#21.9.0_11-b129u119.0.2+129.0.2Minor#11.9.0_20-b629u209.1.2+629.1.2Security#31.9.0_25-b159u259.1.3+159.1.3Security#41.9.0_31-b089u319.1.4+89.1.4Minor#21.9.0_40+b4.942.2创建于2014年10月20日,提案现在处于候选状态,将与JDK9一起发布。有关更多信息,包括JDKJavaAPI示例,请阅读JEP223和JBS(JDKBugSystem)8061493。查看英文原文:NewJava版本-不是JDK1.9原文链接:http://www.infoq.com/cn/news/2014/12/new-java-version-its-not-jdk19