Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Yoshitaka Fujii @yoshiyoshifujii ChatWork 株式会社 (2 ヶ月) Scala 関西 Summit スタッフ Scala 歴 4 年 Contributors of Akka chatwork/akka­guard 自己紹介 Scala 製プロダクトのJava 戦略 2 / 36

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

4 / 36

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

JDK: 新しいリリースモデル解説( ver.2.0 ) from オラクルエンジニア通信 Scala 製プロダクトのJava 戦略 8 / 36

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Java 8 が推奨 Java 9, 10 は、Oracle のサポート終了 Java 11 は、絶賛テスト中 Akka が動かないとかやばい ライブラリもテスト中が多い Scala の Java 対応状況 ­ まとめ Scala 製プロダクトのJava 戦略 24 / 36

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

OpenJDK のビルドを提供するコミュニ ティ( 無償) IBM などがスポンサー LTS については、4 年間のサポート Java8 について、2022 年9 月までサポー ト https://adoptopenjdk.net/index.html AdoptOpenJDK Scala 製プロダクトのJava 戦略 30 / 36

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Zulu( 無償) Zulu Enterprise( 有償) がある Java SE 標準に完全準拠したOpenJDK の 認証ビルド 10 年間のエンタープライズグレードの Java サポート https://jp.azul.com/products/zulu­and­zulu­ enterprise/ Azul Systems Scala 製プロダクトのJava 戦略 32 / 36

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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