Java: またまた変わる Java SE のサポート期間

Sun が Java SE の有償サービスを始めた。そして、それにあわせて、従来からある無償利用のサポート期間まで変更されてしまったようだ。


サポート期間についての説明ページも改訂されている。

Java SE & Java SE for Business Support Road Map
http://java.sun.com/products/archive/eol.policy.html

[2011-09-05 追記] 以下の情報は記事作成当時のものです。2011 年時点の状況については新しい記事をどうぞ。

旧ルール

これまでは、メジャーバージョン単位で「最新のと 2 世代前までがサポート対象」だった。今日の時点でいうと、最新の Java SE 6 と、その前 2 世代にあたる Java SE 1.4 (Java 2 SE 1.4.x) および Java SE 5.0 (Java 2 SE 5.0) がサポート期間内。さらに前の Java SE 1.3 (Java 2 SE 1.3.x) は、Java SE 6 が出荷された 2006 年 12 月をもって EOL (End of Life) すなわちサポート期間終了を迎えたとされていた。
以下同じように、Java SE 7 のリリースで Java SE 1.4 が EOL となり、Java SE 8 が出たら Java SE 5 が EOL となる、はずだった。

新ルール

まず、サポート期間終了が EOSL (End of Service Life) という名称に変更された。その 1 年半前に EOL Notification という日付が設定されており、「もうすぐサポートが終わるから移行してね」というのを告知するという。
じゃぁ EOSL はどうやって決まるのか、というのが問題になるわけだけど、どうも、Sun が適当に決めることにしたっぽい。これまでのルールだと「Java SE 7 がリリースされたら EOL」だった Java SE 1.4 は、7 がいつリリースされるかに関係なく 2008 年 10 月 30 日で EOSL を迎える。さらに 1 年後の 2009 年 10 月 30 日には、Java SE 5 も EOSL に。現時点で最新の Java SE 6 については、2010 年に EOSL が予定されているらしい。Java SE 7 が予定通りに 2008 年夏に出るとして時系列順に並べると、

期間 サポート対象のバージョン
2006/12/xx〜2008/夏 1.4、5.0、6
2008/夏〜2008/10/30 1.4、5.0、6、7
2008/10/30〜2009/10/30 5.0、6、7
2009/10/30〜2010/??/?? 6、7
2010/??/??〜????/??/?? 7

こんな感じ?
これってかなり痛いような。2010 年以降も使うようなシステムを今から開発する場合、使えるバージョンがないもんね。新しいバージョンに移行しましょうってのが建前なのはわかるけど、ある程度以上の規模のシステムだと検証だけでも大変だ。そういうコストが嫌な場合は、今回始まった有償サポートをご利用ください、ってことなんだろうな。
大規模なシステムだと、「すでに OS ベンダの有償サポートを受けていて、その中に JDK/JRE が含まれている」というパターンもあるだろうけど、その場合も開発者の PC にはサポート対象外の (もしかしたら既知の脆弱性のある) JDK/JRE が残ることになるだろうから、何らかの検討は必要になる。

[2008-05-25 追記] Java 7 のリリースは 2009 年夏になったみたい。id:sardine:20080525 参照。

なんだか

Sun ってほんとにユーザを振り回すのが好きだね。
上記のページとか見ると、サポート期間が延長されたはずJava 1.3 が、延長されてないことになってるし。きょうびあんまりいないと思うけど、Windows サーバで Java 使ってるとかだったら、さっさと .NET に乗り換えちゃった方がいい。過去の遺物な .NET 1.0 でさえ 2009 年までは使えるよ。

.NET Framework のサポート概要
http://www.microsoft.com/japan/msdn/netframework/support/summary.aspx