Oracleから2つの大きな発表
Publickeyというブログから最近情報収集することが増えました。客観的な記事が多く大変ためになっています。
さて、Publickeyから、Javaについて2つ大きなニュースを頂きました。
①Oracle Code Oneの開催
毎年秋に開催されていたJavaのイベント「JavaOne」は、今年から名称が「Oracle Code One」になり、Javaだけでなく他の言語や技術なども扱うデベロッパー向けの総合イベントになることが明らかになりました。
②GraalVMの公開
米オラクルがオープンソースで公開した「GraalVM」は、これまで言語ごとに個別に用意されていたランタイムを統合し、単一の高性能なVMにするという同社の研究の結果開発された汎用仮想マシンあるいは汎用ランタイムです。
2つの発表から見るOracleの姿勢
以下、個人見解です。
OracleはもうJavaという歴史的な負債を精算したいのではないでしょうか。Javaはもともとサン・マイクロシステムズ時代の資産なのは有名です。そして、オープンソースとのつきあいに失敗し、現在はGoogleとのAndroidをめぐる巨額の訴訟や、サポートロードマップの変更による利用者の混乱など、ネガティブなトピックを抱えていることは周知の事実です。
2018年にJavaを利用している人は全員理解すべきことを説明してみる(追記あり) - orangeitems’s diary
OracleとGoogleのJava著作権侵犯裁判の現状を知る(2018年版) - orangeitems’s diary
Javaに対して、Oracleが多大な貢献をしているのは紛れもない事実です。しかし、残念ながらOracle本体ビジネスへの貢献ができていません。いくらJavaソースコードに修正を加えても、ライセンス料は発生しないのです。
Java9からは、Oracleによる無償サポート期間が半年になり、それ以降は有償サポートを受けないと最新版が手に入らなくなったのは既報の通りです。また、3年のサポート期間をつけるLTSはJava11で予定されています。このLTSも今のところOracle JDKでしか予定されておらず、オープンソース版であるOpenJDKにて同じように、LTSが存在するのかいまだ不明瞭です。OpenJDK自体もOracleが大きくコミットしていることを考えるとOracleはOpenJDKでLTSが出るのを快く思っていないと個人的には考えています。ここはまだどうなるかわかりません。
一方で、GoogleにはAndroidを踏み台に巨額の損害賠償を起こし、Javaが本来得られるはず(と主張している)利益をもくろんでいます。なにしろ、Javaがビジネスになっていないことについて、どうにかしなければいけないとOracleが考えていることは明白です。
以上の状況のもと、Oracleが正常と考える状態にJavaが変化するのは並大抵の作業ではないということがわかります。これを、今回のOracle Code Oneと、GraalVMにて刷新しようとしているのではないでしょうか。
今後の展開を探る
GraalVMがサポートしている言語は、以下の通りです。
・Java、Scala、Groovy、Kotlin、Node.jsを含むJavaScript、 C、C++、Rust、Ruby、R、Python
Announcing GraalVM: Run Programs Faster Anywhere | Oracle Developers Blog
一方で、Oracle Code Oneのホームページにはこんなことが書いてあります。
Oracle Code Oneは、他の会議よりも多くの言語、テクノロジ、開発者コミュニティを含む新しい開発者会議です。 Go、Rust、Python、JavaScript、Rの話を期待してください。また、開発者が期待する優れたJava技術コンテンツがたくさんあります。この会議には、JavaチームのアーキテクトからのJavaに関する最新情報が記載された技術基調講演が含まれます。チャットボット、マイクロサービス、AI、ブロックチェーンなどの最先端のトピックの詳細な説明が必要です。また、Oracle JET、Project Fn、OpenJFXなどのオープンソース開発者テクノロジのトレンドに関するセッションもあります。 Oracle Code Oneは、世界的な開発者コミュニティの盛んな学習者になるために必要な1つの会議です。これは最終的な開発者会議です。
なんとなく、戦略が見えてくるのですが、多数の開発者がしゃべっている言語を、GraalVMに取り込み、今後のソフトウェア開発のイニシアチブを取りたいのが明らかではないでしょうか。
そして、MySQLのように、2つのバージョンが出て、マネタイズもOracle納得の状況になるわけです。
GraalVMはオープンソースで開発されており、無料のCommunity Editionと、セキュリティやスケーラビリティを高めた商用版のEnterprise Editionが提供されます。
で、GraalVM Community Editionに注目したいわけですが、ライセンスがクラスパス例外付きのGPLです。
graal-core/LICENSE.md at master · graalvm/graal-core · GitHub
OpenJDKと同じですね。GPLではあるものの、例外事項のおかげで、実用的には問題なさそうです。MySQLの時には、完全にGPLだったので実質商用利用しようとすると有償版を利用せざるを得ないということで議論があったのを思い出します。
MySQL - ライセンス早分かり - MySQL, Qooker, VG-Sync, BitDefender, IP-PBX
最後に、不明な点です。
1点目にサポートポリシーが不明です。まだCommunity editionの1.0.0RC1(リリース候補)が出たばかりですし、正式にはリリースされていないので、リリース時には見解が出るでしょう。Enterprise editionもOracleに直接連絡しないと手に入りません。
2点目にGraalVM内の各言語のバージョンの整合性です。例えばJavaだと、JDK8相当です。以下の混乱が発生するかもしれません
・GraalVMはサポート期間だがJDK8のサポートは終了している
・ネイティブなJDKと動作が違うときの対応はどうするか
・Javaが半年ごとにリリースアップされる中で、GraalVMの中のJVMはどのような変更がされるのか
このように、Java一つとっても整合性に苦労しそうな半面、他の言語も同様な調整が必要となると、何かネイティブの言語とは別の物として扱ったほうがいいという判断もあながち間違いではないような気がします。今のところはですが。
改めて、公式ホームページをご案内します。
Oracleが、GraalVMを持ってJavaの負債を一掃し、多言語化したデベロッパーコミュニティーをマージし、Oracleがイニシアチブを取り、かつビジネスとしても成功するというこの絵が成功するのかどうか、興味を持って推移を見守りたいと思います。裁判をやったりサポートポリシーでもめたりするよりは、ポジティブです。ただ、「実際どうやるんだろ?」とう技術的興味の方が先です。