Java10 - 基于时间的版本控制

JEP 322 − 基于时间的发布版本控制

从 Java10 开始,Oracle 为 Java 版本引入了严格的基于时间的版本控制模型。 现在 Java 每六个月就会有一个主要版本。 Java10 于 2018 年 3 月发布并继续推进,所有主要版本都计划在未来几年的 3 月和 9 月发布。 发布进一步分为三大类。

  • 功能发布 − 功能发布包含特定于语言的功能、JVM 功能、新的/改进的 API、删除/弃用 API。 这些功能发布的时间是固定的,并且对要包含在特定版本中的功能没有限制。 如果正在开发的功能不是最新版本的一部分,那么它将计划在下一个版本中。

  • 更新版本 − 更新版本包括错误修复、安全问题修复、回归修复等。每个更新版本计划在 1 月、4 月、7 月和 10 月按季度发布。 在宣布下一个功能版本之前,每个功能版本将收到两个更新版本。

  • 长期支持(LTS)版本 − 长期支持版本将从 2018 年 9 月开始每三年发布一次。Oracle 将在未来三年内为此版本提供支持和更新。 此版本主要面向在生产部署中使用 Java 的企业。


版本格式

一个版本现在遵循以下格式。

$FEATURE.$INTERIM.$UPDATE.$PATCH

Where

  • $FEATURE − 此数字表示主要功能发布,每次功能发布后都会增加 1。 对于 Java10,它是 10。

  • $INTERIM − 此数字表示包含错误修复和增强功能的任何非功能、非更新版本。 此版本没有任何不兼容的更改、任何 API 删除或对标准 API 的更改。 功能发布会将此计数器设置为 0。

  • $UPDATE − 此数字表示在功能发布之后完成的更新发布。 例如,2018 年 4 月的 Java 更新版本是 JDK 10.0.1,2018 年 7 月的更新版本是 JDK 10.0.2,依此类推。

  • $PATCH − 此数字表示仅在紧急情况下升级关键问题时才会增加的任何紧急版本。

示例

以下程序显示了 Java10 的版本详细信息。

public class Tester {
   public static void main(String[] args) {
      Runtime.Version version = Runtime.version();
      System.out.printf(" feature: %s%n interim: %s%n update: %s%n patch: %s%n",
         version.feature(), 
         version.interim(), 
         version.update(), 
         version.patch());
   }
}

输出

它将打印以下输出。

feature: 10
interim: 0
update: 2
patch: 0