Java 10 - 基于时间的发布版本控制

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

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

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

  • 更新版本- 更新版本包括错误修复、安全问题修复、回归修复等。每个更新版本计划于一月、四月、七月和十月每季度发布。在宣布下一个功能版本之前,每个功能版本将收到两个更新版本。

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

版本格式

现在的版本遵循以下格式。

$FEATURE.$INTERIM.$UPDATE.$PATCH

在哪里

  • $FEATURE - 该数字表示主要功能发布,并且在每个功能发布后都会增加 1。对于 Java 10,该值为 10。

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

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

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

例子

以下程序显示了 JAVA 10 的版本控制详细信息。

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