Your SlideShare is downloading. ×
関ジャバ JavaOne Tokyo 2012報告会
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

関ジャバ JavaOne Tokyo 2012報告会

622
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
622
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. JavaOneで知った! これからのJava フリュー株式会社 阪田 浩一 @jyukutyo/id:jyukutyo 1
    • 2. http://www.youtube.com/watch?v=b-Cr0EWwaTk 2
    • 3. 場もあったまった ところで 3
    • 4. 2013 Summer 4
    • 5. JDK 8 が来る! 5
    • 6. 大きなものは 6
    • 7. Project Lambda 7
    • 8. (前回の関ジャバで やりました) 8
    • 9. id:jyukutyoとid:backpaper0の 9
    • 10. はてダをご覧ください 10
    • 11. 1点新たに知ったこと 11
    • 12. FileFilter x = (File f) -> f.canRead();はFileFilter x = File::canRead;とも書ける。 12
    • 13. Project Jigsaw 13
    • 14. 新たなモジュール管理機構 14
    • 15. 追加されるもの 15
    • 16. •グループ化と依存関係•バージョン管理•カプセル化•オプション•エイリアス 16
    • 17. module-info.java に記述 17
    • 18. たとえば今、こういうクラスがある 18
    • 19. com.foo.Maincom.foo.Othercom.foo.ui.Shell 19
    • 20. com.fooパッケージ以下をグルーピング 20
    • 21. // module-info.javamodule com.foo { } 21
    • 22. com.foo.Mainクラスをエントリポイントに 22
    • 23. // module-info.javamodule com.foo { class com.foo.Main;} 23
    • 24. 依存するJARが あるとき 24
    • 25. 今まで。 25
    • 26. $ java -cp app.jar:bar.jar:baz.jar ... 26
    • 27. JAR Hell 27
    • 28. これから。 28
    • 29. // module-info.javamodule com.foo { requires org.bar.lib; requires edu.baz.util;} 29
    • 30. バージョニング 30
    • 31. // module-info.javamodule com.foo @ 1.0.0 { requires org.bar.lib @ 2.1-alpha; requires edu.baz.util @ 5.2_11;} 31
    • 32. カプセル化 32
    • 33. // module-info.javamodule com.foo.secret @ 3 { permits com.foo.lib;}com.foo.libからしか、com.foo.secretは呼び出せない。 33
    • 34. オプション 34
    • 35. // module-info.javamodule com.foo.app { requires com.foo.lib; requires optional com.foo.extra;} 35
    • 36. 集約36
    • 37. // module-info.java// Module aliasesmodule com.foo.lib { provides com.foo.lib.db; provides com.foo.lib.ui; provides com.foo.lib.util;} 37
    • 38. モジュールをまとめる 38
    • 39. 新しいフォーマット jmod 39
    • 40. モジュールファイル と呼ぶ 40
    • 41. jpkgコマンドで 生成できる 41
    • 42. JDK 9では! 42
    • 43. セルフチューニングな JVM 43
    • 44. 末尾再帰の継続渡し ができる! 44
    • 45. ビッグデータ対応! 45
    • 46. 1つのJVMでのマルチテナント対応! 46
    • 47. の予定です 47
    • 48. Java EE 48
    • 49. 実はNo.1 49
    • 50. Java EE 7は 全世界で 4000万DL 50
    • 51. Java EE 8 51
    • 52. •JSF 2.2•JPA 2.1•EJB 3.2 52
    • 53. クラウド対応 53
    • 54. PaaSにはスタンダードが ないから 54
    • 55. Java EEで吸収 55
    • 56. プロビジョニングに履歴管理モデルを 導入 56
    • 57. 伸縮性とクラスタ、自動サービスレベル管理 57
    • 58. マルチテナントを@Multitenantで 58
    • 59. NIO 2のAPIに対応 59
    • 60. つまりWebSocketのようなプロトコルをサポート 60
    • 61. ReadListenerとWriteListener 61
    • 62. AsyncIOInputSourceと AsyncIOOutputSink 62
    • 63. を追加 63
    • 64. public class NIOSampleServlet extends HttpServlet protected void doGet(HttpServletRequest request,! ! ! ! ! ! ! ! ! ! ! HttpServletResponse response) { final ServletInputStream sis = request.getInputStream(); final ServletOutputStream sos = response.getOutputStream(); sis.setReadListener(new ReadListener() { public void onDataAvailable() { sis.read(new byte[sis.dataAvailable()]); } ... }); sos.setWriteListener(new WriteListener() { public void onWritePossible(int size) { try { byte b[] = new byte[size]; sos.write(b); } ... }); }} 64
    • 65. セキュリティ 65
    • 66. CSRF対策 66
    • 67. XSS対策でエンコーディングとエスケープをサポート 67
    • 68. その他雑多ネタ 68
    • 69. Project Coin 69
    • 70. switch文でString 使えるけど 70
    • 71. switch(s) { case "a": case "b": return 10; case "c": case "d": return 20; ...} 71
    • 72. 一体どうなってるの? 72
    • 73. // Desugaredint $t = -1;switch(s.hashCode()) { case 0x61: // "a".hashCode() if(s.equals("a")) $t = 1; break; case 0x62: if(s.equals("b")) $t = 2; break; ...}switch($t) { case 1: case 2: return 10; case 3: case 4: return 20; 73
    • 74. Project Lambdaで ダイアモンド継承 74
    • 75. interface A { void m() default ...; }interface B extends A { void m()! ! ! ! ! ! ! ! ! ! ! ! default ...; }interface C extends A { }class D implements B, C { ... }// which is called when call D.m()... 75
    • 76. interface A { void m() default ...; }interface B extends A { void m()! ! ! ! ! ! ! ! ! ! ! ! default ...; }interface C extends A { }class D implements B, C { ... }// B.m used if no D.mBがm()をオーバーライドしているので、より特化したBのm()が使われる 76
    • 77. じゃあこれは? 77
    • 78. interface A { void m() default ...; }interface B { void m() default ...; }class C implements A, B { public void m() { m(); }}// what happens? 78
    • 79. コンパイルエラー 79
    • 80. interface A { void m() default ...; }interface B { void m() default ...; }class C implements A, B { public void m() { A.super.m(); }}// A.m()を明示的に呼び出す必要がある(ダサい) 80
    • 81. 次は81
    • 82. セッションを1つダイジェストで 82
    • 83. Low LatencyにするためのGC基礎 83
    • 84. in HotSpot VM 84
    • 85. オブジェクトのアロケーションはvery cheap 85
    • 86. だいたい10 CPU命令 86
    • 87. だから生存期間が短いオブジェクトの 87
    • 88. アロケーションは 全然OK 88
    • 89. マイナーGCですぐ回収される 89
    • 90. マイナーGCは 早いし 問題なし 90
    • 91. アロケーションよりオブジェクトの保存の 方が 91
    • 92. レイテンシにインパクトがある 92
    • 93. ただし、頻繁なGCは年齢が早く上がり 93
    • 94. プロモーションが 起こって 94
    • 95. フルGCが走るから そこは注意 95
    • 96. そして 96
    • 97. 並行GCを使おう 97
    • 98. 並行GC =アプリケーションが 停止しない 98
    • 99. -XX:+UseParallelOldGC か -XX:+UseParallelGC 99
    • 100. (JDK6のほとんどの環境でデフォルト) 100
    • 101. CMS(ConcurrentMark & Sweep) を使ってもいい 101
    • 102. –XX:+UseConcMarkSweepGC 102
    • 103. けど、Conncurrentは 103
    • 104. ライトバリアがいるので注意 104
    • 105. オーバーヘッドになる ので 105
    • 106. case by caseで 106
    • 107. Stop the World するGCは 107
    • 108. ライトバリアが いらない 108
    • 109. 理想的には 109
    • 110. Parallel GCで、Old世代の解放を避ける 110
    • 111. ちなみに 111
    • 112. 大きなオブジェクトは 112
    • 113. アロケートも 初期化も高価です! 113
    • 114. ヒープにフラグメンテーション発生させちゃうかも 114
    • 115. 配列とかのリサイズも そうだよ 115
    • 116. オブジェクトプーリングも潜在的に問題 116
    • 117. GCは生きている オブジェクトをマークしていくもの! 117
    • 118. プールはロックが いるし、スケーラビリティ-- 118
    • 119. GCの振る舞いを 観察しよう 119
    • 120. -XX:+PrintGCDetails と一緒に 120
    • 121. -XX:+PrintGCTimeStamps か-XX:+PrintGCDateStamps を指定 121
    • 122. GCログの可視化はGChisto(java.net) で 122
    • 123. あとは VisualVMのVisualGCプラグイン とか 123
    • 124. ミッションコントロール とか 124
    • 125. 早すぎる最適化は しない! 125
    • 126. プロファイルしましょう 126
    • 127. という感じでした 127
    • 128. 一番おもしろかった セッション 128
    • 129. トラブルシューターの頭の中身∼7年間のJavaトラブルシュートサービ スから 129
    • 130. (ひいき目なしに) 130
    • 131. おまけ 131
    • 132. Java資格試験も 変わる! 132
    • 133. オラクルマスターと 同様 133
    • 134. 134
    • 135. ブロンズ、シルバー、 ゴールドへ 135
    • 136. 旧資格保持者には 移行試験あり 136
    • 137. 最後に 137
    • 138. JavaOneでは関ジャバメンバーも活躍しました! 138
    • 139. @cero_t 139
    • 140. 140
    • 141. パネルディスカッションと BOFセッションで登壇 141
    • 142. @kiy0taka 142
    • 143. 143
    • 144. Special LT で登壇 144
    • 145. ご清聴ありがとうございました 145