「Java有償化」って、いったいどういうこと?
Oracle JDK有償化問題は昨年から技術業界に大きな波紋と共に衝撃を与えました。ややこしいですので、ITエンジニアの皆さんの中には、まだわからない方がいるかと思います。お客様への提案では、かかわる費用やリスクなどを考えないといけないことです。今回はJavaの歴史やOracle JDK有償化問題について解説します。
1. Javaの歴史
JavaはSun Microsystemsが1995年にリリースしたオブジェクト指向のJavaプログラミング言語及びJavaプラットフォームをまとめたものです。Java言語はクロスプラットフォームプログラミング言語であり、インターネットの普及に伴って、WEBシステムの主要な開発言語となりました。JavaはWebシステム開発をはじめ、家電、スマホの開発でもよく使われています。下図に示すTIOBEプログラミング言語ランキングを見ますと、Javaの人気度はずっとトップになっていることがわかります。
2010年、Oracleは74億ドルでJavaの著作権を買収して、Oracle製品ファミリーの一員となりました。その後、OracleはGoogleがAndroidシステムにJava API不正利用を理由に訴えを起こしました、もしかしてこれはOracleがJDK有償化の布石ではないかと思われます。Google I/O 2017で、KotlinをAndroidのデフォルト開発言語として採用することを発表しました。
2. 結論
それでは、Java有償化はいったいどういうことですか。先に結論をまとめておきましょう。
- 「Open JDK」はGPLベースで無料であり、半年ごとにメジャーバージョンをリリースするが、サポート期間が半年しかない。
- 「Open JDK」をもとに誰でもJDKを作れる、「Oracle JDK」はOracle社が作ったJDKである。
- 「Oracle JDK」は3年毎に長期商用サポート(LTS:Long Term Support)バージョンをリリースする。
- 「Oracle JDK」 8u211以降は、2019年4月16日から無償利用は個人または開発に限定する。商用システムに使われているJDK8をアップロードすると、Oracleの商用ライセンスが必要となる。
- 「Oracle JDK」以外、「Open JDK」をもとに様々な有料、無料、長期サポート提供のJDKバージョンが存在する。
一言でまとめますと、Open JDKが無料、サポート期間は半年しかない;Oracle JDKは有償になり、長期商用サポートあり;Oracle JDK以外はたくさんのJDKバージョンが存在する。
3. Oracleライセンス声明
まず、Oracle Java SE Development Kit 8ダウンロードページに掲載している重要声明を見てみましょう。
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
翻訳
Oracle JDKライセンス重要変更
2019年4月16日からOracle JDKライセンスが変更しました。
Oracle Java SEが採用されているOracle Technology Networkライセンスは、前のOracle JDKライセンスより重大の変更があります。新しいライセンスは個人または開発用の場合、無料利用できますが、古いOracle JDKライセンスが許可された内容が適用できなくなるかもしれません。ダウンロード及び使用する前に、ライセンス内容をよく読んでください。
低価格で商用ライセンス及びサポートを提供しております。
Oracleはjdk.java.netにてGPLライセンスに基づいたOpen JDKの最新バージョンを提供しています。
つまり、Oracle JDK 8u211以降個人利用または開発用の場合、無料利用できますが、商用システムに稼働しているOracle JDK 8をアップデートしても、料金を払わないと契約違反になってしまいます。
日本企業ユーザにとって、JDK 8u211はもうひとつの重大変更があります。5月から平成から令和の時代に入りまして、このバージョンではこの年号の変更も対応しました。
4. Oracle JDKリリースモデル
下表はOralceが発表したJDKリリースモデルです。Java9から半年ごとに無料のnon-LTSバージョン(Java9,10,12,13…)をリリースします、三年ごとに有償のLTSバージョン(Java11,17…)をリリースします。すなわち、non-LTSバージョンは次のバージョンがリリースするタイミングでサポート終了となります。例えば、Java13は2019年9月にリリースしますと,Java12はサポート停止となります。一方、LTSバージョンは少なくとも8年間の長期サポートを提供します。例えば、Java11は2018年9月~2026年9月の長期商用サポートを提供します。
Version | Release | Premiere Support | Extended Support |
---|---|---|---|
7 | 2011年7月 | 2019年7月 | 2022年7月 |
8 | 2014年3月 | 2022年3月 | 2025年3月 |
9(non-LTS) | 2017年9月 | 2018年3月 | – |
10(non-LTS) | 2018年3月 | 2018年9月 | – |
11(LTS) | 2018年9月 | 2023年9月 | 2026年9月 |
12(non-LTS) | 2019年3月 | 2019年9月 | – |
13(non-LTS) | 2019年9月 | 2020年3月 | – |
●Premiere Support:LTSバージョンリリース後5年
●Extended Support:Premiere Support完了後3年延長可能
Oracleによりますと、技術の発展によって、半年ごとにバージョンアップが必要ですが、業務上は長期的に安定なバージョンを利用するニーズもあります。そのニーズを満たすために、LTSバージョンは三年ごとにリリースして、8年間のサポートを提供します。
5. なぜLTSが必要なのか
Javaは定期的にバグ修正やセキュリティ問題などを対応しています。バージョンアップしないと、脆弱性を悪用して攻撃される可能性があります。最悪の場合、情報漏えい、ウィルスに感染されます、企業にとってそれは致命的な問題です。例えば、LTSバージョンを利用しなくて、Open JDKを利用すれば、どうなるでしょう?サポート期間が半年しかなく、サポート停止後、脆弱性を見つかってもセキュリティパッチがリリースされないですので、バージョンアップしかないです。ITエンジニアの皆さんは大規模システムのアップデートがどれぐらいの費用がかかるのかわかると思います。企業はやはり安定なバージョンを利用したくて、バグ修正やセキュリティ対策も必要です。Oracle社はこのニーズを狙って、LTS有償商用サポートサービスを提供したのではないかと思います。
6. Oracle JDK LTS费用
購買数によって割引もありますが、最小の購買単位は下記の通りです。
(1)CPU单位: 每CPU 每月 $25
(2)ユーザ单位: 每ユーザ $2.5
詳しくは下記のリンクをご参照ください。
http://www.oracle.com/us/corporate/pricing/price-lists/java-se-subscription-pricelist-5028356.pdf
7. 对策
Oracle SDKの長期サポートが有償化になりましたが、Javaシステム本番環境運用はどんな対策がありますか。
7.1 いつも最新のOpen JDKバージョンを利用する
https://openjdk.java.net/
Open JDKの中身はOracle JDKと同じですが、違いはサポート期間です。個人利用はOpen JDKが問題がないかもしれませんが、企業ユーザは頻繁なバージョンアップコストを考えて、よい案と言えません。7.2 Oracle JDK LTSサービス購入
企業ユーザにとってよい選択肢であるかもしれません。7.3 Oracle以外のJDKバージョンを採用する
OpenJDK、Oracle JDK以外、下記の選択肢もありますが、詳細は割愛させていただきます。
8. 後書き
Oracle JDK有償化はIT業界に大きな影響を与えています。個人にとって特に変わらないですが、企業にとって、運用コストが増えると思います。ただより高いものはないですね。
Java言語自体に対してどんな影響が出るのかまだ見えないですが、少なくとも短期間で大きな変化はなさそうです。時代によりプログラミング言語の人気度も変わっています。
何か漏れや間違いがあれば、ご指摘ください。当サイトは一切の責任を負わないものとしますので、Oracle JDK商用ライセンスはOracle関連ドキュメントを十分読んでください。