arclamp

ITアーキテクト 鈴木雄介のブログ

2016年現在のJavaについて

Sun MicrosystemsOracleに買収されたのが2009年ですから、あれから7年が経ちました。

2013年、Javaは大人になったはずだった

僕は2013年に「イマドキのJavaとORACLEについて - arclamp」という記事をアップし、次のように書きました。

そんなわけで「ORACLEJavaにコミットしているのか?」という質問が無意味なぐらい、ORACLEJava技術だけではなく、Javaユーザーの方を向いているのです。

もちろん、ORACLEは(SUNに比べて)イノベーションが足りないとかスピード感がないとか批判もできるのですが、これだけエンタープライズのユーザーが増えた中では、Java後方互換性を保ちつつ、着実に進化していく、つまりは引き続き安心してJavaを使うことができるというのは大きな価値でしょう。

そう、Javaは本当の意味でオトナになったのかもしれません。

2009年の買収に前後して混乱していたJavaの動きは、2013年ごろには確かに前を向いて動いていました。

2015年、Oracleの推進力が落ちてきた

しかし、2015年頃から「オラクルがJavaエヴァンジェリストを削減」ということや、重要人物がJava担当から外されたという情報が相次ぎました。

さらに2016年になるとJava EE Guardiansが設立されました。Java EE Guardiansは、Java EEの仕様策定においてOracleの推進力が弱まっていることを懸念し、この改善を目指すコミュニティ活動です。そして、Oracleへの改善要求を行い、Java EEを推進力がある企業に任せるべきだ、という提案を行っています(参照: Java EE Guardiansへの支援表明と活動紹介 )。

こうした動きの裏には、Oracleクラウド戦略を加速するために社内の優先順位を変えているからだと言われています。今年のOracle Open Worldでは「OracleのエリソンCTO、IaaS注力でAWSに“宣戦布告”」という発表をしています。

2016年、Javaはどうなっているのか

では、このままJavaの勢いは落ちてしまうのでしょうか?僕が今年のJavaOneは感じたのは、そんなことは気にしないコミュニティの勢いです。このことを伝えたくてJavaOne 2016 報告会 @ 東京でも「JavaOne2016総括」という発表をさせてもらいました。


標準Javaの歩みが遅くなっても誰かが追い越していくだけ

JavaOne 2016におけるOracleの発表はたいしたものではありませんでした。それよりもIBMによるOpenJ9の発表は拍手が起きる内容でした。OpenJ9はIBMの商用JVMであるIBM J9をオープンソース化するもので、OpenJDKに含める形でも公開されます。しかも、OpenJ9は既にオープンソース化されているEclipse OMRをコアにしています。

Eclipse OMRというのは「言語の実行環境を作るためのツールキット」です。スレッド制御、GCJITコンパイラなどの言語に非依存な実行環境の機能を提供し、各言語向けに実行環境を作るためにはグルー(糊)部分だけを開発すればよいようになっています。
昨年のRubyKaigiではRuby版(プレビュー)を公開しています(講演:It's dangerous to GC alone. Take this! - RubyKaigi 2015)。なお、Python版も公開予定があるようです。

現在のOpenJDKはSun時代から引き継がれているHotSpotがコアとなっていますが、Java9以降はHotSpotベースのOpenJDKとOpenJ9ベースのOpenJDKが存在することになります。IBM J9は起動の高速化とフットプリントの低減が実現されています。おそらく、この特性はOpenJ9にも受け継がれるでしょう。当然、OpenJDK9に向けてHotSpotの改善も予定されているので、その比較は興味深いです。

f:id:arclamp:20161019110241p:plain
参照:J9: Under the hood of the next open source JVM

IBMオープンソースを活用して実質的な標準を奪取することに長けています(参考:Google対OracleのJava API訴訟。歴史的経緯とIT業界への影響を考える。JJUGナイトセミナー)。

一方でマイクロソフトもCoreCLR(共通言語ランタイム)をオープンソース化しており、LinuxMac上でも.Netを動かそうとしているので、言語ランタイム基盤の争いが始まっているのかもしれません(参考:CoreCLR がオープン ソースに)。

Oracleが主導する標準Javaと関係なく世の中は動いています。標準Javaの歩みが遅くなっても誰かが追い越していくだけなのです。

JavaOneはコミュニティの交流の場

では、標準Javaの歩みが遅くなる中でJavaOneというのは、どういう存在だったのでしょうか。正直に言ってOracleによるキーノートでは目新しい発表はありませんでした。Java EEはロードマップが示されたものの、その実現性には疑問を持たざるをえません。

元気だったのはコミュニティが主催するコミュニティ キーノートです。今年は「STAR WARS: THE FORCE AWAKENS(フォースの覚醒)」をパクった「STAR WARS: THE CODER AWAKENS(コーダーの覚醒)」という題目。『ダースコーダーとデュークトルーパーが銀河中の開発者からモジュールを盗んでコードがコンパイルできないようにしてしまったのです』という設定のもと盗まれたモジュールを追いかけて様々な星を巡ります。

役者(?)は世界中のJUGリーダーやOracleJava関係者であり、最強の敵ダースコーダーにはジェームズ・ゴスリンが配役されるなど、言ってしまえば学芸会です。興味がある方は、ぜひ公式サイトの動画公開で見てみてください。Javaネタ満載のぐだぐだ演劇です。

f:id:arclamp:20161019112153p:plain
ゴスリンが正体を明かして「I'm Duke's farther.」(私はDukeの父だぞ)というシーン。もちろん、「Lukeの父」にかかってます。ちなみに左手に持っているのは台本で、彼だけ台本片手に演じ続けていました。

僕はJavaOneが「ベンダーの話を聞きに行くところ」ではなくて「コミュニティが交流するところ」に変わったのだと感じています。このコミュニティキーノートは1年に1回世界中からJava関連のエンジニアが集まったときにやる出し物です。これは昼のイベントですが、夜には様々な交流パーティーが開催されています。

Javaの特性はエンタープライズとオープン性にあると思います。Javaの標準化プロセスと成熟したオープンソースというのは特定ベンダーへのロックインを回避するという目的では大きな意味を持ちます。そのことから、今でもエンタープライズ業界ではJavaは非常に有効な技術です。JavaOneに来ると政府や金融をはじめとした多くのエンタープライズ業界なエンジニアがTシャツとジーパンで参加しています。

僕はサーバーサイドの講演を中心に聞いて回りましたが、世界中のエンタープライズ業界で何が起きているのかが良く分かりました。

  • AgileやCloudは当たり前で議論すらない(全員が導入しているわけではなくて「導入できないプロジェクトもあるよね」という状態)
  • DevOpsはCI/CDから1周回って、複雑化したパイプラインの管理がテーマ
  • Microservicesは「なぜ導入するのか?」という議論ではなく「導入のデメリットをいかに減らすか(リジリエントやテスト戦略など)」の議論。あとはマイクロサービス用プラットフォームの興隆
  • Reacitveは議論の段階ではあるものの、マイクロサービスが増加していったときのサービス間通信のオーバーヘッドを減らすために重要であると合意されつつある

Javaを取り巻くコミュニティは非常に元気です。ただ、それはOracleが主導しているわけではありません。もちろん、標準プロセスはJavaの重要なポイントですから、Oracleを無視するわけではありません。この絶妙な関係性が垣間見えることがJavaOneの面白さでしょう。

というわけで「いまのJavaOneって行く意味あるんですか?」と聞かれたら大きな声で「ある」と答えたいと思います。ベンター側の大本営発表以外に、これほどオープンで実務的な事例やノウハウを共有できる場は多くはないでしょう。

誰がJavaを再び偉大にするのか?

IBMがキーノートに「MAKE JAVA GREAT AGAIN」(Javaを再び偉大にしよう)というキャップをかぶってきたことが話題になりました。では、誰がJavaを再び偉大にするのでしょうか?

その答えは「コミュニティ」です。

Javaという技術を使い、成長させ、将来にわたって継続してほしいと願う人がたくさんいる限りJavaは無くなりません。

たくさんいる、しかもアクティブであるというのが大切です。Java技術に価値があることを証明するのはユーザー規模なのです。なので、ぜひコミュニティに参加してください。そこにたくさんの人がいて、熱くJavaを語っている姿があること、それこそがJavaを再び偉大にするために大切なのです。

で、日本にも日本Javaユーザーグループという大きなJavaコミュニティがあります。来月の12月3日(土)には1000人規模のイベントもあります。毎月のナイトセミナーでもいいです。皆さんの参加を心からお待ちしています。

JJUG CCC 2016 Fall特設サイト