Modular Development with JDK 9
ライブデモ中心ではなく、説明中心だったのでちょっと追うのが大変でした。
モジュール機能の全体を把握するセッションです。
モジュールの意義を再利用の観点で説明しています。ソースコードをコピぺするのではなく、コードを再利用するのはリリース単位(JARファイル)なので、モジュールによってJARファイルの能力が向上すると。
モジュール対応のアプリケーションを実行すると、実行開始時にモジュール不足が検出、循環参照が検出、同じパッケージが複数のモジュールに含まれる(重複)を検出するなど。
同じパッケージを複数のモジュールに入れるのを禁止しているのは何故かなと思ましたが、バックドアとなり得るからと。
クラスパスのように大量のJARファイルパスを列挙しなくて済むのはいいですね。
Making the JDK More Secure
時代とともにセキュリティの状況は変わっていくので、例えば新しいバージョンのJavaで、デフォルトが認証局のハッシュがSHA-2になり、TLSが1.2になった後、以前のバージョンのJava(例えばJava SE 6)にバックポートする(デフォルトを同様に変更する)ということもやっているとのことです。
Java SE 9の新機能
The Good Cop/Bad Cop Guide to Java 9
セッションの主題とは異なるが、JShellのデモが興味深い。
メソッド、クラスの定義をする、定義済みの一覧を見る、保存する、読みだす、定義を編集する、といった操作があります。
Designing for Modularity with Java 9
オライリーの書籍「Java 9 Modularity」(オライリー刊)の著者によるセッションです。
public以外のメンバーにリフレクションでアクセスすることを"Deep reflection"と呼んでいます。リフレクションを行う対象のモジュールはopensでパッケージを解放しておきます。
命名に言及があり、アプリケーションモジュールは短く記憶しやすい名前として、アプリケーション名.コンポーネント名(例:easytext.gui)を付け、ライブラリモジュールはユニークになるようDNSの逆順で付け(例:com.mycompany.ourlib)ます。
小さいモジュールかオールインワンモジュールか?
小さいモジュールは組み立て可能、再利用可能な利点あり、オールインワンモジュールは利用が容易の利点あります。小さなモジュールは集約するモジュールを用意してそれを利用します。
非モジュールのJARファイルは循環参照(相互参照)が許されますが、モジュールでは許されません。
相互参照を解消する例としてインタフェースの導入を紹介しています。
ModuleLayerという概念があり、実行時に作成可能で、階層構造を設けることができます。デフォルトのModuleLayerはboot layerというようです。
動的にモジュールを読み込むには、このModuleLayerを使うようです。