先日のJavaOneに続いて、第1回となるOracle CodeOne 2018が米国サンフランシスコで開催された。“The Future of Java Is Today”と銘打った月曜日夜の基調講演では、新たな6ヶ月周期のJava/JDKリリースケイデンスが順調に進んでいること、Oracle(とその他多数の組織)が今後もJavaのサポートを継続すること、生文字列リテラル、ファイバと継続(continuation)、FFIやデータインターフェースなど、生産性向上を目的とした言語機能を模索する新たなJDKプロジェクトがいくつもあること、などが発表された。
Java Platform Groupソフトウェア開発担当副社長のGeorges Saab氏による歓迎の挨拶の後、 最初のプレゼンタは、GitHubのフィールドサービスVPのMatthew McCullough氏だった。氏は、Javaプラットフォームのオープンソースリファレンス実装であるOpenJDKの重要性を強調した上で、公式のOpenJDK上流MercurialリポジトリのプロトタイプのGitHubベースのミラーである“Project Skara”について論じた。
Project Skaraの目標は、JDKソースコードのための代替ソースコードの管理とコードレビューオプションについて検討することだ。さらにMcCullough氏は、“成果物としてのソフトウェア”の大部分が世界規模のコラボレーションによって開発されたものである、と論じて、オープンソースプロジェクトへの参加を聴衆に呼びかけた上で、目標達成のためのいくつかの新たなGitHub機能に関する簡単なデモンストレーションを行った。
注目すべきは、Project Skaraの作業はいまだ初期段階であり、現在は独立しているが、コミュニティ主導のAdoptOpenJDKプロジェクトとゆるやかに連携している、という点である。同プロジェクトは、上流のOpenJDKリポジトリもミラーリングしており、最新および将来の全JDKバージョンのビルドを提供するだけでなく、4年間のビルドとJavaのLTS(Long Term Support)バージョン(先日リリースされたJava 11を含む)のベストエフォート型のコミュニティサポートの提供も目指している。AdoptOpenJDKの商業的なバックアップには、IBM、Azul Systems、the LJC、Microsoft、Ocado Technology、Packetなどが名を連ねている。
Saab氏が再登壇し、“Javaの美徳の継続”について論じた。Javaは今後も自由でオープンであり続けるとともに、コミュニティはプラットフォーム完全性の提供と、開発者の生産性と互換性への投資を今後も継続することを約束する。品質と安全性への投資も継続し、オープンかつ透過的な開発を継続する。
Oracleによるコントリビューションに話題を移して、Saab氏は、先日リリースされた、これまで商用Javaプラットフォームのものであった機能について紹介した。その中には、Java 10のApplication Class Data Sharing (ACDS)、Java 11のProject ZGC(テラバイト単位のヒープ用の低レイテンシGC)、フライトレコーダ、Mission Control(診断およびモニタリング用)などが含まれている。
新たな6ヶ月単位のリリーススケジュールも成功しており、Javaプラットフォームを段階的に改善することで、“メジャーリリースを混乱させることなく”、開発者への早期の新機能提供を可能にしている(予定されている機能がリリース期限に間に合わなカッタ場合は、単に次のリリースに先送りされる)。コミュニティに多くの混乱をもたらしている、新しいLTSリリースとOracleのサポートモデルにも簡単に触れた(InfoQでは先日、この話題について、“Javaは今もフリーである”というJavaチャンピオンの声明を伝えている)。
基調講演のこのセクションは、OpenJDKコミュニティにおける多くのコントリビュータへの謝辞と、Java Magazine、Java User Groups、Java Champions、jDuchess Program、Oracle Academy Student Outreach、Java Community Process (JCP)など、Oracleの支援するJavaコミュニティサポートプログラムに関する言及で締め括られた。
次に登壇したOracleのJava Platform GroupでチーフアーキテクトのMark Reinhold氏による講演は、内部コンポーネントの大幅な書き直しを必要とした新たなJavaモジュールシステム(JEP 261)への移行が、どれほどの困難を伴ったものであったかを、聴衆に改めて思い起こさせることから始まった。しかしながら、この機能がJava 9でリリースされて以降の普及は良好で、そのメリットが具現化し始めている。Reinhold氏はすべてのJava開発者に新機能を確認するように勧めるとともに、その手始めとなる書籍をいくつか紹介した。
新たなモジュールアーキテクトによってプラットフォームのリリースケイデンスが改善され、Saab氏の最初のコメントが反映された。Reinhold氏はJava 10とJava 11が予定通りの提供開始に成功したことと同時に、LTSリリースが受けるであろう影響について論じた。(Oracleの商用サポートに関連するものが中心だが、その他のベンダやAdoptOpenJDKも別ビルドやコミュニティ駆動、および商用サポートモデルの提供を計画している)
基調講演のこのセクションでの中核的メッセージは、“Javaはいまだフリー”であり、Oracle JDKはOpen JDKビルドに極めて近い、ということだ(ただし、LTSリリースの最初の6ヶ月間は、上流のOpenJDKリポジトリに対してどのようなセキュリティないしバグフィックスのパッチがリリースされたかによって、ビルドが大きく分離する可能性もある)。Reinhold氏はここで、非LTSリリースは実験版であるという誤った考えを含む、“新たなリリースに関するトップ5の誤解”を紹介した。マイグレーションの頻繁でないシステムをメンテナンスしているのであれば、非LTSリリースは無視しても差し支えないと思われる。
氏はさらに、オープンソースプロジェクトを最新のJavaリリースでテストするコミュニティの取り組みについても言及し、Twitterのハッシュタグ#WorksFineOnJDK9と#WorksLikeHeavenOnJDK11を紹介した。Java 9以降を使用するすべての開発者は、ツールと依存関係をすべて最新バージョンにアップグレードすることが強く推奨される。
次にReinhold氏は、将来の展望へと話題を転じた。Java 12 / JDK 12には現在、新しいswitch式のプレビュー(コマンドラインのフラグで有効にする)、生文字列リテラル、“2つではなく、ひとつのAArch64ポート”、デフォルトCDSアーカイブという、4つのJEPが(現時点では)ある。将来的な機能として強調されているのは、“常に進化するプログラミングパラダイム、アプリケーション領域、デプロイメント形式、ハードウェアに直面する”開発者の生産性とプログラムパフォーマンスである。
基調講演の最後のセクションでは、OpenJDKの4つの新しいプロジェクトが取り上げられた。
- Amber: ローカル変数の型推論、エスケープシーケンスを必要としない生文字列リテラルを含む、“言語作法の規模的な適正化”。
- Loom: “継続(continuation)とファイバ”。旧式の“無意味な”、あるいは無効になったスレッド関連APIメソッドの廃止、“Java仮想マシンの管理する、これまでと同じシンプルな抽象化を使用しながら、より優れたパフォーマンスと少ないフットプリントを実現可能な、軽量で効率のよいスレッド”としてのファイバの追加を含む。
- Panama: JVMからのネイティブ関数呼び出し(C、C++)、JVM外あるいはJVMヒープ内のネイティブデータアクセスを含む、Java以外の外部関数とデータインターフェース。
- Valhalla: 値タイプと特殊化ジェネリクス
Reinhold氏は最新の(未リリース)Java 12ビルドを使って、一連の機能をライブコーディングでデモしてみせた。使用された例は、上記にリンクされたそれぞれのプロジェクトのWebサイトに掲載されている。
基調講演に対するコミュニティの反応は概ね良好で、Paul Bakker氏は、 “#CodeOneの基調講演は素晴らしかった!#javaエコシステムの未来は明るい、と思わせるものがあった”、Chris Hegerty氏は、“#CodeOneの#Java基調講演は素晴らしい、特に[Mark Reinhold氏による]技術セクションが”、とコメントしている。
基調講演“The Future of Java is Today”をすべて記録したビデオが、Oracle Developers YouTubeチャネルで公開されている。
この記事を評価
- 編集者評
- 編集長アクション