Java有償化とは?無償で利用できない?


「Java有償化」というキーワードが聞こえてきますが、実際どうなのでしょうか。
今回はこのような疑問に、現役エンジニアの筆者が答えていきたいと思います。
筆者は大学卒業後15年ほどシステムエンジニアリングの会社に勤めてきました。C言語の学習に始まり、最近では需要の高いWeb系や、機械学習などの得意な言語にも取り組んでいます。Javaでのアプリケーション開発も多数経験しています。

初めに、Javaは今後も無償で利用できます!

Java有償化というキーワードがよく聞こえてきますが、
まず、Javaはこれからも無償で利用可能です。
では一体何が変わったのでしょうか?
これにはJavaのライセンスについて知る必要があります。
Java関連用語の説明
まず、Javaには色々と専門用語が関わってきますので、ごく簡単に説明します。
Java
プログラミング言語です。プラットフォームに依存しないところが特徴で、
組込み系からWebシステムまでその活用は多岐にわたります。
JDK
Java Development Kitの略で、Javaを開発する為のキットです。
よく似た用語にJREがありますがこれはJavaの実行環境です。
実行するだけならJREのみ用意すれば良いです。
なお、JDKは発行元が大きく分けて2つあります。OracleJDKとOpenJDKです。
J2SE/J2EE/Java SE/Java EE
本稿では特に出てきませんが、Javaに関わると時々登場してきます。
非常に紛らわしいのですが、これらは全てJavaのエディションを表しています。
J2SE、J2EEは古いバージョンで現在は未使用です。
Java SE、Java EEが新しく現在使われているバージョンです。
SEはスタンダード・エディションの略で、Javaの基本的な要素で構成されているエディションです。
EEはエンタープライズ・エディションの略で、主に企業用で、Web開発機能の拡張が入っています。
企業や商用で使われる大規模システムではEEが使われる事も多いと思います。
JDKの種類
JDKには大きく分けてOpenJDKとOracleJDKがあると述べました。
OpenJDKはJavaの仕様を実装したソースコードであり、OpenJDKコミュニティが開発しています。
OracleJDKはオラクル社が提供するJRE/JDKといったソースコードから作られた、
バイナリという形のものです。ソースコードは公開されていません。
ライセンス形態
Java 10までのOracle JDKのライセンス
Java 10までのバージョンにおいては、Oracle JDKのライセンスは、
BCL (Oracleバイナリ・コード・ライセンス)というものです。
このライセンス形態は簡単に言うと、商用・本番環境での無償利用が許されているものです。
Java 11以降のOracle JDKのライセンス
2018年9月にリリースされたJava11からは、ライセンスが大きく変更されました。
商用・本番環境で使う場合は、有償のサポート契約を結ぶ必要がある形になりました。
しかし無償で利用できるOpen JDKも利用可能です。
Java 11以降のOracle 提供OpenJDKとOracleJDK
Java 11以降、Oracleは提供方式を大きく変えています。
以下2つの形でJavaを提供しています。
・有償サポート付きのOracle JDK
・無償利用可能なOracle Open JDK
有償サポート付き、Oracle JDK(3年周期でバージョンアップ)
Oracle Open JDKとOracle JDKは、中身は同じものですが、
Oracle JDKの方は、最低8年間の有償サポートが用意されています。
また、3年の周期でバージョンアップが実施されます。
2018年9月に登場したOracle JDK 11(内容は同時登場のOpen JDK 11と同等)がそれにあたり、
次のバージョンアップは、2021年9月に登場予定の「17」になります。
無償利用可能なOracle Open JDK(半年周期でバージョンアップ)
従来はOpenJDKコミュニティが開発したソースコードを、Oracleがバイナリ化し、
Oracle JDKとして提供してきました。
そして、このOracle JDKが有償提供となったわけですが、
商用・本番環境で使う場合以外で無償で利用できる形態として、
OracleはOpenJDKのバイナリ版を提供してくれます。
これは、無料利用できますが、
半年周期で、「9」→「10」→「11」とバージョンが上がっていき、
新バージョンが登場した時点で前のバージョンのサポートは打ち切られます。
無料のJavaのデメリット

無償利用可能なOracle Open JDKでは、半年周期でバージョンがあがり、
そのタイミングで前バージョンのサポートが打ち切られます。
サポートが打ち切られるとどんなデメリットがあるでしょうか。
最も重大なのではセキュリティに関するアップデートを受けられなくなることです。
商用の製品ではセキュリティに脆弱性がある状態では運用を続けることは難しいでしょう。
サポート無しであれば自らバグを発見し修正するというコストが必要になります。
その他、Oracleのエキスパートによる問題解決の為の問合せについても
サポートがされなくなります。こちらも同様に自ら改修する必要が出てきます。
常に半年周期で最新のバージョンに対応するようにメンテナンスすれば良いですが、
これも多大な工数を要するでしょう。
2つの提供形式が用意された理由
Oracle がこのような複雑な提供方法を用意した理由は以下の通りです。
・業務面で、同じバージョンを長く安定的に使いたいというニーズに応える
・技術の進化に対応する為に、バージョンアップを頻繁に行う必要がある
これら相反する要求に応えた結果、このような提供方式になったようです。
無償提供もあるのなら問題ない?誰にとっての問題?
今回のOracle JDKの有償サポート化に伴い、誰が問題となるのでしょうか。
それは、Oracle JDK 8 以前を商用利用している企業です。
JDK 8は2019年1月で公式アップデートが終了となりました。
これまで無償で利用できていたものが有償になったわけですから、
以下のような選択を行う必要がでてきます。
・無償版のOpen JDKに移行する
この場合、サポート期間が半年になります。
・Oracle JDKを利用する
今後は商用利用の為にはコストが発生してきます。
・Oracle以外のJDKを利用する
Oracle社以外にも有償、無償に関わらず様々なJDKが存在しますので、
それらを検討するのも手です。
Javaの需要はどうなる?

今回のライセンス形態の変化に伴って、Javaの需要はどうなっていくでしょうか。
今後もJavaの需要あまり変わらない、と予測されます。
Javaは現在でも様々なプラットフォームで利用されていますが、
PythonやPHPといった言語の需要も伸びています。
PythonはAI関連で、PHPは小規模な案件で利用されています。
これらの台頭に伴いJavaは今回の件に関係なく全体的に規模が縮小している傾向にあります。
今後新たに作られる商用システムについては、わざわざ有償化されたJavaで作ることは減るかもしれません。
ただし、既存の商用Javaシステムについては、他の言語に置き換える事にはそれはそれで莫大なコストがかかります。
有償化されたサポートを使ってでもJavaのシステムを維持する企業が一定数いるのでは無いかと考えられます。
よって需要が伸びる事もなければ大きく減少するとも言い難いと思います。
まとめ
今回取り扱った「Java有償化」とは、
実際はOracle社の商用利用向けサポートが有償化した、というのが実態でした。
今後も個人や試作向けには、Oracleが提供するOracle Open JDKが利用できます。
まとめると以下のようになります。
・Open JDK(ソースコード):OpenJDKコミュニティが開発(無償)
・Oracle Open JDK(バイナリ): Oracleが提供(無償)
・Oracle JDK(バイナリ):Oracleが提供(有償)
商用利用する企業以外の人にはあまり関係しない、とも言えますが、
Javaはまだまだ利用用途が多いですし、開発のリーダークラスの人は、知っておくべきニュースだと思います。
より詳しくはOracle社の関連ページを参照いただければと思います。
JDKの新しいリリース・モデルおよび提供ライセンスについて
https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html