時々、「JDK サポート期間」とかで検索して、僕の書いた古い記事にたどり着いている人がいるようだ。でも、2008 年のものなので、今となっては情報が古すぎる (当時は、2008 年中に Java 7 が出ることになってた)。
僕自身も「あれ? 今はどうなってるんだっけ」という感じなので、下記のページで調べ直してみた。
- Java SE EOL Policy
- http://www.oracle.com/technetwork/java/eol-135779.html
[2011-11-15 追記] 以下の記事は内容が古いです。より新しい情報については、下記を参照してください。
[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 Framework は Windows OS のコンポーネントとして扱われます。コンポーネントのサポート ライフサイクルは、コンポーネントをホストしている製品もしくはプラットフォームに従います。
マイクロソフト プロダクト サポート ライフサイクル - .NET Framework
なるほど。まぁ、わかりやすいことはわかりやすいか。Windows しかないわけだから。
今の時点で「脆弱性がいつまで修正してもらえるのか」というと、「延長サポート終了日」(延長サポート対象外の製品はメインストリームサポート終了日) までなので、以下のようになる。
- Windows Server
- Windows Server 2003 系は少なくとも 2015/07/14 まで
- Windows Server 2008 系 (R2 含む) は少なくとも 2018/07/10 まで
- クライアント OS
- Windows XP SP3 は 2014/04/08 まで
- Windows Vista は Business と Enterprise のみ 2017/04/11 まで、他のエディションは 2012/04/10 まで
- Windows 7 は Professional と Enterprise のみ 2020/01/14 まで、他のエディションは 2015/01/13 まで
ぱっと見 Java よりも長いし、OS のサポートが切れるまでは .NET Framework も使えるわけで、なんかよさげに見える。ただし Windows の場合、Service Pack がリリースされて 2 年経つと以前の Service Pack (または Service Pack 未適用のバージョン) についてはサポートが切れる。したがって Service Pack がリリースされる度に追随する必要があり、その度にアプリケーションの動作検証は必要になるだろうから、一概に「Java より .NET の方がラク」とは言えない。