Pro Yearly is on sale from $80 to $50! »

Scala製プロダクトのJavaバージョン戦略

 Scala製プロダクトのJavaバージョン戦略

10/24(水) Scala関西勉強会 - Summit直前スペシャル
https://connpass.com/event/103702/

C952d9f90c7ec6cb1b5513c05d3db536?s=128

yoshiyoshifujii

October 24, 2018
Tweet

Transcript

  1. Scala 製 プロダクトの Java バージョン戦略 2018­10­24 Wed. @yoshiyoshifujii 1 /

    36
  2. Yoshitaka Fujii @yoshiyoshifujii ChatWork 株式会社 (2 ヶ月) Scala 関西 Summit

    スタッフ Scala 歴 4 年 Contributors of Akka chatwork/akka­guard 自己紹介 Scala 製プロダクトのJava 戦略 2 / 36
  3. https://2018.scala­kansai.org/ Scala 製プロダクトのJava 戦略 3 / 36

  4. 4 / 36

  5. Agenda 1. JDK の新しいリリース・モデル 2. Scala のJava 対応状況 3. 選択肢

    Scala 製プロダクトのJava 戦略 5 / 36
  6. JDK の新リリース・モデル Scala 製プロダクトのJava 戦略 6 / 36

  7. JDK の新リリース・モデル オラクルは2017 年9 月、JDK の提供サイクルとライセンス方式に関して、新たなリリ ース・モデルを発表しました。 これらはJDK 9 より一部が適用され、2018

    年9 月に公 開予定のJDK 11 で完全移行します。 新リリース・モデルはJDK の過去のリリース・モ デルの課題を解決したものであり、ユーザーにより多くのメリットをもたらします。 https://www.oracle.com/technetwork/jp/articles/java/ja­topics/jdk­release­model­4487660­ja.html Scala 製プロダクトのJava 戦略 7 / 36
  8. JDK: 新しいリリースモデル解説( ver.2.0 ) from オラクルエンジニア通信 Scala 製プロダクトのJava 戦略 8

    / 36
  9. 年 6 回の定期リリース・サイクル 新機能が追加される6 カ月に1 回のフィーチャー・リリース 毎年3 月、9 月 従来の「メジャー・リリース」という呼び名から

    新しく「フィーチャ-・リリース」に変更 JDK の正式なバージョン番号も上がっていく JDK を短期間で定期的に更新していくことを重視したサイクル 従来のように新バージョンで一挙に多数の機能が追加されるようなことはない 脆弱性対策などを施したアップデート・リリースを1 年に4 回 毎年1 月、4 月、7 月、10 月 Scala 製プロダクトのJava 戦略 9 / 36
  10. 無償アップデートの終了時期と有償サポートの提供 オラクルがビルドした公式OpenJDK バイナリは、新バージョンがリリースされたタ イミングで旧バージョンの更新を終了 無償版を利用するユーザーは、新バージョンに移行することでJDK を引き続き無償 で更新できる 特定バージョンでJDK の更新を継続したいユーザーには、JDK 11

    から3 年ごとにLTS 指定されるフィーチャー・リリースに対してOracle JDK バイナリを有償で提供 Scala 製プロダクトのJava 戦略 10 / 36
  11. 1 年に 6 回リリースされるオラクルの公式 OpenJDK バイナリ Scala 製プロダクトのJava 戦略 11

    / 36
  12. オラクルの公式 OpenJDK バイナリは 6 カ月でアップデートを終了 Scala 製プロダクトのJava 戦略 12 /

    36
  13. JDK の新リリース・モデル オラクルは2017 年9 月、JDK の提供サイクルとライセンス方式に関して、新たなリリ ース・モデルを発表しました。 これらはJDK 9 より一部が適用され、2018

    年9 月に公 開予定のJDK 11 で完全移行します。 新リリース・モデルはJDK の過去のリリース・モ デルの課題を解決したものであり、ユーザーにより多くのメリットをもたらします。 https://www.oracle.com/technetwork/jp/articles/java/ja­topics/jdk­release­model­4487660­ja.html Scala 製プロダクトのJava 戦略 13 / 36
  14. JDK の新リリース・モデル オラクルは2017 年9 月、JDK の提供サイクルとライセンス方式に関して、新たなリリ ース・モデルを発表しました。 これらはJDK 9 より一部が適用され、2018

    年 9 月に公 開予定の JDK 11 で完全移行します。 新リリース・モデルはJDK の過去のリリース・モ デルの課題を解決したものであり、ユーザーにより多くのメリットをもたらします。 https://www.oracle.com/technetwork/jp/articles/java/ja­topics/jdk­release­model­4487660­ja.html Scala 製プロダクトのJava 戦略 14 / 36
  15. JDK の新リリース・モデル オラクルは2017 年9 月、JDK の提供サイクルとライセンス方式に関して、新たなリリ ース・モデルを発表しました。 これらはJDK 9 より一部が適用され、2018

    年 9 月に公 開予定の JDK 11 で完全移行します。 新リリース・モデルはJDK の過去のリリース・モ デルの課題を解決したものであり、ユーザーにより多くのメリットをもたらします。 https://www.oracle.com/technetwork/jp/articles/java/ja­topics/jdk­release­model­4487660­ja.html もうはじまってる! Scala 製プロダクトのJava 戦略 14 / 36
  16. Scala の Java 対応状況 Scala 製プロダクトのJava 戦略 15 / 36

  17. Scala の Java 対応状況 https://docs.scala­lang.org/overviews/jdk­compatibility/overview.html#version­compatibility­table Scala 製プロダクトのJava 戦略 16 /

    36
  18. We recommend using Java 8 for compiling Scala code. Since

    the JVM is backward compatible, it is usually safe to use a newer JVM to run your code compiled by the Scala compiler for older JVM versions. コンパイルは Java 8 が推奨 JVM は下位互換性があるため、古いJVM バージョン用にScala コンパイラによっ てコンパイルされたコードを実行するた めに、新しいJVM を使用するのが通常安 全です。 Scala の Java 対応状況 https://docs.scala­lang.org/overviews/jdk­compatibility/overview.html#running­versus­compiling Scala 製プロダクトのJava 戦略 17 / 36
  19. We try to provide experimental support for running the Scala

    compiler on LTS versions of Java (“Long Term Support”; see http://www.oracle.com/technetwork/java/eol­ 135779.html), and to the extent possible will include the current LTS Java version in our CI matrix and the community build. We will not, a priori, consider non­ LTS Java versions. Compiler bugs related to Java versions other than the supported one (Java 8), will be scheduled with lower priority, and will not be considered release blockers. Scala コンパイラをLTS バージョンの Java で実行するためのサポートを可能な 限り提供しようとしている LTS 以外のJava バージョンは考慮しない サポートされているバージョン(Java 8 )以外のJava バージョンに関連するコ ンパイラのバグは、優先順位が低くスケ ジュールされる Scala の Java 対応状況 https://docs.scala­lang.org/overviews/jdk­compatibility/overview.html#running­versus­compiling Scala 製プロダクトのJava 戦略 18 / 36
  20. Scala の Java11 対応状況 https://github.com/scala/scala­dev/issues/559 Scala 製プロダクトのJava 戦略 19 /

    36
  21. Scala ライブラリの Java11 対応状況 https://gist.github.com/xuwei­k/f0de6366f01363fbd25ada2c357508b5 Scala 製プロダクトのJava 戦略 20 /

    36
  22. Akka の Java11 対応状況 https://github.com/akka/akka/issues?q=is%3Aissue+is%3Aopen+jdk11+label%3At%3Ajdk Scala 製プロダクトのJava 戦略 21 /

    36
  23. akka.util.Unsafe がコンパイルエラー https://github.com/akka/akka/issues/25640 Scala 製プロダクトのJava 戦略 22 / 36

  24. sun.misc.Unsafe が削除となった https://www.oracle.com/technetwork/java/javase/11­relnote­issues­5012449.html#JDK­8193033 Scala 製プロダクトのJava 戦略 23 / 36

  25. Java 8 が推奨 Java 9, 10 は、Oracle のサポート終了 Java 11

    は、絶賛テスト中 Akka が動かないとかやばい ライブラリもテスト中が多い Scala の Java 対応状況 ­ まとめ Scala 製プロダクトのJava 戦略 24 / 36
  26. Scala の Java 対応状況 ­ まとめ いままで通り無償でやっていくなら、Java8 ただし、2019 年1 月まで

    Java11 にあげたいけど全部は動かない Scala 製プロダクトのJava 戦略 25 / 36
  27. 選択肢 Scala 製プロダクトのJava 戦略 26 / 36

  28. 選択肢 選択肢としては、 1. Oracle 2. AdoptOpenJDK 3. Azul Systems 4.

    IBM 5. Red Hat 6. 自前でがんばる Scala 製プロダクトのJava 戦略 27 / 36
  29. Oracle JDK の公式アップデートは、 Java8 のみ残ってる それも、2019 年1 月( 商用) まで

    カウントダウンは、はじまってる https://www.oracle.com/technetwork/jp/java/eol­ 135779­ja.html Oracle の無償サポート Scala 製プロダクトのJava 戦略 28 / 36
  30. Premier Support ならJava8 が2022 年3 月 PC 端末が月額1 ユーザー2.5 ドル

    サーバ/クラウドが月額1CPU25 ドル 標準の契約期間は1 年(2 年および3 年も あり) ボリュームディスカウントもあるらしい https://www.oracle.com/technetwork/jp/java/eol­ 135779­ja.html https://www.oracle.com/technetwork/jp/java/javaseproducts/overview/javasesubscriptionfaq­ 4891443­ja.html Oracle の有償サポート Scala 製プロダクトのJava 戦略 29 / 36
  31. OpenJDK のビルドを提供するコミュニ ティ( 無償) IBM などがスポンサー LTS については、4 年間のサポート Java8

    について、2022 年9 月までサポー ト https://adoptopenjdk.net/index.html AdoptOpenJDK Scala 製プロダクトのJava 戦略 30 / 36
  32. AdoptOpenJDK ­ 考察 ( 私見も多いに含む ) Oracle ほどリリースが早くない 肌感覚として、1 、2

    週間ほど遅れる OpenJDK は、JDK 8u192 (2018/10/23 現在) AdoptOpenJDK は、JDK 8u181 (2018/10/23 現在) あくまでベストエフォート コミュニティの要望が強いので早めに対応される期待はある 今までOracleJDK を使ってたなら、色々と検証はしておくべき SSL 証明書が不足して、https クライアントが失敗するとか Scala 製プロダクトのJava 戦略 31 / 36
  33. Zulu( 無償) Zulu Enterprise( 有償) がある Java SE 標準に完全準拠したOpenJDK の

    認証ビルド 10 年間のエンタープライズグレードの Java サポート https://jp.azul.com/products/zulu­and­zulu­ enterprise/ Azul Systems Scala 製プロダクトのJava 戦略 32 / 36
  34. IBM Java SDK は2022 年4 月までJava8 をサポート ただし、JVM がJ9 https://www.slideshare.net/takakiyo/jvmopenj9­vmibm­java

    Scala 製プロダクトのJava 戦略 33 / 36
  35. Red Hat Red Hat Enterprise Linux 上のJDK をサポート OpenJDK8 は、2023

    年6 月まで https://access.redhat.com/ja/articles/1457743 Scala 製プロダクトのJava 戦略 34 / 36
  36. 自前でがんばる http://hg.openjdk.java.net/jdk8/jdk8/raw­file/tip/README­builds.html がんばれ!! Scala 製プロダクトのJava 戦略 35 / 36

  37. まとめ Scala は、Java8 でコンパイル推奨 無償は、AdoptOpenJDK かな… 有償は、Azul or Oracle かな…

    みなさん、どうされるのか、情報交換させて欲しい!! Scala 製プロダクトのJava 戦略 36 / 36