最新情報は以下の公式の情報をご覧ください。で終わるのですが、これ書いている2021年9月現在の情報を簡単にまとめておきます(ただのtweet貼り付け)
- https://github.com/scala/bug/issues?q=label%3Ajdk17 公式のJDK17関連のbug
- https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html 公式のJDKとの互換解説のページ
https://t.co/reFhQ5JQP6
— Kenji Yoshida (@xuwei_k) September 19, 2021
Scala 2本体でのjdk17関連のbugというか未対応なもの、無いこともないけど、あまり致命的なものはないように見えるから、べつに普通に動くと思ってもたいして問題ない気はするなぁ。いずれにせよそのうち対応されるはずだし。
各種ライブラリ含めた対応は別問題だから、
それ含めて、まだ一切罠にハマりたくない慎重派な人は、まだ11などを使っておけば十分ではあるけれど
— Kenji Yoshida (@xuwei_k) 2021年9月19日
(そもそも慎重な人はScala自体の対応状況あまり関係なく、まだ17使おうと思わないだろうけど)
Scala 2.13.6時点で未解決なjdk17関連問題が3つあり
— Kenji Yoshida (@xuwei_k) 2021年9月19日
1: sealed使ったJavaコードと同時にcompile不可
おそらくこれが一番影響大きい?コンパイル単位分ければ一応回避可能
2: sealedなJava classをScalaで継承出来てしまい、それ使うと実行時エラー
問題ではあるがそんな変なことをしなければヨシ(?)
3: REPLでの:javapコマンド動かない?
— Kenji Yoshida (@xuwei_k) 2021年9月19日
:javapコマンド使ってる人どころか知ってる人すらそこまで多くない?だろうし、あくまでREPLの特定の機能だけなので、普通に動かす分には問題ないはず
https://t.co/TqUEGhy6eShttps://t.co/Ag4kwXKgqN
— Kenji Yoshida (@xuwei_k) September 19, 2021
sbtがSecurityManager使っていてJDK17だと起動時に警告出るのは今まさに直されようとしているし、あくまで警告なので、JDK17というかSecurityManager関連が消されるまでのJDKでは、警告はウザいけれど動作に問題はないはず?
(いつ消えるんだろう)