JavaOneレポートの2回目は筆者が聴講したセッションの中から、興味深かったセッションをレポートします。

 筆者はJava SEを中心にセッションを聴講しましたが、今年はやはりJava SE 9関連のセッションが充実していました。Java SE 9の新機能を紹介するセッションはもちろん、マイグレーションや運用に関するセッションなども人気があったようです。

 残念ながらJava SE 9のリリースは2017年7月に延期されてしまいましたが、Java SE 9の情報は豊富になってきています。本レポートでも、Java SE 9に関するセッションを中心にレポートします。

JDK 9 Language, Tooling, and Library Features

 Java SE 9の機能を全般に渡って解説するセッションです。

 スピーカーはOracleのJoseph Darcy氏(写真1)。彼はProject Coinのスペックリードであり、Java SEの言語仕様のとりまとめ役というべき人物です。

写真1●Joseph Darcy氏
写真1●Joseph Darcy氏
[画像のクリックで拡大表示]

 Java SE 9で最も大きな変更はProject Jigsawによるモジュール導入です。しかし、それ以外にもJava SE 9では多くの機能が導入されます。

ツール

 JDK 9での新しいツールといえば、キーノートでも紹介された「jshell」です。

 前回紹介したように、jshellはJavaの「Read-Eval-Print Loop」(REPL)になります。jshellを使用すれば、コードの断片でも実行することができます。例えば、学習用途などに適しています。

 Java SE 9で大きく変わったツールとしてjavadocコマンドがあります。

 Java SE 9で、やっとjavadocコマンドがHTML 5に対応します。

 ただし、HTML 5形式で出力しても3つのフレームで表示されるのは、変更がありません。その代わりといってはなんですが、Javadocの各ページに検索窓が追加されました。図1に新しいJavadocの検索窓を示しました(赤字部分)。検索は全てクライアントサイドで行っているので、サーバーを立てる必要はありません。

 その他に、javadocコマンドで使用できるDoclet APIも、機能拡張されています。

図1●Javadocの検索
図1●Javadocの検索
[画像のクリックで拡大表示]

 javacコマンドもかなり変更されています。Project Jigsawへの対応も大きな変化ですが、それ以外にも多くの変更があります。

 例えば、今まで指定したバージョンのクラスファイルにコンパイルするには、-source、-target、-bootclasspathという3つのオプションを指定する必要がありました。これに変わり、--releaseというオプションだけで、指定したバージョンのクラスファイルを生成できます。

 また、型推論が何重にも入れ子になっている場合、コンパイル時間が急激に増加する問題がありました。これもJava SE 9で解消されています。