2017年10月1日から5日までの5日間にわたって、米サンフランシスコのMoscone CenterにおいてJava開発者のための年次イベント「JavaOne Conference 2017 」が開催されています。これに先立つ9月には、Java 9およびJava EE 9が正式にリリースされたほか、JDKのリリースサイクルの変更やJava EEのEclipse Foundationへの寄贈など、大きな話題が相次ぎました。これらの発表を受けて、Javaプラットフォームが今後どのように変化していくのかが注目されています。
本記事では、その先行きを占うキーノートセッションの様子をレポートします。
女性コミュニティが活発に
キーノートの進行役は、OracleでJava PlatformのVice President of Software DevelopmentであるGeorges Saab氏が務めました。
Oracle, Java Platform, Vice President of Software Development, Georges Saab氏
まず冒頭で、Javaがどれだけ多くの人々に支えられているかが語られたうえで、とくに近年は女性の参加が増えており女性コミュニティが活発になっていることや、それを支援するDuchess の活動などが紹介されました。DuchessのメンバーでもあるグァテマラのJava開発者Mercedes Wyss氏(写真左)は、女性がどのようにJavaコミュニティに貢献しているかを話しました。
女性コミュニティがJavaに大きく貢献している
データが未来を創る
続いて、IntelのVide PresidentであるMichael Greene氏が壇上に呼ばれました。Michael氏は、人工知能技術の向上や機械学習の普及、自動運転技術の発展などを例に挙げながら、"これからはデータが未来を創る"ということを強調したうえで、IntelのプロセッサとJavaの組み合わせによってデータ処理のクオリティが格段に向上すると語りました。
また、同社が開発している不揮発性メモリにデータを保持するためのJavaライブラリ「Persistent Collections for Java 」をオープンソースで公開していることも紹介しました。同社によるワークベンチもGitHub上で公開 されています。
Intel, Software & Service Group, Vide President, Michael Greene氏
データ処理は、より高速に、よりスケーラブルに、よりスマートになる
Michael氏に呼ばれて登場したJohn Rose氏は、OracleでChief JVM Architectであり、OpneJDKのプロジェクトであるProject Panamaをリードする人物です。Project Panama はネイティブコードやネイティブデータにおけるJVM上のデータの枠組みを再構成するプロジェクトです。このキーノートでは、Intel AVX512上でProject Panamaを利用したベクトル演算のデモを行い、そのパフォーマンスの高さを披露しました。
それに加えて、このデモで使われたProject PanamaのVector APIについて解説する特設サイト「Vector API Developer Program for Java* Software 」をIntelが公開したことが発表されました。
Oracle, Chief JVM Architect, John Rose氏
Java EEをEclipse Founcationに移管
続いて、OracleのVice President of Product DevelopmentであるMark Cavage氏が登壇しました。
Oracle, Java and Container Native Platform, Vice President of Product Development, Mark Cavage氏
Mark氏は現在のJavaの強みとして「オープン」 、「 進化(Evolving) 」 、「 軽快(Nimble) 」 「 スケーラブル」の4点を挙げた上で、先日リリースされたJava EE 8のオープン性も強調し、その流れの中でOracle Java EEをEclipse Foundationに移管したことを改めて説明しました。Oracleは互換性を試験するTCK(Technology Compatibility Kit )も含めて寄贈することを発表しており、今後は同Foundationの主導でJava EEの開発が行われることになります。
壇上には、Eclipse Foundationで中心的な役割を果たす3社から代表としてMark Little氏、Ian Robinson氏、David Blevins氏が呼ばれ、「 Eclipse Foundationにとってもユーザにとっても良い選択だ」などのメッセージを送りました。
左から、Redhat VP - Engineer, Mark Little氏 / IBM Distinguished Engineer, Ian Robinson氏 / Tomitribe, Founder&CEO, David Blevins氏
今後のJavaは6ヵ月ごとにリリース
続いてJava SEについても、現在商用版として提供されているOracleJDKを、有償の拡張機能も含めてオープンソース化し、OpenJDKとOracleJDKを完全に同じものとすることも改めて発表されました。
さらに、今後はJavaのリリースサイクルを見直し、これまでのような大型のメジャーバージョンアップの方式をやめて、6か月ごとに定期的にアップデートしていく方針にすることも紹介されました。ただし、どのような運用でリリースを管理していくかなどの具体的な説明はキーノートではありませんでした。
クラウドベースのCIサービス「Wercker」
Mark Cavage氏は、4月にOracleが買収したクラウドサービス「Wercker 」についても紹介しました。Werckerはアプリケーションのビルドやテスト、デプロイ、管理などを継続的に行うCI(Continuous Integration)環境を提供するクラウドサービスです。
分散システムに対応しており、システム内で発生している問題などをリアルタイムにモニタリングしてビジュアライズする機能などを備えています。キーノートでは、分散システム内で発生しているメモリリークを発見し、スタックトレースから原因となっているコードを特定するというデモが披露されました。
Werckerでメモリリークを検出するデモ
オープンソースのサーバレスプラットフォーム「Fn Project」
続いて登場したOracleのVice President of Product Development、Chad Arimura氏が発表したのは、Java対応のサーバレスプラットフォームを開発するオープンソースプロジェクト「Fn Project 」です。Javaでシンプルにサーバレスアーキテクチャを実装することができるプラットフォームで、この日はじめて公開され、キーノートの途中でGitHubリポジトリ がオープンになりました。
Oracle, Vice President of Product Development, Chad Arimura氏
Fnプロジェクトは以下の3つの要素から構成されるそうです。
Fn Server - Function as a Serviceを実現する
Java FDK - JavaでFunctionを実装するためのSDK
Fn Flow - Functionのオーケストレーションを行う
キーノートでは、Fn Projectを用いて5つのFunctionからなるサービスを実装し、それをFn Serverで実行、Fn Flowで詳細な状態を確認するデモが紹介されました。
Fn FlowでFunctionの状態を監視
ついにリリースされたProject Jigsaw
キーノート後半で、満を辞して登場したのはJava Platform GroupのChief Architectであり、Java 9のスペックリードでもあるMark Reinhold氏です。
Oracle, Java Platform Group, Chief Architect, Mark Reinhold氏
Mark氏は、Java 9のリリースにおいて最も重要となったモジュラ化を実現する技術、そして、開催直前にリリースされたばかりの「Project Jigsaw」について、デモも交えて詳しく解説しました。Project Jigsawは、単に新しくモジュールの仕組みが導入されたというだけでなく、既存のJava APIのすべてがこれまでのモジュール方式に切り替えられた極めて重大で、大きな修正を伴うアップデートです。
Java SE自体も細かなモジュールの集合体として再定義されたため、今後のJavaアプリケーション開発はモジュール単位でのクラス構成が前提になるということです。たとえば、Java SE APIは下図のような形に分割されました。
Java SE APIのモジュール構成
矢印が依存関係を示しており、java.baseがベースモジュールになります。クラスの依存関係が明確になり、より詳細なアクセス権管理ができるようになったことに加えて、自分のアプリケーションに不要なモジュールはロードする必要がなくなったため、アプリケーションのサイズを小さくできるというメリットもあります。
APIドキュメントも更新されてモジュール単位で閲覧できるようになったほか、モジュールの依存関係を表すグラフが自動で生成できるようになりました。
一部の非互換性が残されているものの、すでに主要なフレームワークやライブラリの多くがモジュール機能を含むJava 9に対応しているとのことです。
長い道のりでした
将来のJavaに向けた4つのプロジェクト
最後に、OracleのJava Language Architect、Brian Goetz氏が登場し、将来のJavaの新機能として検討されている4つのプロジェクトに言及しました。
Oralce, Java Platform Group, Java Language Architect, Brian Goetz氏
「Project Panama 」は、先述の通りネイティブコードやネイティブデータにおけるJVM上のデータの枠組みを再構成するプロジェクトになります。「 Project Valhalla 」は、Valueオブジェクトの導入やプリミティブ型のGenericsの導入などを目指すプロジェクトです。
「Project Amber 」は、ローカル変数の型推論やパターンマッチの導入などを検討しているプロジェクトで、分かりやすく表現するとJavaで「var」を使えるようにするというものです。その他に、Enum型の拡張や、左辺へのLambdaの適用などが検討されています。Amberは早ければ次期アップデートとなる2018年3月のリリースに含まれる予定とのことです。
「Project Loom 」は最近提唱されたばかりのプロジェクトで、Javaに軽量スレッドであるFiberを導入しようというものになります。
このように、Java 9のリリース直後ではありますが、Javaはまだ進化を続けようとしています。リリースサイクルが変更されたということもあり、今後の発展が楽しみです。その一方で、Oracleおよびベンダー各社にはユーザのJava 9へ移行をどこまで促進できるかという大きな課題も残されています。
キーノートでは、上記の他にSpotifyによるマイクロサービスアーキテクチャ実装の事例や、KubernetesとJavaの組み合わせによる分散システム基盤の構築例などが紹介されました。Kubernetesについてはコンテナやマイクロサービスと関連してOracleが注力していることが発表されたばかりであり、Java方面でも連携を強めていくことが強調された形と言えるでしょう。
JavaOne 2017
https://www.oracle.com/javaone/