Java Day Tokyo 2014 まとめ (chen)

0 views
439 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
0
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java Day Tokyo 2014 まとめ (chen)

  1. 1. Java Day Tokyo 2014 サマリー 陳映融 2014/05/26
  2. 2. 参加セッション • [K-1] 基調講演 • [A-1] Java SE 8 概要 • [C-2] Java SE 8 における HotSpot の進化 • [A-3] Exploring JavaFX 8 • [A-4] Lambda 式とストリーム API、並列処理の詳細 • [A-5] Java Day Tech Night
  3. 3. 基調講演(1) • Java の3本柱における進展 – Community: OpenJDK, JCP, … – Technology: Java SE 8, Java FX, Java ME 8, Java EE 7 – Stewardship: Java magazine, JUGs, … • Java SE 8 について – Nashorn – More and more parallelism support • (future) Project Sumatra: GPU offload – Main features
  4. 4. 基調講演(2) • Java SE 8 日本語ドキュメント公開! • Java SE/MEの事例紹介 – [NEC] PaPeRo petit (ロボット) • クラウド:サービス連携、高度処理 • デバイス:高度センシング、インストラクション基礎 – [Panasonic] 電子マネー決済端末 • Java SE/ME Roadmap – JDK 9: 2016
  5. 5. 基調講演(3) • Java EE 8 の計画説明 • Java Embedded デモ – Lego Mindstorms (で作られたDuke) – Duke Pad + Chess Robot • Java とコミュニティ活動 – JJUG (Japan Java User Group) • CCC • ナイトセミナー
  6. 6. Java SE 8 概要 (1) • 変更点 – 言語仕様、クラスライブラリ、プラットフォームなど – 新しいフィーチャ 65 項目 • 新機能 – Annotation on Java Types (JSR 308) – Date and Time API (JSR 310) – Lambda Expressions (JSR 335)
  7. 7. Java SE 8 概要 (2) • JEP (JDK Enhancement- Proposal) – 改善提案はどの部分に対しても可能 – コアに影響がある場合、Java SE への反映は検討される ※ JDK の一部機能実装は言語仕様範囲外 • Lambda Expression – 動作(behavior)をパラメータとして渡す – Syntactic sugar?そうではない…(詳しくは後で)
  8. 8. Java SE 8 概要 (3) • Default Methods – 後方互換性を保ちつつ既存のインタフェースを拡張 – Mixin みたいな仕組みとしては意図していないらしい • Annotation on Java Types – @notnull parameter のコンパイル時チェック • ジェネリックスの改善 Map<String, List<String>> map = new HashMap<>(); map.put(“key", new ArrayList<>()); // Java 7ではコンパイルエラー
  9. 9. Java SE 8 概要 (4) • リフレクション – メソッドパラメタが取得可能 • 並行性機能追加 – Scalable update variable: 頻度 write > read の場合に使用 • DoubleAccumulator, DoubleAdder, … – ForkJoinPool • 集合データ処理 (bulk data operation) – Filter, map, reduce のパイプライン処理
  10. 10. Java SE 8 における HotSpot の進化 (1) • PermGen が廃止され、Metaspace が導入された • Metaspace はヒープ以外の場所を使用 • Metaspace に変わってうれしいこと – デフォルトではサイズ制限がない – GC システムが管理する必要がない • GCのパフォーマンスがよくなる – アンロードは ClassLoader の単位で行う • 断片化発生しにくい
  11. 11. Java SE 8 における HotSpot の進化 (2) • OOP(ordinary object pointer)の圧縮参照の話 – 64-bitのマシンで、アドレスを32-bitに格納 • Javaヒープ使用量節約 • Klassポインタも圧縮 – 圧縮アドレスのメモリエリアを用意 • パフォーマンスに影響を及ぼすものだけ格納 • アドレス参照のパフォーマンス向上
  12. 12. Java SE 8 における HotSpot の進化 (3) • Tiered Compilation – JDK 8 でデフォルトで有効 – 実装が従来より充実 • いろいろパフォーマンス改善 – 頑張った結果 JDK 7より約 1.5 倍はやくなった
  13. 13. Exploring JavaFX 8 • Swing との連携 – JFXPanel と SwingNode 使用 • JavaFX に関する変更 – Java 8 から classpath に含まれるようになった • JavaFXアプリのパッケージングの説明 – applets, web start, native packaging • JavaFX Scene Builder 2.0 のデモ
  14. 14. Lambda 式とストリーム API、 並列処理の詳細 • ソースコードを使った説明 – Functional インタフェース – パイプライン処理の作り方 – 並列処理の実装例
  15. 15. Java Day Tech Night: Ask the Experts • Lambda 式と匿名クラスとの違い – 最初のプロトタイプの実装は同じだったけど、JDK 8今は違う – 実行時の初回呼び出し時に invokedynamic バイトコードを生成 – それ以降の呼び出しは生成済みのコードを呼び出し – 詳しい話は Java One 2013の “ Lambda under the hood” を参考
  16. 16. Java Day Tech Night: Ask the Experts • Lambda式内のチェック例外の扱い – Stream API内の呼び出しタイミングが不定で、処理が難しい – チェック例外を扱うFunctional インタフェースを自作すれば? • Exception Transparency というテクニーク • 複数例外クラスを投げる場合は対応できない • すべての例外を投げるインタフェースとクラスに対応が必要 – 将来のリリースで改善したい
  17. 17. Java Day Tech Night: Ask the Experts • Stream APIマルチスレッド実行時の例外処理について – Stream APIのマルチスレッド実行はFork/Joinで実装されて – 例外はForkフレームワークにキャッチされ、情報は保存される – 処理が終わったら、保存された例外情報を元に、リトライすればよい – でもおすすめはラッパ処理を作って、中で例外をキャッチ
  18. 18. Java Day Tech Night: Ask the Experts • Default Methods 導入されたが、将来は多重継承をお考え? – Default Methods のいい点としては拡張時の後方互換性 – デフォルトフィールドみたいな多重継承フィーチャの考えはない – フィールドがほしいなら抽象クラス使えばよい

×