3️⃣
Play Framework 2.8 2.9 3.0 違い
Intro
現在Scalaには2.12.18[1]と2.13.12と3.3.1という3つの最新バージョンがあることは周知の事実ですが、最近Play Frameworkも2.8.20と2.9.0と3.0.0という3つのバージョンが最新バージョンになりました。
もはや意味がわからないのでまとめることにしました。
2023/11/09 22:00 それぞれ更新があったので追記しました。
Play Framework 2.8.20
- 2023/07/21リリース
- GitHubのReleasesでリリースノート付きで公開された
- 2023年10月現在のLatestはこれ
- 2023年10月現在の公式ドキュメントのバージョンもこれ
- 2.8.0が2019/12/13にリリースされたので、2.8.xだけで4年近くやってる
- Java 8をサポートしている
- Scala 2.12をサポートしている
- sbt 0.13をサポートしている
- 古いライブラリにに依存していてめっちゃ脆弱性がある
- 2023年10月現在Maven Repositoryで6つ確認できる
- 2023/11/09 20:00頃、2.8.21がタグ付けされひっそりと公開された(追記)
Play Framework 2.9.0
- 2023/10/25リリース
- タグ付けされ雑に公開された
- GitHubのTagsとMaven Repositoryには存在する
- 2023/11/07にリリースノート付きで公開されたが、GitHubのReleasesにはない(追記)
- Play Framework 2.8.20からなんかもうめっちゃ変えた
- Java 17とJava 21対応
- Scala 3対応
- 古いAkka 2.6とAkka HTTP 10.2に依存
- Akkaのライセンスが2.7以降BUSL-1.1になったから
- groupIdは変わらずcom.typesafe.play
- Maven Repositoryで確認するときにScala 3とScala 2.13のどちらか確認が必要
- Java 8サポート終了
- Scala 2.12サポート終了
- sbt 0.13サポート終了
- なのでsbt 1.xが必要
- 他にもGuiceが6になったりJacksonが2.14になったり
- Java Persistence APIからJakarta Persistence APIへ移行した
- Hibernate 6とかEclipseLink 3とか動くようになった
- 他詳しいリリースハイライトはリンク参照
- 次のマイナーバージョンは2.10の予定
Play Framework 3.0.0
- 2023/10/25リリース
- タグ付けされ雑に公開された
- GitHubのTagsとMaven Repositoryには存在する
- 2023/11/07にGitHubのReleasesでリリースノート付きで公開された(追記)
- 2023年11月現在のLatestはこれ(追記)
- AkkaとAkka HTTPからApache PekkoとApache Pekko HTTPへ切り替えた
- なのでApache License 2.0のまま最新のAkkaのような何かが使える
- groupIdをcom.typesafe.playからorg.playframeworkに変えた
- なのでマイグレーションするときsbtプラグインの変更が必要
- 必要に応じてライブラリ依存、インポート名の変更も
- ググってMaven Repositoryで確認したりコピペするときも注意が必要
- それ以外は2.9.0と同じ
- 現在
sbt new playframework/play-scala-seed.g8
やるとデフォルトが3.0.0になってる - 次のマイナーバージョンは3.1の予定
$ sbt new playframework/play-scala-seed.g8
...
name [play-scala-seed]:
organization [com.example]:
play_version [3.0.0]:
scala_version [2.13.12]:
sbt_giter8_scaffold_version [0.16.2]:
Outro
Scalaのエコシステムしんどい。
Ref
-
sbt 1.xのシェルがScala 2.12.18を呼び出す ↩︎
Discussion