web-dev-qa-db-ja.com

Java 9のバージョンの文字列スキームで4番目の数字はどういう意味ですか?

このブログ on Java 9の新しいバージョンの文字列スキームによると、バージョンはMAJOR.MINOR.SECURITYのようになっているはずです。つまり、3つの数字があるはずです。とその間の2つの期間。

ただし、AzulのZulu 9では、Javaバージョンを印刷すると、4つの数字と3つのピリオドがあります。

./jdk/bin/Java -version
openjdk version "9.0.0.15"
OpenJDK Runtime Environment (Zulu build 9.0.0.15+181)
OpenJDK 64-Bit Server VM (Zulu build 9.0.0.15+181, mixed mode)

4つの数字は何を表していますか?

20
Anjana

そのブログ投稿は少し古くなっています。 Java 9で実際に実装されたスキームは、 JEP 223:New Version-String Scheme に記載されています。

最初の3つの数字の意味は標準化されています。 4番目以降の番号の意味は、ベンダーが指定する必要があります。

2番目と3番目の数字の間の興味深い関係にも注意してください。

JEPの関連部分は次のとおりです。

「シーケンスの長さは任意ですが、最初の3つの要素には、次のように特定の意味が割り当てられています。

$MAJOR.$MINOR.$SECURITY

$MAJOR- Java SEプラットフォーム仕様の新版で指定されている重要な新機能を含むメジャーリリース用に増分されたメジャーバージョン番号。たとえば、Java SE8のJSR337 。機能はメジャーリリースで削除される場合があり、少なくとも1つのメジャーリリースが事前に通知されている場合、正当な理由がある場合は互換性のない変更が行われる可能性があります。 JDK8の$MAJORバージョン番号は8です。 JDK9の$MAJORバージョン番号は9です。$MAJORがインクリメントされると、後続のすべての要素が削除されます。

$MINOR-互換性のあるバグ修正、関連するプラットフォーム仕様のメンテナンスリリースによって義務付けられている標準APIのリビジョン、およびその仕様の範囲外の実装機能を含む可能性のあるマイナーアップデートリリース用にインクリメントされたマイナーバージョン番号。新しいJDK固有のAPI、追加のサービスプロバイダー、新しいガベージコレクター、および新しいハードウェアアーキテクチャへのポート。

$SECURITY-セキュリティの向上に必要な修正を含む重要な修正を含むセキュリティ更新リリース用に増分されたセキュリティレベル。 $SECURITYがインクリメントされても、$MINORはゼロにリセットされません。したがって、特定の$SECURITY値に対して$MAJORの値が高いほど、$MINORの値に関係なく、常により安全なリリースを示します。

バージョン番号の4番目以降の要素は、JDKコードベースのダウンストリームコンシューマーが自由に使用できます。このような消費者は、たとえば、4番目の要素を使用して、対応するセキュリティリリースのセキュリティ修正に加えて、少数の重要な非セキュリティ修正を含むパッチリリースを特定できます。

23
Stephen C

つまり、3つの数字と2つのピリオドの間にあるはずです。

必ずしもそうではなく、以下に詳述するように、JDK自体を使用してバージョンを検証できます。

other answer で@Stephenによってリンクされているように当てはまるJEPに加えて、のJDKにもAPIが追加されています。 ) Runtime.Versionこれは、特定のバージョン文字列を検証するために使用できます。これは、次のようにサンプルスタブを使用して実行できます。

[ここではJShellを使用するのが面白いかもしれませんが、IDEはありません!]

Runtime.Version version = Runtime.Version.parse("9");
version = Runtime.Version.parse("9.0.1");
version = Runtime.Version.parse("9.0.0.15");
version = Runtime.Version.parse("9.0.0.15+181");

コードはVersion.parseを利用します

指定された文字列を有効なバージョン文字列として解析しますバージョン番号とそれに続くプレリリースとビルドを含みます情報。

さらに(主に) (ランタイム)バージョン のメジャー、マイナー、プレリリース、セキュリティ番号などの情報を取得するために使用できます。

8
Naman