Java 6 のサポート期間は 2012 年 7 月まで

時々、「JDK サポート期間」とかで検索して、僕の書いた古い記事にたどり着いている人がいるようだ。でも、2008 年のものなので、今となっては情報が古すぎる (当時は、2008 年中に Java 7 が出ることになってた)。
僕自身も「あれ? 今はどうなってるんだっけ」という感じなので、下記のページで調べ直してみた。

Java SE EOL Policy
http://www.oracle.com/technetwork/java/eol-135779.html

[2011-11-15 追記] 以下の記事は内容が古いです。より新しい情報については、下記を参照してください。

www.toyfish.blog

[2012-03-04 追記] Java 6 SE のサポート期間は延長され、この追記を書いている時点では、2012 年 11 月までと発表されています。今後また変更される可能性あるので、最新の情報は上記の Oracle 公式サイトで確認してください。

Java 6 は 2012 年 7 月まで、Java 7 は不透明

現在 Oracle がサポートしているのは、Java 6 と 7 のみ。そのうち Java 6 は、来年 7 月で EOL を迎える。つまり、サポートが終了して、不具合や脆弱性が見つかっても修正版が公開されなくなる。
現在 Java 6 で開発・運用している場合は、それまでに Java 7 に移行するか、後述の有償サポートを購入する必要がある。

期間 サポート対象のバージョン
2006/12/11〜2008/10/30 1.4、5.0、6
2008/11/01〜2009/10/30 5.0、6
2009/11/01〜2011/07/27 6
2011/07/28〜2012/07/?? 6、7
2012/07/??〜????/??/?? 7

これを書いている時点では、Java 7 のサポート期間は公開されていない (少なくとも、上記のページには書かれていない)。これまではどのバージョンも 5 年くらいはサポートされていたらしいけど、Java 7 は Sun が Oracle に買収されてから初めてのリリースなので、今までと同じかはわからない。

Java for Business での Java 6 延命

Sun (現 Oracle) は 2008 年以降、無償で利用できる通常の JDK/JRE に加えて、有償版の Java for Business という製品をリリースしている。有償版と言っても機能が違う訳ではなく、「サポート契約を結ぶと通常版よりも長く修正版が提供される」という仕組み。
Java 6 の場合、この契約を結んでいると、2013 年 12 月までは不具合・脆弱性の修正版が入手できる。また、追加料金を払うことで 2016 年 12 月まではサポートを受けることができるようだ。詳細は知らないので、知っている人に聞いてください。

(参考) .NET Framework のサポート期間

そういえば、.NET Framework のサポート期間はどうか。こちらは下記のページに記載がある。

.NET 3.5 SP1 以降より、.NET FrameworkWindows OS のコンポーネントとして扱われます。コンポーネントのサポート ライフサイクルは、コンポーネントをホストしている製品もしくはプラットフォームに従います。

マイクロソフト プロダクト サポート ライフサイクル - .NET Framework

なるほど。まぁ、わかりやすいことはわかりやすいか。Windows しかないわけだから。
今の時点で「脆弱性がいつまで修正してもらえるのか」というと、「延長サポート終了日」(延長サポート対象外の製品はメインストリームサポート終了日) までなので、以下のようになる。

ぱっと見 Java よりも長いし、OS のサポートが切れるまでは .NET Framework も使えるわけで、なんかよさげに見える。ただし Windows の場合、Service Pack がリリースされて 2 年経つと以前の Service Pack (または Service Pack 未適用のバージョン) についてはサポートが切れる。したがって Service Pack がリリースされる度に追随する必要があり、その度にアプリケーションの動作検証は必要になるだろうから、一概に「Java より .NET の方がラク」とは言えない。