#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
- Java SE 8の新しい特徴
- パラレルの過去と未来
- Project Sumatra(GPGPU)
- コンパクトプロファイル
- パラレルの過去と未来
- 日本語のJavaドキュメント
- Java ME 8の新しい特徴
- Java 8以降のJava
- Jigsaw
- Sumatra
- HSA FaundationにOracleは既に参加している
- IoT
- Java Embeddedのサイズ別住み分け
- 1MB以下ならJava Card
- 10MB以下ならME Embedded
- 100MB以下ならSE Embedded
- それ以上はSE
- IoTを目指していくにあたってCPUレベルからEnterpriseレベルまでパートナーシップしている
- MIPSでJavaが動く!
SEは勿論,組み込みをかなり押してきていました.
IoTには組み込み分野が欠かせないので押してきているのでしょう.
特に「今後はMEの開発者,SEの開発者と区別するのではなくJavaの開発者と言えるプラットフォームを目指す」という事が印象的でした.
大きな発表としては日本語ドキュメントとJava on MIPSの二つの発表がありました.
日本語ドキュメントはこちら.Javadocはこちら.
発表に会場から拍手が.
見た感じ完全に訳されているというわけでは無いようで,Javadoc以外の翻訳はあまり望めなさそうです.Javadocの方もまだまだこれからという感じがします.
MIPSの方はあまり会場では盛り上がってなかったですが,IoTを本気で狙いに来ているのでしょう.
次いでスポンサーセッション,NECより石黒さん.
- PaPeRo petitの紹介
- 可愛い
- IoTの成功事例
- アニメで出てくるパートナーロボットを現実でも
- PaPeRo petitをさせる技術
- ローカル(PaPeRo petit)
- クラウド
- 考える(Process)
あのロボットがJavaで動いているというのは驚きでした.
ついで,パナソニックの石黒さん.
Java,あまり目には見えないけどかなりの分野で使われているという事を感じました.
話が戻って,Nandiniさん.
- Javaロードマップ
- Java9を2016年に
- Jigsaw
次は,Oracle社Senior Vice PresidentのCameron Purdyさん.
- Java EE
- Java EE 7
- Java EE 8
予定ではJava 9が出る頃にEE 8が出るという事のようです.*1
標準仕様なため仕方がないのかもしれませんが,ちょっと進歩がゆっくりな気がします.
Oracle社のStephen Chinさん.
デモ中心なので画像主体で.
- Lego Duke Segway
- DukePad
- RasberryPi
- ホームメイドなので皆も創れるよ
- http://j.mp/dukepad
- JavaFXベースOS
- ChessRobot
Oracle社のSimon Ritter
日本Javaユーザグループ会長鈴木
昼休憩
基調講演も終わり,RCCのOBのaibouさんとirgalyさんとお昼ご飯に「つばめグリル」へ.
前日にTwitterで美味しいという噂を聞きつけてのことです.
案内待ちをしてる際に下のようなツイートが.
ご好意でご一緒させてもらいました.
C-1 Java SE 8時代のJava EE 7アプリケーション開発
- Lego Mindstormのデモ
- WebSocketとかEE7の機能を使ってるよ
- Java EE 7では並列処理が増強されている
- Concurrency Util for Java EE
- Java SE 8 & EE 7で並列処理
- CompletableFuture
- http://docs.oracle.com/javase/jp/8/api/java/util/concurrent/CompletableFuture.html
- ファクトリー
- supplyAsync
- 中間操作
- thenAccept
- thenApply
- 終端操作
- complete
- get
- ブロックするので注意
- Javadocを見ると60個ぐらいメソッドがある
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を呼び起こす
- FullGCが起きないと肥大化していく
- HWMが低い
- FullGCが多発
- HWMが高い
- メモリ使用量増大
- いずれも観測しチューニングできる
- MetaspaceはFullGCの時に整理される
- Compressed Class Pointer Space
- Compressed Oops(圧縮参照)に由来
- 64bitマシンでもオブジェクトのアドレスを32bitにして格納
- ヒープ使用量を節約
- ベースアドレスからのオフセットやアドレスのLSB省略
- 64bitマシンでもオブジェクトのアドレスを32bitにして格納
- InstanceKlassやArrayKlassなどをMetaspaceとは別の領域(Compressed Class Pointer Space)に置いて_klassの参照を32bitに(あってるか不安)
- Compressed Oops(圧縮参照)に由来
- オプション
- -XX:MaxMetaspaceSize
- デフォルト: unlimited
- -XX:MetaspaceSize
- デフォルト: 21MB
- Metaspaceの初期サイズ
- というけど,実際は変更しても意味がないみたい.詳しくはTakahiro YAMADA on Twitter: "-XX:MetaspaceSizeは現状の実装では初期値にならないらしいよ http://t.co/abGAlPn07k パッチは @YaSuenag さんが作成したが、まだ取り込まれていないと伺った気が #jdt2014_C2 #javadaytokyo"の一連の会話とスライドを参考にしてください.
- -XX:Max(Min)MetaspaceFreeRatio
- HWMの拡張と縮小
- MinMetaspaceFreeRatioを下回るとHWMを拡張
- MaxMetaspaceFreeRatioを上回るとHWMを縮小
- デフォルトはMinが40%,Maxが70%
- HWMの拡張と縮小
- -XX:+UseCompressedClassPointers
- CompressedClassPointerSpaceを使用するようにする
- デフォルト: 64bit環境では有効
- -XX:CompressedClassSpaceSize
- CompressedClassPointerSpaceのサイズ
- デフォルト: 1GB(変更できないため大きめ,いきなり1G確保されるわけではない)
- -XX:MaxMetaspaceSize
- クラス情報などが格納
- 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:例のごとくズレるでしょうけど・・・