torutkのブログ

ソフトウェア・エンジニアのブログ

JavaOne 2017セッションの動画鑑賞中

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の新機能

  • SHA-3ハッシュ
  • PKCS12 キーストアをデフォルト
  • CPU命令を使って GHASHとRSA を高速化
  • DRBG(PRNG)に基づくSecureRandomの実装
  • OCSP Stapling for TLS(???)
  • アプリケーションレイヤーでのネゴシエーション機構を用意(TLSハンドシェーク前に実施)、主にHTTP2で使用
  • Datagram Transport Layer Security(DTLS)、UDP上でTLSを使うなどの応用

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を使うようです。

Youtube動画の字幕

Youtubeの画面右下に字幕のOn/Off操作がありました。Onすると、しゃべっている内容が字幕で表示されます。
見ていると、自動で音声認識しているようです。
英語に訛があると、英語ではなくスペイン語?ドイツ語?の字幕が出てきます。