# Java 版本 – 基于时间的发行版本控制

> 原文： [https://howtodoinjava.com/java10/java-version/](https://howtodoinjava.com/java10/java-version/)

从 Java 10 开始，Oracle 调整了基于时间的版本字符串方案（JEP 322）。 新的基于时间的模型已取代了过去基于特性的多年发布模型。 与旧版本不同，新的基于时间的版本不会延迟，并且**特性将每六个月发布一次**，而对于该版本中可以发布的特性没有任何限制。

**更新版本将在每个季度**（1 月，4 月，7 月，10 月）发布。 更新版本将严格限于安全性问题，回归和较新特性中的错误的修复。 按照进度计划，可以说每个特性版本在下一个特性版本发布之前都会收到两个更新。

## Java 版本格式

如果在逗号和提示/终端中运行命令`java -version`，您将获得以下输出版本信息：

```java
C:\Users\Lokesh>java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

```

版本号的新格式为：

> `$FEATURE.$INTERIM.$UPDATE.$PATCH`

| 名称 | 描述 |
| --- | --- |
| `$FEATURE` | 它会每 6 个月增加一次，具体取决于特性发布版本，例如：JDK 10，JDK11。（以前为`$MAJOR`。） |
| `$INTERIM` | 通常为零，因为六个月内不会有任何中期发布。 对于包含兼容的错误修复和增强特性但不兼容的更改，不删除的特性以及对标准 API 的更改的非特性版本，它将增加。 （以前为`$MINOR`。） |
| `$UPDATE` | 对于解决安全问题，回归和较新特性中的错误的兼容更新版本，它将递增。 （以前为`$SECURITY`。） |
| `$PATCH` | 仅在需要紧急发布以解决关键问题时才会增加。 |

版本号中的数字序列与其他此类序列以数字逐点方式进行比较； 例如`10.0.4`小于`10.1.2 `。 如果一个序列比另一个序列短，则认为较短序列的缺失元素少于较长序列的对应元素； 例如`10.0.2`小于`10.0.2.1`。

## Java 版本 API

`Runtime.version()`可用于以编程方式获取版本计数器值。 例如

```java
Version version = Runtime.version();
version.feature();
version.interim();
version.update();
version.patch();

Output:

10
0
1
0

```

#### 解析现有版本

```java
Version version = Runtime.Version.parse("10.0.1");

version.feature();
version.interim();
version.update();
version.patch();

```

## 长期发行（LTS）

它主要针对企业客户。 LTS 版本的产品将提供 Oracle 的首要和持续的支持，目标是每三年一次。 此外，这些版本的更新将至少提供三年。

这将导致“LTS”在`java –versions`的输出中突出显示。 例如`11.0.2+13-LTS`

学习愉快！

参考： [http://openjdk.java.net/jeps/322](https://openjdk.java.net/jeps/322)