前不久发布的 Java 9 除了发布了重大更新外,西安尚是网络wwwshun580com还公布了一个全新版本的发布计划。该计划基于 JEP 223,用于未来 Java 平台版本的发布。
然后,在这个全新版本发布计划公布后,Java 首席架构师 Mark Reinhold 随即做出了要对计划进行更改的提议,决定采用严格的,基于时间的发布模式。
基于 JEP 233 的发布计划的主要目标如下所示:
版本号直观,易于理解
与当前行业的实际情况相一致
能兼容现有的包系统和平台部署机制
避免在版本的一种元素中编码两种信息
提供一个简单 API,用于版本号的解析、验证和比较
Java 9 发布说明中,对版本号的格式的描述如下:
1 | $MAJOR.$MINOR.$SECURITY.$PATCH |
$MAJOR 版本号随主要版本发布而增加,其中需要包含 Java SE 平台指定的重要特性。主要版本的新特性需要提前发布声明公布。
$MINOR 版本号随次要版本发布而增加,内容包含 bug 修复,标准 API 的修复以及平台规范指定以外的特性。
$SECURITY 版本号随着安全更新版本的发布而增加,内容需包含主要安全问题的修复。
$PATCH 版本号的增加,以包含安全和高优先级用户问题修复的版本发布为依据。
Reinhold 表示,这种基于特性的发布方式已经过时,为了更好的与其他平台竞争,决定采取基于时间的发布模式:
每六个月进行一次新特性发布,每季度进行一次更新发布,每三年进行一次LTS(长期支持)发布。
Reinhold 提议的发布模式如下:
1 | $YEAR.$MONTH |
例如,2018 年 3 月份的版本将表示为 18.3,2018 年 9 月份的版本将表示为为 18.9。
但似乎绝对基于时间的发布模式还不是很流行,所以 Reinhold 提出了修订版。
修订后的版本号格式如下:
1 | $FEATURE.$INTERIM.$UPDATE.$EMERG |
$FEATURE 版本计数每六个月增加一次,不管发布内容如何
$INTERIM 版本计数的增加,不包含新特性的发布,不包含不兼容的变更,但包含 bug 的修复和功能增强。该计数在当前六个月的发布模式中为零
$UPDATE 版本计数每三个月增加一次,包含兼容性的更新,如,安全问题修复等
$EMERG 版本计数随紧急版本的发布而增加
如果这一发布模式被采用,则 Java 的下一个版本仍是 Java 10,将于 2018 年 3 月发布,Java 11 将于 2018 年 11 月发布。对于发布模式的提议仍在讨论中,相信结果很快就会公布。