Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

yoshiyoshifujii

October 24, 2018
Tweet

More Decks by yoshiyoshifujii

Other Decks in Technology

Transcript

  1. Scala

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

    View Slide

  2. Yoshitaka Fujii @yoshiyoshifujii
    ChatWork
    株式会社 (2
    ヶ月)
    Scala
    関西 Summit
    スタッフ
    Scala
    歴 4

    Contributors of Akka
    chatwork/akka­guard
    自己紹介
    Scala
    製プロダクトのJava
    戦略
    2 / 36

    View Slide

  3. https://2018.scala­kansai.org/
    Scala
    製プロダクトのJava
    戦略
    3 / 36

    View Slide

  4. 4 / 36

    View Slide

  5. Agenda
    1. JDK
    の新しいリリース・モデル
    2. Scala
    のJava
    対応状況
    3.
    選択肢
    Scala
    製プロダクトのJava
    戦略
    5 / 36

    View Slide

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

    View Slide

  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

    View Slide

  8. JDK:
    新しいリリースモデル解説(
    ver.2.0

    from
    オラクルエンジニア通信
    Scala
    製プロダクトのJava
    戦略
    8 / 36

    View Slide


  9. 6
    回の定期リリース・サイクル
    新機能が追加される6
    カ月に1
    回のフィーチャー・リリース
    毎年3
    月、9

    従来の「メジャー・リリース」という呼び名から
    新しく「フィーチャ-・リリース」に変更
    JDK
    の正式なバージョン番号も上がっていく
    JDK
    を短期間で定期的に更新していくことを重視したサイクル
    従来のように新バージョンで一挙に多数の機能が追加されるようなことはない
    脆弱性対策などを施したアップデート・リリースを1
    年に4

    毎年1
    月、4
    月、7
    月、10

    Scala
    製プロダクトのJava
    戦略
    9 / 36

    View Slide

  10. 無償アップデートの終了時期と有償サポートの提供
    オラクルがビルドした公式OpenJDK
    バイナリは、新バージョンがリリースされたタ
    イミングで旧バージョンの更新を終了
    無償版を利用するユーザーは、新バージョンに移行することでJDK
    を引き続き無償
    で更新できる
    特定バージョンでJDK
    の更新を継続したいユーザーには、JDK 11
    から3
    年ごとにLTS
    指定されるフィーチャー・リリースに対してOracle JDK
    バイナリを有償で提供
    Scala
    製プロダクトのJava
    戦略
    10 / 36

    View Slide

  11. 1
    年に
    6
    回リリースされるオラクルの公式
    OpenJDK
    バイナリ
    Scala
    製プロダクトのJava
    戦略
    11 / 36

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  16. Scala

    Java
    対応状況
    Scala
    製プロダクトのJava
    戦略
    15 / 36

    View Slide

  17. Scala

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

    View Slide

  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

    View Slide

  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

    View Slide

  20. Scala

    Java11
    対応状況
    https://github.com/scala/scala­dev/issues/559
    Scala
    製プロダクトのJava
    戦略
    19 / 36

    View Slide

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

    View Slide

  22. Akka

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

    View Slide

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

    View Slide

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

    View Slide

  25. Java 8
    が推奨
    Java 9, 10
    は、Oracle
    のサポート終了
    Java 11
    は、絶賛テスト中
    Akka
    が動かないとかやばい
    ライブラリもテスト中が多い
    Scala

    Java
    対応状況
    ­
    まとめ
    Scala
    製プロダクトのJava
    戦略
    24 / 36

    View Slide

  26. Scala

    Java
    対応状況
    ­
    まとめ
    いままで通り無償でやっていくなら、Java8
    ただし、2019
    年1
    月まで
    Java11
    にあげたいけど全部は動かない
    Scala
    製プロダクトのJava
    戦略
    25 / 36

    View Slide

  27. 選択肢
    Scala
    製プロダクトのJava
    戦略
    26 / 36

    View Slide

  28. 選択肢
    選択肢としては、
    1. Oracle
    2. AdoptOpenJDK
    3. Azul Systems
    4. IBM
    5. Red Hat
    6.
    自前でがんばる
    Scala
    製プロダクトのJava
    戦略
    27 / 36

    View Slide

  29. Oracle JDK
    の公式アップデートは、
    Java8
    のみ残ってる
    それも、2019
    年1
    月(
    商用)
    まで
    カウントダウンは、はじまってる
    https://www.oracle.com/technetwork/jp/java/eol­
    135779­ja.html
    Oracle
    の無償サポート
    Scala
    製プロダクトのJava
    戦略
    28 / 36

    View Slide

  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

    View Slide

  31. OpenJDK
    のビルドを提供するコミュニ
    ティ(
    無償)
    IBM
    などがスポンサー
    LTS
    については、4
    年間のサポート
    Java8
    について、2022
    年9
    月までサポー

    https://adoptopenjdk.net/index.html
    AdoptOpenJDK
    Scala
    製プロダクトのJava
    戦略
    30 / 36

    View Slide

  32. AdoptOpenJDK ­
    考察
    (
    私見も多いに含む
    )
    Oracle
    ほどリリースが早くない
    肌感覚として、1
    、2
    週間ほど遅れる
    OpenJDK
    は、JDK 8u192 (2018/10/23
    現在)
    AdoptOpenJDK
    は、JDK 8u181 (2018/10/23
    現在)
    あくまでベストエフォート
    コミュニティの要望が強いので早めに対応される期待はある
    今までOracleJDK
    を使ってたなら、色々と検証はしておくべき
    SSL
    証明書が不足して、https
    クライアントが失敗するとか
    Scala
    製プロダクトのJava
    戦略
    31 / 36

    View Slide

  33. Zulu(
    無償)
    Zulu Enterprise(
    有償)
    がある
    Java SE
    標準に完全準拠したOpenJDK

    認証ビルド
    10
    年間のエンタープライズグレードの
    Java
    サポート
    https://jp.azul.com/products/zulu­and­zulu­
    enterprise/
    Azul Systems
    Scala
    製プロダクトのJava
    戦略
    32 / 36

    View Slide

  34. IBM
    Java SDK
    は2022
    年4
    月までJava8
    をサポート
    ただし、JVM
    がJ9
    https://www.slideshare.net/takakiyo/jvmopenj9­vmibm­java
    Scala
    製プロダクトのJava
    戦略
    33 / 36

    View Slide

  35. Red Hat
    Red Hat Enterprise Linux
    上のJDK
    をサポート
    OpenJDK8
    は、2023
    年6
    月まで
    https://access.redhat.com/ja/articles/1457743
    Scala
    製プロダクトのJava
    戦略
    34 / 36

    View Slide

  36. 自前でがんばる
    http://hg.openjdk.java.net/jdk8/jdk8/raw­file/tip/README­builds.html
    がんばれ!!
    Scala
    製プロダクトのJava
    戦略
    35 / 36

    View Slide

  37. まとめ
    Scala
    は、Java8
    でコンパイル推奨
    無償は、AdoptOpenJDK
    かな…
    有償は、Azul or Oracle
    かな…
    みなさん、どうされるのか、情報交換させて欲しい!!
    Scala
    製プロダクトのJava
    戦略
    36 / 36

    View Slide