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の言語仕様のとりまとめ役というべき人物です。
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も、機能拡張されています。
javacコマンドもかなり変更されています。Project Jigsawへの対応も大きな変化ですが、それ以外にも多くの変更があります。
例えば、今まで指定したバージョンのクラスファイルにコンパイルするには、-source、-target、-bootclasspathという3つのオプションを指定する必要がありました。これに変わり、--releaseというオプションだけで、指定したバージョンのクラスファイルを生成できます。
また、型推論が何重にも入れ子になっている場合、コンパイル時間が急激に増加する問題がありました。これもJava SE 9で解消されています。