Java Programming Language

Oracleはここのところ、頻発するJavaのブラウザに関係したセキュリティホールに頭を悩ませている。セキュリティ対策に力を入れるために開発リソース割り当てたことで、当初予定していたJava 8のリリース日を先延ばしにするなどの変更を実施している。そして今度はバージョン番号の割り振りも変更することになった。セキュリティパッチの提供頻度が多すぎ、現在のバージョン番号ルールでは対応できなくなったためだと説明している。

Java SE - Change in Version Numbering Scheme」で説明されている新しいバージョン番号ルールをまとめると次のとおり。

  • Limited Updateは20の倍数を割り当てる
  • Critical Patch Update(CPU)には5の倍数を割り当てる。倍数が偶数になる場合にはさらに1を加算して奇数へ変更する
  • Limited UpdateとCPU以外の予定外のアップデートはそれらバージョン番号の間の数字を使用する

適用はJava SE 7に対して実施され、必要に応じて6や5にも適用するとしている。

たとえば、執筆現在でJava SE 7はJDKu21といった番号が振られているため、次のLimited Updateでは「JDK7u40」になる。JDK7u40に対してCPUがリリースされるとJDK7u45となる。さらに次のCPUでJDK7u51、さらに次のCPUでJDK7u55といった番号になる。JDK7u45をリリースしたあとで、想定外のセキュリティパッチを実施する必要がでた場合、JDK7u51までの間の番号が割り振られることになる。

新しいLimited Updateがでると、バージョン番号は20の倍数だからJDK7u60にあがる。CPUが実施されればJDK7u65、JDK7u71、JDK7u75となる。Limited Updateはセキュリティ対策を含まない新機能の追加や機能の変更などが実施されるときにリリースされ、CPUはセキュリティ対策が実施されるタイミングでリリースされる。CPUは典型的には月に1回。

こうしたバージョン番号ルールはあまりなじみのないものだが、現行のJavaのバージョン番号ルールをなるべく維持したまま、頻繁に発生する想定外のセキュリティパッチにも対応できるという仕組みになっている。