#JavaDayTokyo 2014に参加してきました!

Java Day Tokyo 2014に参加してきました.
Java Day Tokyoは始めての参加だったのですが,とても楽しかったです.

前日

前日入りしてました.
宿泊は会場の品川プリンスホテルイーストタワーの(安い)方でした.

そこら辺のビジネスホテルよりも狭い印象がありました.
なかなかこの壁との距離はないですね.

夜は太一さんらと御夕食に.


美味しかったです.特に茶碗蒸しはいくらがプチプチで斬新の食感で感動しました.
当然お魚も美味しかったです.
ご馳走様でした!!

この日はかなり飲んだ気がします.日本酒の酔鯨を2合ほどは飲んだのではないでしょうか.そこまで日本酒は得意ではないのですが,飲みやすくサクサク飲めました.

当日

9時代前半に会場に向かいました.
イーストタワーからアネックスタワーまで屋外に出ずに移動できたので最高でした.
雨の時でも楽ちんです.次回も品プリで何かあればホテルも品プリにしたいです.

200名先着でDukeグッズが配られてました.画面を拭くストラップでした.

K-1 基調講演

オープニング,映画のような壮大なVTR&BGMと共に始まりました.

最初に登壇されたのは日本オラクルの伊藤敬さん.
挨拶と簡単なお話.

次に登壇されたのはOracle社Vice PresidentのNandini Ramaniさん.

  • Java8よりも前はSEとMEの関係が複雑であった(OUTDATEなCDCなどが混在)
  • Java8ではSEとMEの関係を整理
  • Java8以降はCDCは退役し,Java SE Embeddedへ
  • ME 8の言語特徴はLambdaなど一部を除いてSE 8と同じ
  • 今後はMEの開発者,SEの開発者と区別するのではなくJavaの開発者
  • 今後はよりSE,MEの融合を進める.ムーアの法則に則って組み込み機器も性能が向上しているので実現できる.
  • Java8
    • アプリケーション開発の革命 by Lambda
    • EEとの協調させる
    • IoTの増進
      • Javaをどのデバイスでもどのサイズでもどのマーケットでも
  • Java SE 8の新しい特徴
    • パラレルの過去と未来
    • コンパクトプロファイル
  • 日本語のJavaドキュメント
  • Java ME 8の新しい特徴
  • Java 8以降のJava
    • Jigsaw
    • Sumatra
      • HSA FaundationにOracleは既に参加している
  • IoT
    • インターネット+サービスは社会インフラに
    • 2020年には500億デバイスがインターネットに
    • ビッグデータにつながりDBの会社としては嬉しい
  • Java Embeddedのサイズ別住み分け
    • 1MB以下ならJava Card
    • 10MB以下ならME Embedded
    • 100MB以下ならSE Embedded
    • それ以上はSE
  • IoTを目指していくにあたってCPUレベルからEnterpriseレベルまでパートナーシップしている
  • MIPSJavaが動く!
    • 本来は明日のカルフォルニア時間で公開されるが,いい機会だし言っちゃう
    • 先行公開
    • より組み込みでのJavaの利用が広まり,IoT実現へ

SEは勿論,組み込みをかなり押してきていました.
IoTには組み込み分野が欠かせないので押してきているのでしょう.
特に「今後はMEの開発者,SEの開発者と区別するのではなくJavaの開発者と言えるプラットフォームを目指す」という事が印象的でした.

大きな発表としては日本語ドキュメントとJava on MIPSの二つの発表がありました.
日本語ドキュメントはこちらJavadocこちら
発表に会場から拍手が.
見た感じ完全に訳されているというわけでは無いようで,Javadoc以外の翻訳はあまり望めなさそうです.Javadocの方もまだまだこれからという感じがします.
MIPSの方はあまり会場では盛り上がってなかったですが,IoTを本気で狙いに来ているのでしょう.

次いでスポンサーセッション,NECより石黒さん.

  • PaPeRo petitの紹介
    • 可愛い
    • IoTの成功事例
    • アニメで出てくるパートナーロボットを現実でも
  • PaPeRo petitをさせる技術
    • ローカル(PaPeRo petit)
      • データ収集(Input),人へ話しかける(Output)
      • Java SEで動いている
      • スマホから画面を取ってセンサーをいっぱいつけたもの
      • ARM,Linuxで動いている
    • クラウド
      • 考える(Process)

あのロボットがJavaで動いているというのは驚きでした.

ついで,パナソニックの石黒さん.

  • 電子マネー決済システム
    • 地味だがビジネスを足元で支えている
    • 年々利用額や利用件数は増えている
  • 電子マネーカード読み取り機
    • パナソニックはシェア70%
    • センターとのやり取り,ユーザとのやり取りにJavaを使用
    • 将来的には3rd パーティプログラムの実行環境にもJavaを使って行きたい
    • 全コードの1/3がJava
    • セキュリティなどを考えるとJavaが最適

Java,あまり目には見えないけどかなりの分野で使われているという事を感じました.

話が戻って,Nandiniさん.

  • Javaロードマップ
    • Java9を2016年に
    • Jigsaw

次は,Oracle社Senior Vice PresidentのCameron Purdyさん.

  • Java EE
    • 未だによく聞かれる,「Java EEってなんですか?」って
    • Servlet(EE Platform)は98年に始まった
    • EEとはPlatformである
    • Googleの売上の97%はJavaで動いているAdwardsによる
  • Java EE 7
  • Java EE 8
    • IoTに向けていく
    • HTML5/ Web Tier Enhancements
    • CDI Alignment/開発容易性
      • セキュリティインタセプター
      • Extension of Timer Service; integration with CDI observer / event facility
      • JAX-RS injection alignment
      • WebSocket scopes
    • クラウド増強
      • EE Configuration
      • セキュリティ増強
      • マルチテナンシー
      • 開発と管理のためのREST APIs
    • ロードマップ
      • EDRが2015 Q1
      • Public Reviewが2015 Q3
      • Final Draftが2015 Q4
      • Final Releaseが2016年
    • 多くのJUGが参加してるよ!
      • 皆も参加してね!

予定ではJava 9が出る頃にEE 8が出るという事のようです.*1
標準仕様なため仕方がないのかもしれませんが,ちょっと進歩がゆっくりな気がします.

Oracle社のStephen Chinさん.

デモ中心なので画像主体で.

  • Lego Duke Segway
  • DukePad
  • ChessRobot
    • RasberryPi
    • Chessサーバがありそこからデータを取ってくる

Oracle社のSimon Ritter

  • コミュニティ
    • 他の言語とはエコシステムが違う
    • ラクルはオーナシップではなくリーダシップ
    • Javaを使うだけじゃなくJavaを作っていける

日本Javaユーザグループ会長鈴木

昼休憩

基調講演も終わり,RCCのOBのaibouさんとirgalyさんとお昼ご飯に「つばめグリル」へ.
前日にTwitterで美味しいという噂を聞きつけてのことです.

案内待ちをしてる際に下のようなツイートが.

振り向いてみるとゆとりさんでした.

ご好意でご一緒させてもらいました.

つばめグリルの瞬間Java技術者率は最高値を記録していた気がします.

C-1 Java SE 8時代のJava EE 7アプリケーション開発

  • Lego Mindstormのデモ
    • WebSocketとかEE7の機能を使ってるよ
  • Java EE 7では並列処理が増強されている
  • Java SE 8 & EE 7で並列処理
    • Concurrency Util for Java EE
      • Java SE 8ではCallableをLambdaで書ける
    • 10個の並列処理
      • forで10回登録する処理を回すがStreamで書く
    • Future & Callable禁止(skrbさんっぽく)
      • Future#getはブロッキング処理のため
      • CompletableFutureを使おう!
        • StreamAPIの様なパイプライン処理ができる
        • EEでこそCompletableFutureが活きる
          • 複雑な並列処理はEEにあり

CompletableFutureは知りませんでした.
Streamの様にパイプライン的に処理が書けるので気持ちよさそうですね.
これでもってより簡単に並列処理が書けるでしょう.

C-2 Java SE 8におけるHotSpotの進化

  • Permanent領域
    • クラス情報などが格納
    • デメリット
      • サイジング困難
        • ダイナミックサイジング不可
      • デフォルトサイズが小さい
      • パフォーマンスへの悪影響
        • GCでチェックされる
    • メリット
      • 「いいとこなんてありましたっけ?」
    • Metaspace(Native Memory)へ
  • Metaspace
    • クラス情報などが格納
      • 文字列のinternなどのオブジェクトはヒープへ
    • ダイナミックサイジング可能
      • Metaspaceがリンクしていく
    • メリット
      • サイズが理論上制限なし
      • GCシステムが管理しない
      • アンロードがクラスローダ単位
    • VMが仮想空間を確保し,クラスローダがそれを一部を借り受け利用
    • High Water Mark(HWM)
      • MetaspaceはFullGCの時に整理される
        • FullGCが起きないと肥大化していく
          • そこでHWMを超えるとFullGCを呼び起こす
      • HWMが低い
        • FullGCが多発
      • HWMが高い
        • メモリ使用量増大
        • いずれも観測しチューニングできる
    • Compressed Class Pointer Space
      • Compressed Oops(圧縮参照)に由来
        • 64bitマシンでもオブジェクトのアドレスを32bitにして格納
          • ヒープ使用量を節約
          • ベースアドレスからのオフセットやアドレスのLSB省略
      • InstanceKlassやArrayKlassなどをMetaspaceとは別の領域(Compressed Class Pointer Space)に置いて_klassの参照を32bitに(あってるか不安)
    • オプション
  • Tiered Compilation
    • JDK7からの機能(6u25までバックポートされている)
    • JDK8からはデフォルトで有効
    • Hotspot JIT コンパイラ
    • Level 0
    • Level 1
      • C1フル最適化(プロファイリングなし)
    • Level 2
      • C1呼び出し,ループのプロファイリング
    • Level 3
      • C1フルプロファイリング
    • Level 4
      • C2
    • 理想
      • Level 0 -> 3 -> 4
    • -XX:+PrintComplication
      • コンパイル情報を表示
      • 従来の情報に加えTiered Compilationの情報も表示されるように
    • -XX:+PrintTieredEvents
      • Tiered Compilationで起きたイベントなどより詳細な情報を表示

JVM周りは全然知らないので大変興味深いセッションでした.
JVMは知的好奇心が駆り立てられる技術の宝石箱のような分野ですね.

A-3 Exploring JavaFX 8

デモ中心のセッションでした.
JavaFX 8で新しく導入されたことの紹介をした後はデモを行なっていました.
3DやWebView(HTML5, JavaScript),DatePicker等々が紹介されていました.

A-4 Lambda式とストリームAPI、並列処理の詳細

詳細という割には簡単な使い方の紹介に終始していました.
実装レベルとかそのあたりを期待していたのでちょっと期待はずれでした.
もうちょっとコアな部分にも触れて欲しかったなぁ・・・

A-5 Java Day Tech Night

  • FXで物理演算をサポートしないの?
  • 若い人に向けてのJavaの教育を本社はどうしているのか?
  • OpenJDKで個人(individual)のコミッタはどれぐらいの割合が居るのか?
  • Lambdaでindy使っているけどどうなっているの?性能いいの?
  • ラムダ式内での例外の扱いのベストノウハウは?
  • ドロップしてしまった例外透過性やMapStreamは帰ってくるの?
  • デフォルトメソッドで実装の多重継承ができるようになったけど,インターフェースにフィールドを持てるようになれば完璧じゃない?
  • EE 7の実装が全然出てきていないし,若い人にEEを教えていいか悩む,EEに乗っかっていいの?
  • GlassFishの次のバージョン,いつリリースされるの?リリースドリブンなに?

*1:例のごとくズレるでしょうけど・・・