torutkのブログ

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

JavaOne 2014 SF(10-02)

いよいよJavaOne Day Four(通算5日目)、最終日です。

KEY10414: JavaOne Community Keynote

09:00-11:30

本基調講演の動画(1)Community Keynote
本基調講演の動画(2)Intel Keynote

場所がMariott Marquisホテルです。きっといろいろな記事で内容が紹介されるでしょうから、ここはメモ書きです。

  • JavaFX関連の事例がたくさん紹介されました
  • メソッドハンドルの応用例:ロギングインジェクション
  • 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の処理段階にどれだけ時間を費やしたかが出力される

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と似ているパターンです。

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つのケースだけテストできなくても、何もしないよりずっとよい

本日の夜は、日本からの参加者で恒例の蟹パーティーです。


その他

本日のベッド上の動物