Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java release cadence has been changed and about Project Amber

1,330 views

Published on

2018/02/19(月)に開催した関西Javaエンジニアの会(関ジャバ) '18 2月度イベントでのスライドです。

・Java 10以降のJavaリリース
リリースサイクル変更やOpenJDKビルド、Project Amberの詳細について話します。

Published in: Technology
  • Be the first to comment

Java release cadence has been changed and about Project Amber

  1. 1. Java 10以降の Javaリリース 関西Javaエンジニアの会 / ポノス株式会社 阪田 浩一 @jyukutyo #kanjava
  2. 2. Disclaimer 以下の事項は個人の理解に基づいています。 正確な情報を提供することに努めています が、誤りがあることがあります。何かを確 約するものではないため、この情報を元に 判断なさらないでください。
  3. 3. 会長だけどじゅくちょー • 阪田 浩一 / じゅくちょー • 関ジャバ会長(JUGリーダ) • JVMが大好き • ポノス株式会社(スマホゲーム会社)
  4. 4. 昨年9/21 リリース
  5. 5. 10はいつ?
  6. 6. あと1ヶ月後!
  7. 7. 3/20 リリース予定
  8. 8. Javaの リリースサイクルが 変わったことは ご存知ですか?
  9. 9. 半年ごとに 新バージョンが リリースされる
  10. 10. 今まで どうだったかと 言うと…
  11. 11. 今までのJavaリリースサイクル • 2年ごとにメジャーアップデート – 達成されたこと、あったっけ? • 8 - 8ヶ月遅れ • 9 – 1年半遅れ • 計画した機能が完成すればリリース – 複雑な機能の完成時期に左右される • 9 - JPMS
  12. 12. 今後は…
  13. 13. 今後のJavaリリースサイクル • 半年ごとにリリース – 10 – 3/20 – 11 – 今年9月 • 3ヶ月ごとにメンテナンス/セキュリティリリース – 4月と7月 / 10月と1月 • サポートは半年(次のリリース)まで
  14. 14. 新機能を できるだけ早く 使えるように
  15. 15. 無償版のOracle JDKは なくなる
  16. 16. OpenJDKのビルドが 代わりとなる
  17. 17. ライセンスはGPL (たしか クラスパス例外付き GPLv2)
  18. 18. Oracle JDKとOpenJDK • 機能的な差はない(TCKにより保証) – Oracle JDKには • オラクルのバイナリコードライセンスがある • 一部のコードが異なる • クローズドソースのサードパーティのコンポーネ ントが含まれている – グラフィック・ラスタライザ、サード・パーティ・フォ ント、追加ドキュメントなど • 商用機能がある
  19. 19. Oracle JDKには 商用機能が あるのだが…
  20. 20. 商用機能は OpenJDKへ統合される
  21. 21. 商用機能 • AppCDS • Java Flight Recorder • Java Mission Control • ZGC
  22. 22. AppCDSは 現在のJava 10に 統合済み
  23. 23. 残りも 統合作業中 (Java 11以降)
  24. 24. よくある疑問
  25. 25. 半年ごとに バージョンアップしない といけないの?
  26. 26. OpenJDKにも LTSバージョンが あります!
  27. 27. LTSは3年ごと 最初のLTSは11
  28. 28. サポート期間は 次のLTSバージョンまで の3年
  29. 29. 公式情報は 出ていないが Devoxx,FOSDEM, JfokusでMarkさんが 話している
  30. 30. Oracleの Javaプラットフォーム チーフアーキテクト Mark Reinholdさん
  31. 31. 動画はこちら • FOSDEM – https://youtu.be/1l0WrKrSAVI • Jfokus – https://youtu.be/-YEuNf8a7hk 5日違いのカンファレンスですが 内容は半分しか重なっていません…
  32. 32. Oracle JDKは 有償サポートとなる
  33. 33. LTSの有償サポート Premier Support リリースから5年 Extended Support 上記に加え +3年 Sustaining Support 無期限 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  34. 34. 有償サポート バージョン リリース Premier Support Extended Support Sustaining Support 9 (non-LTS) 2017年9月 2018年3月 設定なし 無期限 10 (18.3) (non-LTS) 2018年3月 2018年9月 設定なし 無期限 11 (18.9-LTS) 2018年9月 2023年9月 2026年9月 無期限 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  35. 35. Java 8の 公式アップデートは 2019年1月まで
  36. 36. 時期を考えると 8 -> 11 というのがよさそう (11は18年9月リリース 8は19年1月まで)
  37. 37. 新しい リリースモデルへの よくある誤解
  38. 38. 新しいリリースモデルへの誤解 ❌LTSでないリリースは ”実験的”リリースである
  39. 39. 新しいリリースモデルへの誤解 ❌各リリースは 過去の各リリースの ように 破壊的である
  40. 40. 新しいリリースモデルへの誤解 ❌古い機能は 予告から3年後に 削除される
  41. 41. 新しいリリースモデルへの誤解 ❌更新が頻繁でない システムなら LTSでないリリースは 無視してよい
  42. 42. 新しいリリースモデルへの誤解 ❌LTSでないリリースは アップデートが 2回しかない
  43. 43. 新しいリリースモデルへの誤解 ❌LTSリリースは 3年以上サポートされる ことはない
  44. 44. では来月リリースの Java 10には どんなものが?
  45. 45. Java 11以降は?
  46. 46. 今日はAmberに 焦点を絞ります
  47. 47. Amber • ”お作法”を少なく – ローカル変数の型推論(var) – データクラス – 式としてのswitch – sealed型 – パターンマッチ
  48. 48. サンプルコードを 使ってご紹介
  49. 49. ローカル変数の 型推論
  50. 50. Javaにおける 型推論の歴史
  51. 51. List<String> l = Collections.<String>emptyList(); List<String> l = Collenctions.emptyList(); -- List<String> l = new ArrayList<String>(); List<String> l = new ArrayList<>(); -- Predicate<String> p = (String s) -> s.length() == 0; Predicate<String> p = s -> s.length() == 0;
  52. 52. URL url = new URL(”http://openjdk.java.net”); var url = new URL(”http://openjdk.java.net”);
  53. 53. 型推論 • not 動的型付き • コンパイラが型を補完してくれる イメージ
  54. 54. var hello = ”hello”; hello = 1;
  55. 55. データクラス
  56. 56. まず、 いわゆる”入れ物”クラス
  57. 57. class Point { final double x; final double y; Point(double x, double y) { this.x = x; this.y = y; } double x() { return x; } double y() { return y; } public boolean equals(Object o) {…} public int hashCode() {…} public String toString() {…} }
  58. 58. データクラス導入で これだけになる
  59. 59. record Point(double x, double y); final double x; final double y; Point(double x, double y) { this.x = x; this.y = y; } double x() { return x; } double y() { return y; } public boolean equals(Object o) {…} public int hashCode() {…} public String toString() {…} }
  60. 60. ScalaやKotlinと 近い感じ
  61. 61. 必要なメソッドは 定義/オーバーライド できる
  62. 62. record Point(double x, double y) { @Override public int hashCode() { return x * 92821 * x; } public double norm() { return Math.sqrt(x*x + y*y); } }
  63. 63. 次に switch式、 sealed型、 パターンマッチを 合わせた例
  64. 64. switch文に 型を使えるように
  65. 65. ラムダのような記法に
  66. 66. sealed型にすることで、 他に実装クラスが ないことを 保証できる
  67. 67. default節を 削除できた
  68. 68. さらに、
  69. 69. switchで データクラスは 分解できる
  70. 70. 当然ここでも varが使える
  71. 71. Java 9から _(アンダースコア1文字) は予約語
  72. 72. Amberが入ると 使わない変数を ”_”で表現できる
  73. 73. Java 11以降 こんな感じに なっていく 予定
  74. 74. (まだこれらすべてを 試せるブランチは 探したけれど なかった)

×