Oracle JDK リリースモデル転換

Javaの無償サポートが無くなる

Oracleのリリースモデル転換により、今まで無償だったアップデートが有償になります。

base on 電子入札が使えなくなる恐れ、波紋呼ぶJavaサポート打ち切り | 日経 xTECH(クロステック)

米オラクルは2018年1月30日(米国時間)、Javaの開発・実行環境「Java Platform, Standard Edition(Java SE)」の商用向け更新版を公式ダウンロードサイトで提供するのは2019年1月までだと公式ブログで発表した。無償サポートは打ち切りになり、商用で更新版を使い続けるには有償サポートを受けるしかなくなる。

この決定に対し、自治体関係者らの間に不安が広がっている。Java実行環境(JRE)を使う自治体の電子入札システムなどが情報セキュリティを理由に使えなくなる恐れがあるためだ。

総務省が地方公共団体向けに公表している「情報セキュリティポリシーに関するガイドライン」は「開発元のサポートが終了したソフトウエアを利用してはならない」と定めている。ある自治体の入札担当者は「総務省のガイドラインに従ってセキュリティポリシーを策定した自治体は、サポート切れのJREを利用できない」と証言する。

JDK8, JRE8のサポート期間(サポート種別ごと)

サポート種別 サポート終了
商用利用・無償サポート 2019/01末
個人利用・無償サポート 2020/12末
有償サポート 2025/03末

影響範囲

  • Javaで開発したシステム
    ※ただし、JREを使わずアプリにJava環境を組み込んでいる場合は、無償で更新版を継続的に入手可能


    • JACIC:電子入札コアシステム(全ての都道府県や政令指定都市などが利用)
      総務省:電子政府の総合窓口(e-Gov)、政府電子調達(GEPS)
      その他、比較的大きなシステム...

なんでJavaは使われているの?

サポート環境の広さ

JavaはJVM(Javaバーチャルマシン)上で稼働する、という特徴があります。
このJVMで動くというのが肝で「Write once, run anywhere」を提供しています。

base on Write once, run anywhere - Wikipedia

Javaで記述されたソフトウェアは多くのシステムの上で開発・コンパイルでき、同一のバイトコードを得ることができる。そのバイトコードはJava仮想マシン(JVM)を持つ全てのシステムで動作する。Microsoft Windows、Mac OS、Linux、Solaris、FreeBSD、AIX、NetWare、HP-UX、OS/2などで動く。

JVMはチップやデバイスにも組み込まれている。これは、パーソナルコンピュータ (PC) で開発したコードが何らの調整なしに、Java実行環境を持つ携帯電話やルータやメインフレームで動くということである。そこで「一度書いてしまえば、どこでも走る」のである。プラットフォームやオペレーティングシステム (OS) 毎に違う版のプログラムを書く必要がなくなり、また、Javaが提供する抽象化されたレイヤの方が便利であるため、開発者の負担が減る。

実際には、完全な互換性が実現されているというわけでもないようですが、移植の手間が省けると言う意味ではJavaの理念通りと言えます。

以下の通り、サーバ・デスクトップ環境は網羅しています。

base on Javaのシステム要件はどのようなものですか。

Java 8のシステム要件

  • Windows
    RAM: 128MB
    ディスク・スペース: JRE用に124MB、Java Update用に2MB
    プロセッサ: Pentium 2 266MHzプロセッサ以上
    ブラウザ: Internet Explorer 9以上、Firefox
  • Mac OS X
    Mac OS X 10.8.3+、10.9+を実行するIntelベースのMac
    インストールのための管理者権限
    64ビット・ブラウザ
    ※MacでOracle Javaを実行するには、64ビット・ブラウザ(Safariなど)が必要です。
  • Linux
    ブラウザ: Firefox
  • Solaris
    サポートされているプラットフォーム、オペレーティング・システム、デスクトップ・マネージャおよびブラウザの詳細、サポートされているJava 8システム構成を参照してください。

言語レベルでの制約が強い

オブジェクト指向&強い静的型付けで制約が多いため、以下のような特徴があります。

  • コードから意味を読み取りやすい
  • コードが汚れにくい
  • 実行前に文法や型エラーに気づける

また、実行形式に中間言語方式を採用しているため、純粋な処理スピードは高速です。

上記のような理由から、比較的大規模(プロジェクトメンバが多い場合)に向くとされています。

どうしてこうなったの?

OSSでも無償提供でも所有権を放棄していない以上、いつでもライセンスや利用規約を変更することが可能です。
シビアな表現をすると、システムの明暗を外部にまかせているように見えます。

リリースモデルの転換で変わること

バージョンアップのサイクルとサポート体制が変更になります。

今後のサポート体制

では、今後のJavaのサポート体制はどうなるのでしょうか。

サポート 名称 備考
無償 OpenJDK OSS
有償 Oracle JDK 契約を結んだ顧客にのみ配布

バージョンアップサイクル

無償のOpenJDKのバージョンアップサイクルは6ヶ月です。
また、サポート期間は原則として次のバージョンがリリースされるまで(つまり6か月間)となります。
下記サイトが詳しいですが、6か月ごとのメジャーバージョンアップで機能の追加変更がありますので、無計画に更新に追随していくとシステムに不具合が発生する可能性が出てきます。

代替策

  • LTS版OpenJDK
    一定間隔で長期サポート(LTS)版のOpenJDKがリリースされる模様です。

  • 有償版の契約
    有償となるOracle JDKについては、3年ごとにLTS版がリリースされ、以下のサポートが適用されます。

    Oracle JDK
    Premier Support 5年
    Extended Support 8年

base on 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり) - Publickey

2018年3月にリリースされるJava 10から、6カ月ごとにメジャーバージョンアップが行われます。つまり2018年3月にJava 10、2018年9月にJava 11、2019年3月にJava 12、2019年9月にJava 13と続いていくのです。

そしてその合間の1月、4月、7月、10月の年4回、バグフィクスやセキュリティ対策に対応したマイナーバージョンが提供される予定です。

バージョンアップの基本的なポリシーは、機能の追加変更についてはメジャーバージョンアップで行われ、マイナーバージョンアップでは機能に影響のないバグフィクスやセキュリティ対応変更だけが行われるとされています。

私見

JVMで動くメリットは計りしれませんがx86アーキテクチャが大勢を占める今、サーバサイドで稼働させる分には、環境を考慮する必要性がさして高いとは思えません。
結局のところ、多重請負構造で開発時に人手を介するため、言語的に堅牢性の高いJavaが好まれる傾向があるだけで、実態に則ってはいないと感じています。
※どの言語でもスキルの有無により、メンテナンスビリティや可読性が左右されることにかわりはありませんし、ドキュメントの作成・維持も大切です

なお、一部からオラクルがサポート対応期間について改めて配慮するのでは?という意見も聞かれますが、個人的にはOSSコミュニティにより数年のサポートが提供される予定のLTS版OpenJDKに期待した方が報われる気がします。