みなさん、こんにちは。富士通ラーニングメディアでJavaの講師や研修企画・開発を担当している並木です。
2019年1月にOracle JDK 8の商用利用向けの公式アップデートが終了したことを受け、Javaの開発に携わる方々は、Javaのアップデート対応を検討されているところかと思います。
しかし、最近の Java に関する情報を調べると、「Java有償化」というキーワードが目に入り、戸惑っている方も多いのではないでしょうか。
そんな皆さんの疑問にこたえるべく、先月弊社では、日本オラクル株式会社 岡田大輔様をお招きして「Javaアップデート解説セミナー」を開催しました。
(参考)セミナープログラム
本セミナーには多くのJava開発者・運用担当者の方にご参加いただき、「Javaアップデートに関する疑問が解消できた」と好評をいただきました。本記事では、セミナーでご紹介したJavaアップデートのポイントや質疑応答のやりとりをご紹介します。
Javaはこれからどう変わっていくの?
Java 9以降、Javaのリリースサイクルが従来とは異なり、6ヶ月に1回フィーチャー・リリースが行われるようになりました。このリリースサイクルの変更により、計画的かつ素早いリリースが実現されるようになりました。
(※セミナー資料より抜粋)
2019年2月現在、まだJava 8を利用されている方が多いと思いますが、既にJava 11まで正式リリースされています。
まずはJava 9 ~ 11で追加・変更された主な機能をご紹介します。
Java 10から、「var」を使った型推論が追加されました。「var」で定義した変数は、格納した値によってデータ型が暗黙的に推論されます。
Java 11から、java コマンドで、拡張子.javaのファイルを直接実行できるようになりました。
なお、今までと同様にコンパイルしてから実行することも可能です。
その他の新機能や変更点については、記事最後のリンクからダウンロードいただけるセミナー資料に詳細が記載されております。ぜひご覧ください。
Oracleが配布するJDKは、Java 9以降、「Oracle JDK」と「OpenJDK」の2種類に分かれます。
「Oracle JDK」は、Oracleとのサポート契約が必要な有償のJDKです。有償ではありますが、Oracleからの長期サポート(LTS : Long Term Support)を受けられるというメリットがあります。
一方、「OpenJDK」は、無償で利用できるJDKです。Oracle JDKと機能自体に差はありませんが、サポート期間は6ヶ月間(次のバージョンがリリースされるまで)となります。
(※セミナー資料より抜粋)
なお、Oracle JDKも、OTNライセンス下では無償利用が可能です。OTNライセンスは商用利用不可のライセンスであるため、本番環境での利用はNGですが、開発目的であれば利用することができます。
本番環境でも無償で利用したいのであれば、OpenJDKという選択肢を利用することになります。
※本記事で詳しくは扱いませんが、Oracle以外のベンダーが提供するOpenJDKも存在します。
Oracle提供のOpenJDKと、機能はほぼ同等ですが、サポート内容やサポート期間などに違いがあります。
JDK 8の公式アップデートは、2019年1月に終了となりました。公式アップデート終了後は、最新バージョンのJDKにアップグレードいただくことをお勧めしますが、JDK 9以降とJDK 8では機能の変更点があるため、注意が必要です。
上記の変更の影響を受けずにシステムを動かし続けたいなどの理由で、JDK 8を継続して利用したい場合は、商用ライセンスを購入するという選択肢があります。なお、Oracle JDK 8の商用サポート期間は、2025年3月までです。
基本的には、以下の流れで移行を進めていただくと良いです。
(※セミナー資料より抜粋)
公式API(java.*,javax.*)を利用している場合であれば、基本的にJava 8との互換性はあると考えてよいです。
その他のクラスは互換性がない可能性もあるので、実行確認により振る舞いを確認する必要があります。
Oracle社のWebページでJDKの移行ガイドが公開されているので、そこで、非互換のAPIを確認することをお勧めします。
(参考)Oracle JDK移行ガイド
最後に、セミナー参加者の方との質疑応答の内容をご紹介いたします。
Q. Oracle JDKで有償サポートを受けるメリットは?
A. Oracle から JDKのアップデートを長期に渡って入手可能であることに加えて、問い合わせサポートを受けることができます。
Q. Java 9, 10, 11でAPIから削除された機能はなぜ削除されたのか?基準などはあるか。
A. 基本的に技術的に古くなったもの、かつあまり利用されていないものが削除対象になります。削除対象になる API は 各リリースでも言及されますので各リリースのリリースノートなどを定期的に確認することをお勧めします。
Q. JDKのライセンスについて、Oracle JDK では「Oracle BCL(Binary Code License)」であったのが、Oracle ビルドの OpenJDKでは「GPLv2.0 + Classpath Exception」に変更されている。
変更された経緯を教えてほしい
A. Oracle ビルドの OpenJDK バイナリは、アプリケーションの実行に利用するJREの再配布を容易かつシンプルにするために、ライセンス方式を変更しています。BCL は JRE/JDK の配布方法に制限がかかる場合がありますが、GPL v2.0 では JDK に適用される GNU の Classpath Exception でユーザーアプリケーションはGPL v2.0 の制約を受けずに JRE/JDK を利用できます。
セミナー登壇者プロフィール
Oracle Technology 製品に関する教育サービスの推進担当として、研修・認定資格の企画やセミナー実施などの普及活動に従事。
Oracle 認定 Java 資格試験の監修者のひとりでもある。
(2019/03/14)