いよいよJavaOne Day Four(通算5日目)、最終日です。
KEY10414: JavaOne Community Keynote
09:00-11:30
本基調講演の動画(1)Community Keynote
本基調講演の動画(2)Intel Keynote
場所がMariott Marquisホテルです。きっといろいろな記事で内容が紹介されるでしょうから、ここはメモ書きです。
- メソッドハンドルの応用例:ロギングインジェクション
- 1995年のCPUは貧弱!
- value class Point { final int x; final int y; ...}とすると、Point[]のメモリアロケーションレイアウトがプリミティブ型同様に連続配置され、各オブジェクトごとのヘッダーが不要
- 恒例のTシャツ投げ
- 足元に1つぽろっと落ちてきました。1つゲットしました
CON2262: Be in Control of Your JavaFX Mission
11:45-12:45
コミュニティキーノートが11:30に終わったので、15分でヒルトンホテルまで移動しての参加です。
そのせいか参加者はかなりまばらでした。
JavaFXのスレッディングについて概要説明がありました。
アプリケーションからは、通常1スレッドでアクセスする必要があります。レンダリングは別スレッドにオフロードされます。その仕組みを知るためにJavaFX Pulseの解説がありました。
- 16msタイマーで駆動(60FPS相当)
- アニメーションが使用されると新しいパルスが開始
- Timerからの16msトリガーでFXスレッドとRenderスレッドが処理(図はスライド参照)
- PulseLoggerを使うとどのPulseの処理段階にどれだけ時間を費やしたかが出力される
- コマンドラインオプション -Djavafx.pulseLogger=true
Java SE 8u20から、JavaFXのサポートがJava Flight RecorderおよびJava Mission Controlツールに加わりました。「developmentはfreeだよ」
基本的な使い方の説明で、JMC上でJVMを選択し、レコード開始操作をデモしました。
JavaFXのサポートはオプション扱いなので、次の操作でJMCにインストールします。
- Help > Install New Software .. > Other Software > JavaFX選択
PulseLoggerは、OpenJFXのソースツリーのjfx/rt/modules/base/src/main/java およびjava-jfrディレクトリ以下で、com.sun.javafx.loggingパッケージにあります。
クラスはPulseLogger, Logger, PrintLogger, JFRLogger
CON2403: Reactive UIs with the Model-View-View-Model(MVVM) Pattern: Simple with Ankor.io
13:00-14:00
オーストリアの会社でエンタープライズ系システムの開発、C++が多かったが最近はJavaに移行しつつあります。サーバーへイベントがプッシュされるとクライアントへイベントが送られるというシステムアーキテクチャで使用。
MVVMは2005年にMicrosoftのJohn Gossmanが提唱、マーチンファウラーのPresentation Modelと似ているパターンです。
- View: GUI、ユーザー入力、ViewModelとデータバインディング
- ViewModel: ViewとModelの仲立ち、Viewのためのプロパティ
- Model: ドメイン
- 関心の分離、テスト容易性(ViewModelのユニットテスト)が主なメリット
MVVMの課題
- Modelの配置はクライアントかサーバーか?
- クライアントとサーバー間の通信は?
- 多様なクライアント技術への対応は?
MVsVMパターンの提唱
- クライアントとサーバーにViewModelを配置し、ViewModel同士の同期を取ることで整合
Ankorフレームワーク
CON3248: Lambda-izing JavaFX
14:30-15:30
ラムダ式の歴史を振り返るところから開始しました。1936年のAlonzo Churchから話が入りました。
インナークラスとラムダ式の違いについての説明、主要IDEにおけるインナークラスからラムダ式への変換支援機能、などの話につづいて、インナークラスのコードをラムダ式に置き換える例題を順次説明していました。
ところで、ちっともJavaFXとは関係ないですね。
CON1712: Do-It-Yourself Usability Design for Developers
16:00-17:00
今年のJavaOne最後のセッションになりました。
ユーザビリティを5つにカテゴライズ
- Learnability
- Efficiency 作業完了のしやすさ
- Memorability 久しぶりに触っても使い方を覚えているか
- Errors
- Satisfaction
UI開発のプロセスとツール
- スケッチ作成
- 画面をラフな手書きで、いくつも書いてアイデアを練る、5分間でスケッチ
- 人間は制約を抱えるとクリエイティブになる、締め切り大事
- ペーパープロトタイプ作成
- 切り貼り紙芝居的に進めていく
- プロトタイプ作成
- パワーポイントでいいよ、次のスライドは次の状態だ
- プログラム作成
- フォントとかの評価
- Hi-Fi プロトタイプ
ユーザーエクスペリエンス
- フィールドスタディ
- Persona
- Heuristic Evaluation
- Useability test
- 1つのケースだけテストできなくても、何もしないよりずっとよい