BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Javaの新バージョンはJDK1.9ではない

Javaの新バージョンはJDK1.9ではない

原文(投稿日:2014/11/30)へのリンク

JDK拡張提案 (JEP) 223は、Javaバージョンのメジャー、マイナー、セキュリティリリースを区別しやすいように、新しいJDKのバージョニングスキーマを提案する。このバージョニングは、簡単、かつ、直感的で、解析しやすい。また、現在、この業界で実践している方法、特にセマンティックバージョニングと一致する。例えば、JDK 1.7.0_65-b20 (7u65) を新しいバージョニングスキーマを使って表すと、バージョンはJDK 7.6.15+20 (7.6.15) になる。

既存のJDKバージョニングスキーマでは、「JDK 7 Update 65」、「JDK 1.7.0_65」、「JDK 7u65」は同じリリースを別の言い方で表したものだ。リリースを区別して比較するには、解析した文字を単に比較するのでは十分でなく、かなり複雑なアルゴリズムが必要になる。小文字の「u」を使うのは業界標準でも言語に中立なものでもない。現在使われているJDKのナンバリングスキーマでは、セキュリティ修正以外の変更を含むマイナーリリースは、20の倍数だ。前回のマイナーリリースに基づくセキュリティリリースは、5か6を増やした奇数だ。このナンバリングスキーマに精通していない人たちは、「JDK 7 Update 60」は「JDK 7 Update 55」の5リリース後だと思うだろう。そして、前者の方がより多くのセキュリティ修正が含まれていると勘違いする。1つの番号でマイナーとセキュリティのバージョンを記号化するこの方法は、解読が難しく、多くのバージョンをスキップする原因にもなる。

JEP 223の目的は、バージョンを分かりやすく解析できるようにして、現在、この業界で使われているセマンティックバージョニングに合わせ、既存のパッケージングやデプロイシステムで採用できるものにすることだ。また、JEPはバージョンの文字列の解析、検証、比較のためのAPIを提供する。以前のJDKリリースで使われたバージョン表記のフォーマットを変えることが、このJEPのゴールではない。

バージョン番号は、ピリオドで区切られた、負ではない連続した整数だ。数字の前に0は付けず、[1-9][0-9]*(\.(0|[1-9][0-9]*))*の正規表現に適合させる。最初の3つの要素は、$MAJOR.$MINOR.$SECURITYだ。$MAJORは、新しいJava SEプラットフォームの仕様で決められた重要な新機能を含む主要なリリースの場合に、数字を増やす。$MINORは、互換性のあるバグ修正や、標準APIの修正、新しいガベージコレクタや新しいハードウェアアーキテクチャのサポート等、実装上の機能を含むマイナーなアップデートリリースの時に数字を増やす。$SECURITYは、緊急の修正を含むセキュリティアップデートのリリースで数字を増やす。$MINORと$SECURITYは、$MAJORの数字が上がった時にゼロにリセットされる。ある$MAJORバージョンで$SECURITYの数字が高い場合は、$MINORの数字に関わらず、セキュリティ関連のリリースが多かったことを示す。

バージョンの文字列はバージョン番号で構成されるが、時には、プレリリースやビルドの情報が付属する。プレリリースを識別するeaは、現在開発中の初期アクセスリリース(early access) を表す。ビルド番号は、ビルドが進むと増えていき、バージョン番号の一部が上がると、1にリセットされる。後に続く0が省略されたバージョンの文字列は、ショートバージョンと呼ばれる。以下に示すリストは、現在、および、提案されたバージョン表記を使って、JDK9のバージョンを比較したものだ。JDKのバージョンが常に1から始まると仮定している既存のコードは、これからは正確に動かないことに注意しよう。

                      Existing                Proposed
Release Type    long           short    long           short
------------    --------------------    --------------------
Early Access    1.9.0-ea-b19    9-ea    9.0.0-ea+19    9-ea
Major           1.9.0-b100      9       9.0.0+100      9
Security #1     1.9.0_5-b20     9u5     9.0.1+20       9.0.1
Security #2     1.9.0_11-b12    9u11    9.0.2+12       9.0.2
Minor #1        1.9.0_20-b62    9u20    9.1.2+62       9.1.2
Security #3     1.9.0_25-b15    9u25    9.1.3+15       9.1.3
Security #4     1.9.0_31-b08    9u31    9.1.4+8        9.1.4
Minor #2        1.9.0_40-b45    9u40    9.2.4+45       9.2.4

JEPは2014年10月20日に作成され、JDK 9のリリース候補となっている。JDK Java APIのサンプルを含む、さらなる情報は、JEP 223JBS (JDK Bug System) 8061493を読もう。

この記事に星をつける

おすすめ度
スタイル

BT