Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

JavaOne報告2017

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 53 Publicité

Plus De Contenu Connexe

Les utilisateurs ont également aimé (12)

Plus par なおき きしだ (20)

Publicité

Plus récents (20)

JavaOne報告2017

  1. 1. JavaOne 2017報告 2017/11/17 LINE Fukuoka きしだ なおき
  2. 2. Agenda •  JavaOneについて •  Javaのリリースサイクル •  Java Next •  Java EE •  周辺技術
  3. 3. JavaOneについて
  4. 4. JavaOne •  Oracleが主催するJavaイベント •  サンフランシスコで開催されるものが最大 •  Oracle Open Worldと併催
  5. 5. 会場がMosconeに •  2009あたりまでMosconeだった •  2016までHiltonとParc55(とNikko) – Hiltonは複雑怪奇 – 探検感が楽しかった •  ただしMoscone SouthではなくMoscone West – Moscone Southは工事中
  6. 6. セッション枠が45分 •  去年までは60分 •  聞くのが楽 •  ちょっと物足りない
  7. 7. 昼食にドリンクがない •  いままではペプシかなにかがあった
  8. 8. 時差ぼけ •  おかげで朝8:30のセッションに元気に 参加できます! •  日本に戻っても2週間くらい午前中起床が 続きました。 •  昼夜逆転対策にサンフランシスコおすすめ
  9. 9. サンフランシスコ •  日本人観光客がいない – 中国語を話す人が多い •  ホームレスがまた増えた – 去年減ったように見えたホームレスが増えてた – 子どもをつれてるホームレスが何組かいた •  SF MOMAの改修終了
  10. 10. JavaOneセッションの傾向 •  セッションの検索件数をカウント •  about Java •  about Next Java •  about JVM Language •  about Middleware •  about Archtecture •  about Buzz word
  11. 11. about Java •  “java 9” 32 •  “jdk 9” 21 •  Java EE 57 •  jigsaw 9 •  module 17 •  Virtual Machine 7 •  JShell 5 Java9とくにモジュール関連が多い
  12. 12. about Next Java •  valhalla 1 •  panama 1 •  amber 0 •  loom 0 •  “java 10” 0 •  “jdk 10” 1 次のJavaの仕様についてのセッションが ほぼない
  13. 13. about JVM Language •  groovy 9 •  kotlin 12 •  javascript 32 •  Scala 46 – ほぼ”Scalable”・・・。タイトルは5件 Kotlin人気
  14. 14. about Middleware •  sql 18 •  spark 14 •  ka[a 11 •  cassandra 5 •  mongodb 1 •  Hadoop 2 •  HBase 1 Spark/Ka[aが人気。 Hadoopは不人気というかインフラ化
  15. 15. about Archtecture •  reacve 19 •  microservice 162 •  serverless 12 •  docker 33 •  kubernetes 20 みんなMicroserviceいいたいだけでは。 Docker人気。
  16. 16. about Buzz word •  big data 12 •  cloud 273 –  カテゴリ名に入っていたのでサーバーサイド系が すべてカウントされていた。タイトルには50程度。 •  Machine Leaning 19 •  Blockchain 4 •  IoT 16 •  raspberry 5 •  VR 3 •  gpu 0 •  fpga 0 機械学習人気 GPUセッションがなくなった
  17. 17. リリースサイクル
  18. 18. JavaOne発表時 •  6ヶ月ごとにフィーチャーリリース •  バージョン番号は年.月 –  次回リリースはJDK 18.3 •  3ヶ月ごとにメンテナンスリリース •  サポートは次のフィーチャーリリースまで •  3年ごとにLong Time Support(LTS) –  Oracle JDKのみ •  Open JDKとOracke JDKは同じバイナリに –  いままで有償だったツールもすべてOpenJDKに •  Oracle JDKは顧客のみ
  19. 19. Javaリリースサイクル hdps://www.youtube.com/watch?v=UeyyLielXsU
  20. 20. Stephen Celebourne氏の批判 (Date Time API作者) •  ツールの対応に3ヶ月、評価に3ヶ月かかる •  6ヶ月のサポートではいつまでも新バージョン が使えない •  バージョン番号評価が今までと違うので対応 が必要
  21. 21. DEVOXX Belgiumでの発表 •  OpenJDKも3年ごとに3年のサポート •  バージョン番号はフィーチャーリリースごとに インクリメント – 次はJDK 10
  22. 22. Javaリリースサイクル(new) hdps://www.youtube.com/watch?v=x7pkWlost64
  23. 23. バージョン番号 •  2018/03 フィーチャーリリース JDK10 •  2018/04 メンテナンスリリース JDK10.0.1 •  2018/07 メンテナンスリリース JDK10.0.2 •  2018/09 フィーチャーリリース JDK11 LTS •  2018/10 メンテナンスリリース JDK11.0.1 LTS •  2019/01 メンテナンスリリース JDK11.0.2 LTS
  24. 24. Java Next
  25. 25. Java Next •  Project Valhalla –  Value Type –  Specializaon •  Project Panama –  Vector –  Value Layout •  Project Amber –  var –  Padern matching –  Enhanced Enum •  Project Loom –  Fiber(Lightweight Thread) –  Connuaon
  26. 26. Value Type •  Codes like as a class, works like as an int •  Not a reference type •  Can not be null value class Point { int x; int y; }
  27. 27. Specialization •  We can write List<int> •  No more IntStream and OptionalInt
  28. 28. Local Variable Inference •  Inferring for local variable •  JEP 286 var now = LocalDateTime.now(); var list = new ArrayList<String>(); var stream = list.stream();
  29. 29. Enhanced enum •  use generic parameter for enum •  JEP 301 enum Hoge<T> { FOO(Integer.class , 1), BAR(String.class, "test"); ... T getValue() { return value; } }
  30. 30. Data Class •  We want to declare class as just structure •  Now we use lombok @Value •  Language has Data Class, compiler can distinguish it. @Value class Point { int x; int y; } class Point (int x, int y) {}
  31. 31. Extended Switch •  instanceof •  pattern matching •  switch expression
  32. 32. Instanceof •  use type as a condition Object comp = getComponent(); String message; if (comp instanceof Integer) { int i = (Integer)comp; message = "整数やね " + i; } else if (comp instanceof String) { String s = (String)comp; message = s.length() + “文字やね"; } else { message = "ようしらん"; } print(message); Object comp = getComponent(); String message; switch (comp) { case Integer i: message = "整数やね " + i; break; case String s: message = s.length() + “文字やね"; break; default: message = "ようしらん"; } print(message);
  33. 33. switch expression •  Write switch as an expression Object comp = getComponent(); String message = expswitch (comp) { case Integer i -> "整数やね " + i; case String s -> s.length() + “文字やね"; default -> "ようしらん"; } print(message);
  34. 34. Pattern matching •  Pattern matching with data class Object comp = getComponent(); String message = switch (comp) { case Point(var x, var y) -> String.format("点(%d,%d)やね", x, y); case Integer i -> "整数やね " + i; case String s -> s.length() + “文字やね"; default -> "ようしらん"; } print(message);
  35. 35. matches •  matches演算子 Object comp = getComponent(); if(comp matches Point(var x, var y)) { printf("点(%d,%d)やね", x, y); }
  36. 36. ところで、varすでに試せます。 •  jdk10で試せる – hdp://jdk.java.net/10/ •  JShellで超便利 •  IDEは対応していない – varがあって補完がない世界より、補完があって varがない世界のほうがはるかにつよい
  37. 37. jdk10にvarが入る •  言語仕様すら6ヶ月でかわる •  なにが変わるか事前に把握しづらい – リリース3ヶ月前のRamp Downで確定 – 進捗状況はプロジェクトごとに確認する必要があ る •  なにが変わったか事後に把握しづらい •  なにが動かせるか把握しづらい •  どうすんの
  38. 38. Java EE
  39. 39. Java EEセッションが不人気 •  Linda Demicelのセッションに空席 – Spec Lead – 同じ話を3年目? •  MVCは5人・・・
  40. 40. Java EE 8 •  Servlet 4.0 –  HTTP/2対応 •  CDI 2.0 –  Java SE対応 –  非同期対応 •  JAX-RS –  Server Sent Event対応 •  JSON-B –  JSON Binding –  Jackson
  41. 41. EE4J •  Java EEをEclipseに寄贈 •  Oracleのコントロールがゆるくなる •  最近Oracleなんもしてない
  42. 42. EE4Jに至る道 •  2013/07 Java EE 7リリース •  2015/02 (HTTP/2リリース) •  2015/07 Java EE 8リリース延期 2016->2017 •  2015/09 Javaエバンジェリスト大量解雇 •  2016/06 Java EE Guardians •  2016/08 Java EE MicroProfile •  2017/08 Java EEのオープンソース化を発表 •  2017/09 EE4J
  43. 43. 周辺環境
  44. 44. Javaの実行環境の変化 •  AOT –  事前コンパイル •  Graal –  Javaで書かれたJIT •  OpenJ9 –  IBM J9がオープンソースに •  新しいGC –  Shenandoah by Redhat –  ZGC by Oracle –  数百GB〜数TBのメモリに対応
  45. 45. ハードウェア対応のフレームワーク •  Vector – not java.ul.Vector – SIMD対応 •  Persistent Memory – 永続メモリ(不揮発メモリ)
  46. 46. fn project •  Java対応のサーバーレスフレームワーク •  Dockerネイティブ
  47. 47. fn projectは簡単に試せる •  ぜんぶDockerがやってくれる – これで試せる $ brew install fn $ fn start $ mkdir sample $ cd sample $ fn init --runme java $ fn deploy -app myapp --local
  48. 48. サーバーレスとJava •  サーバーレス –  要するにCGI –  ゲートウェイだけが立っていてアプリケーションはそ の都度プロセスを動かす –  サーバー管理の必要性が低い –  スケールアップが容易 •  多重化はしたいけど負荷はそう高くないみたい なところにいいかも –  CMSのように、多重化してるけどあまり使われないも のとか
  49. 49. サーバーレスとJava •  Javaの欠点 – プロセス起動が重い – 一度しか実行されないので実行時最適化が無駄 •  最適化してる間に実行おわる •  最適化しても使われない
  50. 50. とうこともあると思って •  プロセス起動が重い – 読み込むクラスを減らす •  モジュール化 •  実行時最適化が無駄 – あらかじめ最適化 •  AOTやOpenJ9
  51. 51. JUnit5 •  再設計 •  だいぶ便利 – Nested – Parameterize
  52. 52. おまけ •  成田→福岡の飛行機の夜景がきれいでした hdp://d.hatena.ne.jp/nowokay/20171025#1508893711
  53. 53. まとめ •  モジュールがJavaを変えた – Javaのコードの書き方は変わらない – Javaの中身が変わった – Javaの世界が変わった

×