Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Javaのサポートはこう変わる! 強化されたDocker対応

初めての6カ月定期アップデートで変わったJava 10、ポイントを押さえよう 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/07/09 14:00

 前回は、主にJava 10の機能面の変更について説明しましたが、今回はJava 8までの流れと大きく変わった新しいサポートを中心に紹介します。新しいサポート方針に関しては、2017年9月に発表されていましたが、Java 10のリリースとともにJava 9のサポート終了を知り、大きく関心を寄せた方もいるのではないでしょうか。また、Java 10でのDockerへの対応強化についても併せて紹介します。単にDockerへの変更点という意味ではなく、Dockerを利用することは開発時もしくは運用時におけるJavaのバージョンへの依存度の低減につながる対応ではないかと思っています。

目次

編集部より

本稿の一部に表現が不足している箇所がありました。お詫びして訂正いたします。(2018/07/13 13:30)

  • Javaのメジャーアップデートサイクル、サポートサイクルについて、追記いたしました。
  • Oracle版JDKのDockerイメージの取得について、修正いたしました。

短いスパンのバージョンアップとTLS、そして有償サポートへ

 Java 9のリリースとともに新しいサポート・ロードマップが公開されました。そこでは6カ月ごとにメジャーアップデートが行われることが示され、そして、2018年3月にはJava 10がリリースされました。

 Java 9がリリースされた当初は、今後について発表はされたものの実際にはどうなるのかと様子をうかがう風潮もありましたが、無事Java 10がリリースされ、現在次のJava 11リリースまであと少しという状況です。

 一方でJava 8までのサポートとJava 9からのサポートでは違いがあるため、今後のJavaの利用について一部不安視する声もあがっており、エンジニアも利用するユーザーもこれらの違いについて理解することが大切です。

6カ月ごとのメジャーアップデート

 Java 9からは下の図1の通り6カ月ごとにメジャーアップデートが行われます。そして、そのバージョンに対するアップデートも次のバージョンのリリースとともに終了します。したがって、Java 10がリリースされたらJava 9のアップデートがなくなってしまい、Java 11がリリースされたら同様にJava 10のアップデートはそこで終了となります。

 これは、Java 8までのバージョンアップが長い時間を要し、その間のトレンドをキャッチアップできなかったことに対する改善策で、今後は、今回のJava 10のように比較的小さいバージョンアップになっていくと思います。ただし、アップデートがリリースされなくなり、すぐに新しいバージョンにアップデートしていかなくてはなくらないのでは運用面で大変です。そのため、次のJava 11ではLTS版(長期サポート)のリリースも用意されています。また、LTS版は3年ごとのリリースを予定しているので、次のOracle版JavaはJava 17になる予定です。

図1:6カ月ごとのメジャーアップデート
図1:6カ月ごとのメジャーアップデート

 LTS版だけ利用していくのであれば、Java 9やJava 10は安定バージョン前のプレビューバージョンといった位置付けになるので、それほど短いサイクルでバージョンを上げなくてもよいのではと思うことでしょう。しかし、新しい技術分野においては1年半という時間は長すぎる場合があります。多様な用途を考慮しつつ継続したリリースをしていくためには、6カ月ごとのリリースと3年ごとのLTS版といった2種類の対応は、良い流れになっていると思います。

Java 11からOracle Java SEは有償に

 6カ月ごとのメジャーバージョンアップがあっても、LTS版も用意されているのでそれほど気にならないかと思います。ただし、このJava 11のOracle JDKは有償になります。

 つまり、Oracleからリリースされる無償版のOracle JDKはJava 10が最後になります。したがって、Java 10以降、無償のJDKを利用したい場合にはOpen JDKを使う必要があります。このように、Java10以降、6ヶ月毎にリリースされるJDKはOpenJDKが担っていき、長期有償サポートが必要な方に対してはOracle JDKが担っていくという流れになります。また、これらのサポート期間について示したものが図2です。

図2:Java SEのサポート期間
図2:Java SEのサポート期間

 このサポートはJDKではなく、Java SEに関するものなので、開発だけではなく運用にも影響します。

 ただし、Javaはバージョンアップしたら旧バージョンのバイナリが動かなくなるわけではないので、通常、一部の言語のようにコードを書き直したり、コンパイルをし直したりする必要はないでしょう。そのため、開発し続けているプロジェクトにとってはあまり影響はないと思われます。また、Open JDKについても、Oracle JDK の商用機能を OpenJDK へ提供した上でOracleがビルドした OpenJDK を無償でリリースするとのことですので、実用面に関しては大きな心配は必要ないことでしょう。

 しかし、SIなどによって納品されたコードで、契約の都合により利用者がJavaの実行環境について変更できない場合などには非常に大きな影響が発生します。つまり、サポート面も考慮し、現行のポリシーのまま運用しようとすると、Java 8を利用し続ける選択がもっとも有効となります。

 Java 8のサポート終了時期には2つあり、2019年1月に通常のサポートが終了し(図2の(1))、2020年12月に個人利用のサポートが終了します(図2の(2))。

 つまり、一般コンシューマーがPCにインストールしてあるJavaの利用を前提としたアプリケーションを配布している場合には、2020年12月がデッドラインになります。これらの期間で対応するには短いといった場合には、有償サポートが必要になってきます。

 また、新たにJava 11以降に稼働する場合、OpenJDK版 Java 11がLTSバージョンとして有償版と同様に長期メンテナンスアップデートをサポートできるかといった点が注目されます。OpenJDKのビルド版をリリースしていくベンダはOracleだけではないため、それらのOpenJDKはそれぞれのベンダ毎にサポートに対する考え方もかわるようです。

 現在ではどのような状況になるのか未確定ではありますが、LTSバージョンとしてサポートできる方向に動いているようなので、今後目が離せません。

Oracleでの価格体系

 これまで「Javaの利用は無償」というイメージを抱いていた方は、有償となるとどの程度コストがかかるのか興味があるのではないでしょうか。

 そこで、値段表を見てみると、既存のJava SEと同様のサービスをそろえるには、以下の2つの商品が必要となることがわかります。

Java SE Advanced Desktop

 デスクトップ環境での利用を前提とした、Java SEの利用。料金体系(1ユーザー当たり、4800円、年間サポート料金、1056円)

Java SE Advanced

 一般的なJava SEの利用。料金体系(1ユーザー当たり、1万2000円、年間サポート料金、2640円。または1プロセッサあたり、60万円、年間サポート料金 13万2000円)

 ただし、これらの製品にはJava SE以外に、他のツールも含まれています。詳細はOracle Java SE Advanced & Suite製品などをご覧ください。

 これまでのJavaの利用にこういったコストをかけていた方は少ないでしょうから、今後のコストの考え方については悩ましいところです。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。個人紹介主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしど...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:初めての6カ月定期アップデートで変わったJava 10、ポイントを押さえよう
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5