torutkのブログ

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

JavaOne 2014 SF(10-01)

本日がJavaOne Day Three(通算4日目)となります。

朝は7時から開いている近所のベーカリーカフェ「Le Bourange」でクロワッサンとレーズンデニッシュを買ってきて食べました。クロワッサンおいしいです(バターたっぷりそう)。

CON2951: Creating Amazing Interactive Visualizations with JavaFX

8:30-9:30

本セッションのスライド

スピーカーはフランクフルト大学の先生で、ビジュアルプログラミングなどを研究しています。
インタラクティブなビジュアライゼーションをJavaFXと追加ライブラリでデモしました。

  • コンター図を表示しマウスでデータを変更すると表示が追従して変化するデモ
  • グラフ(ノードとエッジで構成)をVWorkflowsライブラリを使って表示するデモ
  • グラフが階層的に(インナーウィンドウ的に)描かれてその一部を任意に移動、拡大縮小するデモ
  • バネの動きを物理シミュレーションするデモ
  • Force Fieldの物理シミュレーションデモ

などです。

Q&Aで、JavaFXだけで実現しない理由を聞かれ、数千ノード(数万だったかも)を扱うのが困難だったからと回答していました。

CON1994: NASA Mission Software Development on the Eights: Java 8, JavaFX 8, and NetBeans 8

10:00-11:00

本セッションのスライド

NASA, 空軍、JAXAなどの仕事を請け負う会社ai solution社の事例紹介です。
昨年のJavaOne 2013 SFの基調講演で紹介されたものもあります。

NetBeans Platform上にFlight DynamicsやSatellite Systemのエンジニアリング・アプリケーションを作っています。2Dのチャートや3D表示のニーズに応じるため、アプリケーションのうち可視化部部分をJavaFXで作成、JFXPanelを使ってNetBeans Platformに貼り付けています。

物理計算ではMATLABを使いたいというニーズが高いのですが、MATLABJavaで書かれているよ、とのこことです。そのあと聞き取れず、アプリケーションにMATLABを組み込んだかどうかは不明です。

また、JavaFXだけで書いたアプリケーションを最後に紹介していました。

CON4265: Plugging into the Java Compiler

11:30-12:30

本セッションのスライド

スピーカー2名はGoogleの人。AutoValue、Daggerというツールの開発者です。
両ツールはJavaアノテーションプロセッサを作って実現しています。

AutoValueツールの解説では、ValueType(値を表現するイミュータブルなクラス)を作成する例を紹介していました。

Daggerは、JSR 330に基づくDIフレームワークです。
GuiceやSpringとの最大の違いは、アノテーションプロセッサによるコンパイル時のエラー検出です。

アノテーションプロセッサで可能なことは、ソースコードの生成、他のファイルの生成、性能解析などです。できないことは、既存クラスの変更やフィールド・メソッドの追加などです。

CON3700: Reactie Modeling of Automotive User Interfaces with JavaFFX

13:00-14:00

本セッションのスライド

Volkswagen社では、自動車に搭載するユーザー操作部位を持つ機器(カーナビだけでなく総合情報を扱う)のソフトウェア開発では、画面のプロトタイプを行い仕様を作りこんでいます。以前はプロトタイプで使うプログラミング言語Flashを標準とし、状態遷移モデルで設計していました。
ていましたが、Flashから置き換え先の技術としてJavaFXを選択しました。さらにUIフレームワークTappasを開発し、OSGiベースのモジュール化、ハードウェアキーやタッチ・間接タッチなど自動車機器特有のUI、スクリーン構成などを持たせています。
設計手法は状態遷移モデルからリアクティブモデルに替えて、データ駆動ベースの設計にすることで分かりやすく簡単、ロバストな設計ができています。なお、コントロールの振る舞いは別途記述のようです。

自動車搭載機器(ターゲット)のスペックは、MX6ボード、LinuxJava 8 SE Embedded、Compact Profile 2とのことです。

CON3064: Building Custom JavaFX Controls

15:00-16:00

本セッションのデモコード

Java 8u20では、JavaFXのUIコントロールの大量のバグを修正し、CSS APIを改善しています。
8u40は2015年前半の予定で、Spinner、FormattedTextField、DialogのコントロールおよびAccessibility APIが追加される予定です。

本セッションでは、ボタンを拡張したカスタムコントロールの作成方法を紹介していました。
JavaFXコントロールは、Swingと違いCSSでの制御もできるので、カスタムコントロールを作成するときはCSSの扱いをしてあげる必要があります。

CSS Styleable Propertiesは8u40に向けて大きく変わるので注意してねとコメントがありました。

CON2929: Enhanced Metadata in JavaSE 8

16:30-17:30

本セッションのスライド

JDK 8で開発している人? と質問があり挙手はまばら。

Java SE 8でメタデータアノテーション、リフレクション)の改善があり、その内容を順次紹介していきました。

  • 同一メソッドに同一アノテーションを複数指定可能になりました。Java 7まではそれができないので工夫が必要でした。
  • アノテーションが導入され、List<@NonNull String>のように指定可能です。
  • Checker Frameworkでは、単位アノテーションとして@m、@km、@mm、@s、@minなど。
  • パラメータ名を実行時に取得できます。
Method m = ...;
Parameter[] ps = m.getParameters();
for (Parameter p : ps) { ... p.getName() ... }

このあとアノテーションとリフレクションAPIが次から次へと繰り出され、脱落・・・。

セッションの間

朝一のセッション後、展示会場にて

9:30に最初のセッションが終わり、展示会場に行くと恒例のジュース、コーヒー、パン、果物が並んでいました。毎日10時ごろに用意されています。

それをつまんで近くのHackergartenコーナーを見ると、午前の担当者にRichard Warburton氏の名前が書かれていました。書籍「Java 8 Lambdas」の著者でJavaOneのスピーカです。
Java読書会BOFではちょうど「Java 8 Lambdas」を読んでいたところでした。
すると、著者と思われる人がHackergartenコーナーに来て座りました。まだ開始時間ではないので時間待ちしているようです。そこで、Java読書会BOFの名刺を出して片言英語で「あ〜ゆ〜りちゃ〜どうぉ〜ば〜とん?」と話しかけてみました(あとから、Mr.とかDr.とか付け忘れてたのに気付く)。読書会をどのように実施しているのか、今までどんな本を読んできたのか、などを話ました。1998年から毎月1回継続的に実施しているよ、と言ったら、ロンドンでも読書会をやっているけど主催者が子供が生まれてから時間がとれず活動ができなくなっているので、ぜひノウハウやTipsを共有したいと言われました(ロンドンに来て話してと言われたような気がしましたが、気のせい?)。とりあえずメールでやり取りしましょうと話をして終わりました。

夜のイベント

サンフランシスコのトレジャーアイランドで野外ロックコンサートと飲み食い遊べるイベントが行われます。参加者にはチケットが配られています。昨年はホテルが遠いのでこのイベントには参加しませんでしたので今年の楽しみの1つでした。
ホテルからバスで会場に行きますが、1時間ほど並びました。会場に着くと、飲み物(ビール、ワインなど)と食べ物を取って、ゲームコーナー(もぐらたたき、ビンすくい、ボールをバケツに入れるなど、日本の祭りの縁日みたいな)などで遊んで、といったことをしました。ロックコンサートは今年は日本でも有名なエアロスミスが来ていました。


その他