4つのプロジェクトの詳細解説(2)
(3)Project Panama
CやC++のネイティブコード(コンパイル後のライブラリ)などをJavaから容易に呼び出せるようにする仕様の追加です。これまで同等の処理をJNI(Java Native Interface)と呼ばれるインタフェース仕様により実現していましたが、使い勝手やパフォーマンス面などに課題がありました。
デモではCで書かれたヘッダファイルから定義を抽出してJavaのInterfaceを自動生成し、それを経由してCのネイティブコードを実行する実装の紹介がありました(JEP 191)。
(4)Project Valhalla
型定義に関するパフォーマンス向上や型の拡張などを行うプロジェクトです。Javaの型定義はプリミティブ型と参照型に分かれますが、後者は常に値の参照を挟むため、パフォーマンス面で弱く、性能の求められる使用局面で課題となるケースがあります。そこで、参照を挟まない独自の型定義を実現するのがここで紹介された仕様です。
型定義は、従来通り実装したクラスに「value」というキーワードを付与するだけで実現できます(JEP 169)。行われたデモでは、キーワード設定有無のみの違いを持つ実装がそれぞれ実行され、平均処理速度で10倍以上の違いが計測されました。
Java Keynote総評
Java SE 9及びJava EE 8のリリースやリリースモデルの変更、そしてEE4Jの発足(Java EEのEclipse Foundationへの移管プロジェクト)など激動であった昨年のJavaOne 2017と比較し、リリースモデルのおさらいやプロジェクトの進捗状況を説明した今年のキーノートは、地に足の着いた内容であったと表現できるでしょう。Javaユーザーとしては、リリースモデル変更への誤解を解くメッセージを盛り込んだことで、現状理解が進むことを期待できる内容でもありました。
また、最も時間を割いて説明された進行中の各プロジェクト詳細も、素直に使いやすく便利になると感じる仕様であり、今後もJavaを使い続けるうえで、進化し続ける安心感を得られるものでした。プログラマーとしては最適な実装をしていくために、各プロジェクトのアップデート状況を引き続きキャッチアップしていく必要があるでしょう。それはつまり、Javaという言語とともに、我々と我々のアプリケーションが進化していくという未来につながる。そんな実感を得られるキーノートでした。
次回予告
さて、次回のレポートでは、本キーノートのモデレーターを務めたGeorges氏への特別インタビューの内容をお届けします。この秋にリリースされた初のLTSであるJava 11への手ごたえや、Java 8を使い続けることの是非といったJavaユーザーとしての疑問をぶつけた他、AdoptOpenJDKやJakarta EEなどOracle外部のコミュニティについての率直な質問についても回答をいただいています。ぜひ次回もあわせてお読みください。