3️⃣

Play Framework 2.8 2.9 3.0 違い

2023/10/29に公開

Intro

https://www.playframework.com/

現在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がタグ付けされひっそりと公開された(追記)

https://mvnrepository.com/artifact/com.typesafe.play/play_2.13/2.8.20
https://github.com/playframework/playframework/releases/tag/2.8.20
https://github.com/playframework/playframework/blob/3.0.0/documentation/manual/releases/release28/Highlights28.md

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の予定

https://mvnrepository.com/artifact/com.typesafe.play/play_2.13/2.9.0
https://mvnrepository.com/artifact/com.typesafe.play/play_3/2.9.0
https://github.com/playframework/playframework/releases/tag/2.9.0
https://github.com/playframework/playframework/blob/3.0.0/documentation/manual/releases/release29/Highlights29.md

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の予定

https://pekko.apache.org/
https://mvnrepository.com/artifact/org.playframework/play_2.13/3.0.0
https://mvnrepository.com/artifact/org.playframework/play_3/3.0.0
https://github.com/playframework/playframework/releases/tag/3.0.0
https://github.com/playframework/playframework/blob/3.0.0/documentation/manual/releases/release30/Highlights30.md

$ 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

https://xuwei-k.hatenablog.com/entry/2023/10/04/210915

脚注
  1. sbt 1.xのシェルがScala 2.12.18を呼び出す ↩︎

Discussion