Play Framework

Overview

Play Framework - The High Velocity Web Framework

Gitter Maven

The Play Framework combines productivity and performance making it easy to build scalable web applications with Java and Scala. Play is developer friendly with a "just hit refresh" workflow and built-in testing support. With Play, applications scale predictably due to a stateless and non-blocking architecture. By being RESTful by default, including assets compilers, JSON & WebSocket support, Play is a perfect fit for modern web & mobile applications.

Learn More

License

Copyright (C) Lightbend Inc. (https://www.lightbend.com).

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Issues
  • Impossible to use an app in stage/dist mode with jpa with play 2.4.0

    Impossible to use an app in stage/dist mode with jpa with play 2.4.0

    Create a project with play 2.4.0 and jpa support. The application works just fine in dev mode but when you use it in stage mode each time you try to access a jpa class there is an error that says the classes annotated with @Entity are not mapped.

    It seems there is a problem with jpa support in this mode.

    I tried this on a simple fresh test project and the error occurs

    opened by scesbron 60
  • New validation api

    New validation api

    type:feature 
    opened by jto 59
  • Application reloads on assets or public files changes

    Application reloads on assets or public files changes

    In dev mode Play triggers full app reload after any change in assets files or in public folder. This is pretty much useless and it takes a lot of time (3-5 secs). Any workaround on this? Maybe there is a way to control app reload behavior?

    opened by astorath 58
  • Serious memory leak in 2.5.[5-6]

    Serious memory leak in 2.5.[5-6]

    Play Version 2.5.[5-6]

    API Scala

    Operating System Ubuntu 14.04 LTS / 16.04 LTS

    JDK Oracle

    java -version
    java version "1.8.0_101"
    Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
    

    Actual Behavior

    On 2 separate play apps we see the same behaviour since upgrading to 2.5.5, also 2.5.6 did not fix this

    This first picture shows an app where memory growing all the time after 2.5.4 -> 2.5.5 upgrade on 22 aug Memory still growing linearly with 2.5.6 on 25 aug Issue fixed after reverting to 2.5.4 (no other changes except changing play version)

    image

    Other application that was upgraded 2.5.4 -> 2.5.5 (and back to 2.5.4 in the end)

    image

    I have no idea what is causing it but seeing this on 2 different play apps after upgrade can hardly be a coincidence.

    type:defect 
    opened by francisdb 53
  • Lift mapM and flatMapM from Iteratee into BodyParser

    Lift mapM and flatMapM from Iteratee into BodyParser

    The existing map and flatMap methods on BodyParser already lift the underlying Iteratee methods into BodyParser.

    This commit does the same for the mapM and flatMapM methods, and for completeness-sake, it also lifts the validate method to validateM.

    These combinators allow one to write code that asynchronously processes the results of body parsers, without having to touch the underlying Iteratee implementation.

    def map [B](f: A ⇒ B): BodyParser[B]
    def mapM[B](f: A ⇒ Future[B]): BodyParser[B]
    
    def flatMap [B](f: A ⇒ BodyParser[B]): BodyParser[B]
    def flatMapM[B](f: A ⇒ Future[BodyParser[B]]): BodyParser[B]
    
    def validate [B](f: A ⇒ Either[SimpleResult, B]): BodyParser[B]
    def validateM[B](f: A ⇒ Future[Either[SimpleResult, B]]): BodyParser[B]
    
    type:improvement 
    opened by dwhjames 51
  • Improved dist task

    Improved dist task

    Use sbt's packager plugin to produce universal distributions as part of Play's dist task i.e. produce zip and tar.gz archives.

    Today

    Play presently produces a zip file in a project's dist folder using the "dist" task. The zip file has the following layout:

    lib/
      <libraries - jars etc.>
    README
    start
    

    For 2.2

    The following changes are proposed:

    • change the use of Play's dist folder so that it becomes the default contents for distribution (at the moment it is the target of the dist command);
    • change the layout within the archives given that the packager's tools adopt a certain convention;
    • defer to the packaging plugin as to the type of archive that should be created i.e. Play's dist will no longer produce a zip as the user may desire another form.

    The following packaging plugin conventions will be adopted by Play for its dist file layout:

    bin/
      <The start script, though with a name the same as the appName Play sbt key>
    lib/
      <libraries - jars etc.>
    conf/
      <
        everything from the project's conf folder except the routes file.
        application.conf will be located here via a config.file property 
        declaration in the start script.
      >
    share/
      doc/
        api/
          <Exists if there are contents in the project's target/api folder>
    README
    

    "play dist" will continue to produce a zip file by default. The only difference is that the start script is located in the bin folder.

    Links

    https://github.com/sbt/sbt-native-packager http://scala-sbt.org/sbt-native-packager

    opened by huntc 49
  • Ensure that reverse routing works with vanilla play idea from Java project in IntelliJ

    Ensure that reverse routing works with vanilla play idea from Java project in IntelliJ

    In a Java project, IntelliJ seems to consider reverse routes as syntax errors in.

    opened by jroper 49
  • Add injection provider to allow for dependency injection of plugins

    Add injection provider to allow for dependency injection of plugins

    This is an attempt to fix #1389, making it possible to use a dependency injection framework with Play plugins.

    opened by gmethvin 49
  • WS play.ws.ssl.loose.disableHostnameVerification=true doesn't work?

    WS play.ws.ssl.loose.disableHostnameVerification=true doesn't work?

    I have set play.ws.ssl.loose.disableHostnameVerification=true and then call a web service on localhost that is known to return a certificate for not-localhost (See this async-http-client issue for the details), but the call still fails as per the log extract below.

    Windows 8, Play 2.4.1, Scala 2.11.7, Java 8.0_45.

    C:\work\play_web>activator run
    [info] Loading project definition from C:\work\play_web\project
    [info] Set current project to play_web (in build file:/C:/work/play_web/)
    Warning: node.js detection failed, sbt will use the Rhino based Trireme JavaScript engine instead to run JavaScript assets compilation, which in some
    cases may be orders of magnitude slower than using node.js.
    
    --- (Running the application, auto-reloading is enabled) ---
    
    [info] p.a.l.c.ActorSystemProvider - Starting application default Akka system: application
    [info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
    
    (Server started, use Ctrl+D to stop and go back to the console...)
    
    [info] Compiling 1 Scala source to C:\work\play_web\target\scala-2.11\classes...
    WARN application - Logger configuration in conf files is deprecated and has no effect. Use a logback configuration file instead.
    INFO application - Creating Pool for datasource 'default'
    INFO p.a.d.DefaultDBApi - Database [default] connected at jdbc:mysql://localhost/play_dev?useUnicode=yes&characterEncoding=UTF-8&connectionCollation=utf8_general_ci
    INFO p.a.l.c.ActorSystemProvider - Starting application default Akka system: application
    INFO play.api.Play - Application started (Dev)
    WARN p.a.l.w.n.NingAsyncHttpClientConfigBuilder - buildHostnameVerifier: disabling hostname verification
    ERROR application - elb failed to fetch example.com https://localhost/monit
    java.net.ConnectException: General SSLEngine problem
            at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure(NettyConnectListener.java:128) ~[async-http-client-1.9.21.jar:na]
            at com.ning.http.client.providers.netty.request.NettyConnectListener.access$200(NettyConnectListener.java:37) ~[async-http-client-1.9.21.jar:na]
            at com.ning.http.client.providers.netty.request.NettyConnectListener$1.operationComplete(NettyConnectListener.java:101) ~[async-http-client-1.9.21.jar:na]
            at org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:409) ~[netty-3.10.3.Final.jar:na]
            at org.jboss.netty.channel.DefaultChannelFuture.notifyListeners(DefaultChannelFuture.java:395) ~[netty-3.10.3.Final.jar:na]
    Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
            at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1431) ~[na:1.8.0_45]
            at sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535) ~[na:1.8.0_45]
            at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:813) ~[na:1.8.0_45]
            at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) ~[na:1.8.0_45]
            at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) ~[na:1.8.0_45]
    Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine problem
            at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_45]
            at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) ~[na:1.8.0_45]
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:304) ~[na:1.8.0_45]
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) ~[na:1.8.0_45]
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1478) ~[na:1.8.0_45]
    Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching localhost found.
            at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:204) ~[na:1.8.0_45]
            at sun.security.util.HostnameChecker.match(HostnameChecker.java:95) ~[na:1.8.0_45]
            at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455) ~[na:1.8.0_45]
            at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436) ~[na:1.8.0_45]
            at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252) ~[na:1.8.0_45]     
    
    opened by jxtps 48
  • Not detecting changes in twirl files in sub-project (when PlayLayoutPlugin is disabled)

    Not detecting changes in twirl files in sub-project (when PlayLayoutPlugin is disabled)

    See https://github.com/playframework/playframework/issues/4715#issuecomment-690277992

    opened by mkurz 0
  • Add SameParty cookie attribute (?)

    Add SameParty cookie attribute (?)

    If we add it, we should do it with the 2.9 release, because MiMA will complain, so we can't really add it afterwards. See https://www.chromestatus.com/feature/5280634094223360

    opened by mkurz 0
  • Java 16

    Java 16

    Let's see how well Play plays with Java 16. The goal here is to make Play work with upcoming Java 17 (release date: 2021/09/14) as early as possible, because just like Java 11, Java 17 will be a LTS version.

    • [x] validate (see below)
    • [x] compile
    • [x] publishLocal
    • [x] tests
    • [ ] integration tests (see below)
    • [ ] scripted tests

    WIP: ---add-exports

    scripted tests: https://travis-ci.com/github/playframework/playframework/jobs/498243543#L5170-L5174


    Microbenchmark and integration tests with akka's http2 endpoint fail

    Failed Integration tests: https://travis-ci.com/github/playframework/playframework/jobs/498389129 See all the java.net.SocketTimeoutExceptions, http2 does not start. Also see the bottom of the logs, you will see the InaccessibleObjectExceptions.

    Failed microbenchmarks: https://travis-ci.com/github/playframework/playframework/jobs/498367902#L1934-L1942

    Error log
    ...
    [info] # JMH version: 1.25
    [info] # VM version: JDK 16, OpenJDK 64-Bit Server VM, 16+36
    [info] # VM invoker: /home/travis/.jabba/jdk/1.16.0-custom/bin/java
    [info] # VM options: --add-exports=java.base/sun.security.x509=ALL-UNNAMED -XX:MaxMetaspaceSize=384m -Xmx512m -Xms128m
    [info] # Warmup: <none>
    [info] # Measurement: 1 iterations, 10 s each
    [info] # Timeout: 10 min per iteration
    [info] # Threads: 1 thread, will synchronize iterations
    [info] # Benchmark mode: Throughput, ops/time
    [info] # Benchmark: play.microbenchmark.it.HelloWorldBenchmark.helloWorld
    [info] # Parameters: (endpoint = ak-20-enc, reqsPerConn = 5)
    [info] # Run progress: 88.89% complete, ETA 00:00:13
    [info] # Fork: 1 of 1
    [info] Picked up JAVA_TOOL_OPTIONS: --add-exports=java.base/sun.security.x509=ALL-UNNAMED
    [info] Iteration   1: ERROR a.a.OneForOneStrategy - Unable to make public void sun.security.ssl.SSLEngineImpl.setHandshakeApplicationProtocolSelector(java.util.function.BiFunction) accessible: module java.base does not "opens sun.security.ssl" to unnamed module @5a2e4553
    [info] akka.actor.ActorInitializationException: akka://application/system/Materializers/StreamSupervisor-0/TLS-for-flow-1-1: exception during creation
    [info] 	at akka.actor.ActorInitializationException$.apply(Actor.scala:196)
    [info] Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make public void sun.security.ssl.SSLEngineImpl.setHandshakeApplicationProtocolSelector(java.util.function.BiFunction) accessible: module java.base does not "opens sun.security.ssl" to unnamed module @5a2e4553
    [info] 	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    ...
    

    Validate docs fail (but not relevant for now) https://travis-ci.com/github/playframework/playframework/jobs/497685525#L4256

    Error log
    [error] java.lang.RuntimeException: Error creating extended parser class: Could not determine whether class 'play.doc.CodeReferenceParser$$parboiled' has already been loaded
    [error] 	at org.parboiled.Parboiled.createParser(Parboiled.java:58)
    [error] 	at org.pegdown.plugins.PegDownPlugins$Builder.withPlugin(PegDownPlugins.java:126)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.parseMarkdownFile$1(PlayDocsValidation.scala:125)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.$anonfun$generateMarkdownRefReportTask$3(PlayDocsValidation.scala:209)
    [error] 	at scala.collection.Iterator.foreach(Iterator.scala:943)
    [error] 	at scala.collection.Iterator.foreach$(Iterator.scala:943)
    [error] 	at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
    [error] 	at scala.collection.IterableLike.foreach(IterableLike.scala:74)
    [error] 	at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
    [error] 	at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.$anonfun$generateMarkdownRefReportTask$1(PlayDocsValidation.scala:209)
    [error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
    [error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
    [error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
    [error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
    [error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
    [error] 	at sbt.Execute.work(Execute.scala:291)
    [error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
    [error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
    [error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
    [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    [error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    [error] 	at java.base/java.lang.Thread.run(Thread.java:831)
    [error] Caused by: java.lang.RuntimeException: Could not determine whether class 'play.doc.CodeReferenceParser$$parboiled' has already been loaded
    [error] 	at org.parboiled.transform.AsmUtils.findLoadedClass(AsmUtils.java:213)
    [error] 	at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:35)
    [error] 	at org.parboiled.Parboiled.createParser(Parboiled.java:54)
    [error] 	at org.pegdown.plugins.PegDownPlugins$Builder.withPlugin(PegDownPlugins.java:126)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.parseMarkdownFile$1(PlayDocsValidation.scala:125)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.$anonfun$generateMarkdownRefReportTask$3(PlayDocsValidation.scala:209)
    [error] 	at scala.collection.Iterator.foreach(Iterator.scala:943)
    [error] 	at scala.collection.Iterator.foreach$(Iterator.scala:943)
    [error] 	at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
    [error] 	at scala.collection.IterableLike.foreach(IterableLike.scala:74)
    [error] 	at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
    [error] 	at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.$anonfun$generateMarkdownRefReportTask$1(PlayDocsValidation.scala:209)
    [error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
    [error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
    [error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
    [error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
    [error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
    [error] 	at sbt.Execute.work(Execute.scala:291)
    [error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
    [error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
    [error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
    [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    [error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    [error] 	at java.base/java.lang.Thread.run(Thread.java:831)
    [error] Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) accessible: module java.base does not "opens java.lang" to unnamed module @79600226
    [error] 	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
    [error] 	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    [error] 	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    [error] 	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    [error] 	at org.parboiled.transform.AsmUtils.findLoadedClass(AsmUtils.java:206)
    [error] 	at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:35)
    [error] 	at org.parboiled.Parboiled.createParser(Parboiled.java:54)
    [error] 	at org.pegdown.plugins.PegDownPlugins$Builder.withPlugin(PegDownPlugins.java:126)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.parseMarkdownFile$1(PlayDocsValidation.scala:125)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.$anonfun$generateMarkdownRefReportTask$3(PlayDocsValidation.scala:209)
    [error] 	at scala.collection.Iterator.foreach(Iterator.scala:943)
    [error] 	at scala.collection.Iterator.foreach$(Iterator.scala:943)
    [error] 	at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
    [error] 	at scala.collection.IterableLike.foreach(IterableLike.scala:74)
    [error] 	at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
    [error] 	at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
    [error] 	at com.typesafe.play.docs.sbtplugin.PlayDocsValidation$.$anonfun$generateMarkdownRefReportTask$1(PlayDocsValidation.scala:209)
    [error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
    [error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
    [error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
    [error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
    [error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
    [error] 	at sbt.Execute.work(Execute.scala:291)
    [error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
    [error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
    [error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
    [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    [error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    [error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    [error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    [error] 	at java.base/java.lang.Thread.run(Thread.java:831)
    [error] (generateMarkdownRefReport) Error creating extended parser class: Could not determine whether class 'play.doc.CodeReferenceParser$$parboiled' has already been loaded
    

    Line that causes the exception. Problem: play-docs depends on unmaintained pegdown 1.6.0 (which is discussed here already), which depends on outdated parboiled-java 1.1.7, which depends on outdated ASM version 5.0.3 that has no support for newer JDKs. Even current parboiled 1.3.1 (which is the latest versions as time of this writing) only includes ASM 7.1, which still does not support Java 16. Only parboiled's master branch already depends on latest ASM 9.1. However, this problem is not urgent and does not block Play from supporting Java 17, because this is "just" about "Validate docs (links, sample code, etc.)". We can and will continue running this jobs with Java 8, and even if ditch Java 8, we will probably only move the Java 11 as next step which will still work. So I think we are good for a couple more years (I mean in theory, we can even run this validation jobs with Java 8/11 forever). We could also try to just override the ASM dependency, maybe that would be enough(?)

    status:block-merge 
    opened by mkurz 0
  • Sbt warning since using sbt 1.5

    Sbt warning since using sbt 1.5

    sbt 1.5 has deprecated some old syntax. When bumping the sbt version to 1.5 a handful of syntax warning started appearing.

    It'd be good to do a bit of a cleanup.

    opened by ignasi35 0
  • Fixed `###replace:` tag that led to incorrect docs

    Fixed `###replace:` tag that led to incorrect docs

    Fixes

    Documentation that is incorrect: before

    public Result index() {
           return ok(views.html.index.render("Your new application is
      return ok(javaguide.hello.html.index.render("Your new application is ready.", assetsFinder));
    }
    

    According to https://www.playframework.com/documentation/2.8.x/Documentation ###replace: foo — Replace the next line with foo. You may optionally terminate this command with ###

    The code sample that was to be run, tested, and injected into the documentation was split into multiple lines (likely by an autoformatter) which made the documentation for the java example incorrect.

    This PR changes the 'replace' to one line, and also reduces the whitespace on the left to prevent the autoformatter from splitting the line into two.

    Pull Request Checklist

    • [x] Have you read How to write the perfect pull request?
    • [x] Have you read through the contributor guidelines?
    • [x] Have you signed the Lightbend CLA?
    • [x] Have you referenced any issues you're fixing using commit message keywords?
    • [x] Have you added copyright headers to new files?
    • [x] Have you checked that both Scala and Java APIs are updated?
    • [x] Have you updated the documentation for both Scala and Java sections?
    • [x] Have you added tests for any changed functionality?
    topic:documentation 
    opened by arid-mangoss 0
  • replace deprecated hibernate-jpa-2.1-api dependency with official javax.persistence-api

    replace deprecated hibernate-jpa-2.1-api dependency with official javax.persistence-api

    Pull Request Checklist

    • [x] Have you read How to write the perfect pull request?
    • [x] Have you read through the contributor guidelines?
    • [x] Have you signed the Lightbend CLA?
    • [x] Have you referenced any issues you're fixing using commit message keywords?
    • [x] Have you added copyright headers to new files?
    • [x] Have you checked that both Scala and Java APIs are updated?
    • [x] Have you updated the documentation for both Scala and Java sections?
    • [x] Have you added tests for any changed functionality?

    Helpful things

    Fixes

    Fixes #10785

    Purpose

    This PR replaces the deprecated org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.2.0.Final with javax.persistence:javax.persistence-api:2.2 as stated in the project page as well -> https://github.com/hibernate/hibernate-jpa-api

    New dependency added as provided to make sure that it'll be available during compilation but not part of the dependencies, since Hibernate already has a dependency to its supported version of JPA. This way, unless there's no breaking changes in the new JPA APIs, users can upgrade their Hibernate version without having multiple versions of the JPA API.

    Also, instead of current JPA 2.1, JPA 2.2 API added since current supported Hibernate version, 5.4.x, supports 2.2 + this is compile-only, Hibernate 5.4 brings JPA 2.2 dependency anyway.

    Note: I didn't update the persistence.xml file in the play-java-jpa/src/test/resources/META-INF, if requested, I can also update it to 2.2.

    Background Context

    To remove deprecated libraries.

    References

    Are there any relevant issues / PRs / mailing lists discussions?

    opened by gokhanoner 6
  • Unnecessary/deprecated hibernate-jpa import

    Unnecessary/deprecated hibernate-jpa import

    Play has a dependency to "org.hibernate.javax.persistence" % "hibernate-jpa-2.1-api" % "1.0.2.Final"

    Hibernate 5.4, current Hibernate version used by play, itself already has a dependency to "javax.persistence" % "javax.persistence-api" % "2.2" so I don't believe this import is necessary + documentation of this dependency also mentions same -> https://github.com/hibernate/hibernate-jpa-api

    opened by gokhanoner 2
  • Update caffeine, jcache to 3.0.1

    Update caffeine, jcache to 3.0.1

    Updates

    from 2.9.0 to 3.0.1. GitHub Release Notes - Version Diff

    I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.

    If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.

    Configure Scala Steward for your repository with a .scala-steward.conf file.

    Have a fantastic day writing Scala!

    Files still referring to the old version number

    The following files still refer to the old version number (2.9.0). You might want to review and update them manually.

    core/play/src/main/java/play/mvc/BodyParser.java
    core/play/src/main/scala/play/api/http/HttpRequestHandler.scala
    core/play/src/main/scala/play/api/mvc/BodyParsers.scala
    core/play/src/main/scala/play/core/parsers/Multipart.scala
    documentation/manual/releases/release29/migration29/Migration29.md
    persistence/play-jdbc/src/main/scala/play/api/db/HikariCPModule.scala
    web/play-filters-helpers/src/main/scala/play/filters/csp/CSPReportActionBuilder.scala
    
    Ignore future updates

    Add this to your .scala-steward.conf file to ignore future updates of this dependency:

    updates.ignore = [ { groupId = "com.github.ben-manes.caffeine" } ]
    

    labels: library-update, semver-major, old-version-remains

    topic:jdk-next type:updates 
    opened by scala-steward 3
  • akka-http waits indefinitely for data after sending '100 Continue' when `Content-Length` header is missing or 0

    akka-http waits indefinitely for data after sending '100 Continue' when `Content-Length` header is missing or 0

    When two consecutive request(GET or POST) are made with the header Expect:100-continue set, second request receives no response and a idle timeout occurs, First request is serviced immediately, but the second request is not passed to the controller or responded, blocking the client and any intermediate reverse proxy. Idle timeout setting play.server.http.idleTimeout can be used to control Playtimeout, by default this is 75 seconds.

    Versions. 2.7 & 2.8 - looks like only akka http backends are affected by this issue, 2.5 with Netty backend is not affected.

    It is very straightforward to reproduce this issue, you can even use postman with the Play sample project - play-samples-play-java-hello-world-tutorial

    Request 1

    Request Headers

    Expect: 100-continue
    User-Agent: PostmanRuntime/7.26.8
    Accept: */*
    Postman-Token: 11acd3d2-84ff-4967-a5ce-05d90f15e63f
    Host: localhost:9000
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive
    

    Response Headers

    Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block
    X-Content-Type-Options: nosniff
    X-Permitted-Cross-Domain-Policies: master-only
    Date: Mon, 01 Mar 2021 06:03:15 GMT
    Content-Type: text/html; charset=UTF-8
    

    Request 2 - Timeout after 75 seconds

    GET http://localhost:9000/
    Error: read ECONNRESET
    

    Request Headers

    Expect: 100-continue
    User-Agent: PostmanRuntime/7.26.8
    Accept: */*
    Postman-Token: 8e453fdb-559b-4c25-a22c-3f2665f63714
    Host: localhost:9000
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive
    

    After upgrade from v2.5 we are experiencing significant issues with our integrations, it true the request is not proper, but the server should respond.

    I am also interested in any short term fixes we can apply at an application level to mitigate the issue

    opened by ProChirathF 12
  • Do not extend AnyVal which triggers wrong QueryString/PathBindable

    Do not extend AnyVal which triggers wrong QueryString/PathBindable

    I have no idea why in #7621 those UserId classes were made to extends AnyVal. Back when that pull request was merged, that didn't matter. Let's again look at the code of that pull request (and that code still is alive in master):

    https://github.com/playframework/playframework/blob/b2645bd3bf508546f377f926457bf64d83897951/dev-mode/sbt-plugin/src/sbt-test/play-sbt-plugin/routes-compiler-injected-routes-compilation/app/models/UserId.scala#L12-L27

    As you can see an implicit pathBindable and queryStringBindable were added as well. Great, that worked.

    However, a couple of month later following pull requests were merged as well: #8076 and #8093 Merging those two pull request made the above pathBindable/queryStringBindable useless, because now the newly added Path/QueryStringBindable's for AnyVal kick in and the above ones just get ignored.

    I ran into this when hacking on scripted tests and changed the above bindables, but nothing happend...Took me a while to figure out what's actually going on. When removing the AnyVal extends, above binders will be used again. I think that was the original meaning and sense of those binders, not introducing them so they are dead code...

    status:block-merge 
    opened by mkurz 4
Releases(2.8.8)
  • 2.8.8(Apr 8, 2021)

    :mega: Play 2.8.8 Released

    The Play Team is happy to announce the releases of Play 2.8.8.

    :green_book: What is new?

    The following are the relevant changes of this bugfix release:

    • Bump akka 2.6.14 #10806 by @ignasi35 which includes the bump to Jackson 2.11.x #10788 by @mergify.
    • Add empty parentheses () to generated reverse route method depending on routes file (bp #10671) #10673 by @mergify. This is related to https://github.com/scala/scala/releases/tag/v2.13.3 and will likely introduce compilation errors on your code.
    • Play no longer uses Bintray to distribute the sbt plugin #10804 by @ignasi35
    • Add support for sbt 1.5.0 (bp #10796) #10799 by @mergify
    • Make the routes generated sources reproducible #10735 by @mergify

    Following pull requests got merged for this release:

    • Bump akka 2.6.14 #10806 by @ignasi35
    • Sunset bintray 2.1.x #10804 by @ignasi35
    • Fix: Playdevmode compiles twice (requires sbt 1.4+) #10373
    • Akka-Http-Server: allow Headers.remove() to remove Content-Type and Content-Length (bp #10797) #10801 by @mergify
    • Run scripted tests with sbt 1.5.0 (bp #10796) #10799 by @mergify
    • Update netty-transport-native-epoll to 4.1.63.Final (bp #10795) #10798 by @mergify
    • Bump Jackson to 2.11.x (bp #10781) #10788 by @mergify
    • revert changes to playCommonClassloaderTask since we are using scala 2.12.13 (bp #10782) #10783 by @mergify
    • Make public DatabaseEvolutions.databaseEvolutions() (bp #10754) #10779 by @mergify
    • [2.8.x] Add release-drafter workflow for 2.8.x branch + docs update #10775 by @mkurz
    • [2.8.x] Upgrade dependencies before releasing Play 2.8.8 #10767 by @mkurz
    • Update play-file-watch to 1.1.16 (bp #10759) #10761 by @mergify
    • [2.8.x] Run scripted tests on sbt 1.4.x + refactoring #10723 by @mkurz
    • fix Int overflow in BodyParsers.anyContent(maxLength: Option[Long]) (bp #10741) #10753 by @mergify
    • Routes compiler: Remove generation date, keep the source relative (bp #10707) #10735 by @mergify
    • Update play-file-watch to 1.1.15 (bp #10736) #10737 by @mergify
    • [2.8.x] Support sbt 1.4 virtual files for compilation and config errors #10712 by @mkurz
    • gitignore .bsp folder (Build Server Protocol / sbt 1.4) (bp #10631) #10722 by @mergify
    • Scala 2.12.13 and 2.13.5 (bp #10718) #10721 by @mergify
    • Upgrade akka and akka-http (bp #10717) #10719 by @mergify
    • Catch Throwable instead of NonFatal when starting prod server (bp #10690) #10701 by @mergify
    • QueryStringBindable.unbind(): Do-do-do URLEncode for all queryString keys! (bp #10370) #10694 by @mergify
    • Add type annotation for Optional.empty (bp #10442) #10688 by @mergify
    • Java forms should handle "foo[].bar" fields when using subforms (index missing) (bp #10680) #10682 by @mergify
    • Java forms: Prefix a ValidationError's key with parent form field key (bp #10666) #10678 by @mergify
    • [2.8.x] Support sbt 1.4 virtual files when displaying error source #10649 by @mkurz
    • Add empty parentheses () to generated reverse route method depending on routes file (bp #10671) #10673 by @mergify
    • Don't reload/(re-)compile or even start an app when shutting down in DEV mode (bp #10661) #10669 by @mergify
    • In DEV mode, only set the editor in the error handler if config is valid (bp #10662) #10663 by @mergify
    • Fix classloader memory leak, due to ClassTag (bp #10500) #10658 by @mergify
    • build: Switch to using javafmtCheckAll (new version) (bp #9960) #10652 by @mergify
    • fix DefaultTemporaryFileCreator leak (bp #10498) #10653 by @mergify
    • Fix build cache issues (bp #10014) #10651 by @mergify
    • Close digest-files in DefaultAssetsMetadata (bp #10639) #10646 by @mergify
    • Caffeine Cache Manager - Expose cache names (bp #10637) #10645 by @mergify
    • Correct the HostMatcher logic to get host and port (bp #10456) #10632 by @mergify
    • shutdown-happy-path: make test more reliable (bp #10598) #10600 by @mergify

    For more details see the full list of changes and the 2.8.8 milestone.

    :bow: Credits

    Special thanks to @mkurz for his continued contributions and insight to push Play forward, and, in this release in particular, for the extra work to make the release come true.

    Also, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    @Captain1653, @asazernik, @benwaffle, @dwijnand, @eatkins, @gokhanoner, @helllamer, @ignasi35, @jtjeferreira, @marcospereira, @mkurz, @octonato, @pazvanti, @pschichtel, @raboof and @xuwei-k

    Source code(tar.gz)
    Source code(zip)
  • 2.7.9(Dec 16, 2020)

    :mega: Play 2.7.9 Released

    The Play Team is happy to announce the releases of Play 2.8.7 and Play 2.7.9.

    As we found a regression just after building the 2.8.6 and 2.7.8 releases, we followed up on those without announcing them.

    :green_book: What is new?

    The following are the relevant changes of this bugfix release:

    • Let user overwrite limit memory size on form binding #10543
    • The Play Runner now works on Mac OS Big Sur #10372
    • We publish a Maven BOM pom.xml for Play 2.8 #10549

    For more details see the full list of changes and the 2.7.8 and 2.7.9 milestones.

    Migration

    To make the form binding size limit configurable, some sources may need adaptation to make the FormBinding implicits available (see Parser maxMemoryBuffer limits).

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.7(Dec 16, 2020)

    :mega: Play 2.8.7 Released

    The Play Team is happy to announce the releases of Play 2.8.7 and Play 2.7.9.

    As we found a regression just after building the 2.8.6 and 2.7.8 releases, we followed up on those without announcing them.

    :green_book: What is new?

    The following are the relevant changes of this bugfix release:

    • Let user overwrite limit memory size on form binding #10543
    • The Play Runner now works on Mac OS Big Sur #10372
    • We publish a Maven BOM pom.xml for Play 2.8 #10549

    For more details see the full list of changes and the 2.8.6 and 2.8.7 milestones.

    Migration

    To make the form binding size limit configurable, some sources may need adaptation to make the FormBinding implicits available (see Parser maxMemoryBuffer limits).

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.5(Nov 9, 2020)

    :mega: Play 2.8.5 Released

    The Play Team is proud to announce the release of Play 2.8.5.

    :green_book: What is new?

    The following is the main change of this bugfix release:

    • (regression since 2.8.0) Json.toJson is serializing private fields by default for Jackson (https://github.com/playframework/playframework/pull/10523). This is potentially a data leak for users handling sensitive data on private fields of classes serialized as JSON.

    Other improvements in this release:

    • Remove the deprecated FakeKeyStore (https://github.com/playframework/playframework/pull/10487)

    For more details see the full list of changes and the 2.8.5 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.5 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.7.7(Nov 5, 2020)

    :mega: Play 2.7.7 Released

    The Play Team is proud to announce the release of Play 2.7.7.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • (regression) JsonNode deserializer support for @JsonRawValue as module (https://github.com/playframework/playframework/pull/10510)

    For more details see the full list of changes and the 2.7.7 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.7.7 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Renato Cavalcanti
    • Ignasi Marimon-Clos
    Source code(tar.gz)
    Source code(zip)
  • 2.8.4(Nov 5, 2020)

    :mega: Play 2.8.4 Released

    The Play Team is proud to announce the release of Play 2.8.4.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • (regression) JsonNode deserializer support for @JsonRawValue as module (https://github.com/playframework/playframework/pull/10508)
    • Extend data embedded into the synthetic PlayVersion (https://github.com/playframework/playframework/pull/10519)

    For more details see the full list of changes and the 2.8.4 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.4 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.7.6(Oct 27, 2020)

    :mega: Play 2.7.6 Released

    The Play Team is proud to announce the release of Play 2.7.6.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • Security Fix - Jsonnode deserializer as module (https://github.com/playframework/playframework/pull/10496) - read related CVE announcement
    • Security Fix - Json parse on forms (https://github.com/playframework/playframework/pull/10496) - read related CVE announcement
    • Re-enabling cross compilation for routes-compiler (https://github.com/playframework/playframework/pull/10354)
    • Fix gzip buffering (https://github.com/playframework/playframework/pull/10429)

    For more details see the full list of changes and the 2.7.6 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.3 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Arnout Engelen
    • Ignasi Marimon-Clos
    • Johannes Rudolph
    • Play Team
    • Renato Cavalcanti
    • Sebastien Coquelin
    Source code(tar.gz)
    Source code(zip)
  • 2.8.3(Oct 26, 2020)

    :mega: Play 2.8.3 Released

    The Play Team is proud to announce the release of Play 2.8.3.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • Security Fix - Jsonnode deserializer as module (https://github.com/playframework/playframework/pull/10495) - read related CVE announcement
    • Security Fix - Json parse on forms (https://github.com/playframework/playframework/pull/10495) - read related CVE announcement
    • AkkaHttpServer: prevent access to not yet initialized fields (https://github.com/playframework/playframework/pull/10323)
    • Support injecting default NamedCaffeineCache (https://github.com/playframework/playframework/pull/10359)
    • Adds ClassActorSystemProvider in the DI (https://github.com/playframework/playframework/pull/10382)
    • Fixes int binder error message and provides specs (https://github.com/playframework/playframework/pull/10413)
    • Fix gzip buffering (https://github.com/playframework/playframework/pull/10428)

    For more details see the full list of changes and the 2.8.3 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.3 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Al-Mothafar Al-Hasan
    • Alec Theriault
    • Arnout Engelen
    • David Pinn
    • Geoffrey Yip
    • Ignasi Marimon-Clos
    • Jacob Wahlgren
    • James Roper
    • Marcos Pereira
    • Matthias Kurz
    • Renato Cavalcanti
    • Suiyi Fu
    • Valy Dia
    • Will Sargent
    • joe gichuru
    • slisaasquatch
    Source code(tar.gz)
    Source code(zip)
  • 2.7.5(May 20, 2020)

    :mega: Play 2.7.5 Released

    The Play Team is proud to announce the release of Play 2.7.5.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • Fix HTTP/2 support for JDK8 after u252 #10281
    • Fixed CSRF handling for invalid content types #10293
    • artifacts for Scala 2.13 are compiled using 2.13.2 #10279

    For more details see the full list of changes and the 2.7.5 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.7.5 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Matthias Kurz
    • Renato Cavalcanti
    • Ignasi Marimon-Clos
    • Dale Wijnand
    • Marcos Pereira
    • Suiyi Fu
    • Greg Methvin
    • James Roper
    • Jacob Wahlgren
    Source code(tar.gz)
    Source code(zip)
  • 2.8.2(May 21, 2020)

    :mega: Play 2.8.2 Released

    The Play Team is proud to announce the release of Play 2.8.2.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • fix HTTP/2 support for JDK8 after u252 #10274
    • fixed CSRF handling for invalid content types #10289
    • artifacts for Scala 2.13 are compiled using 2.13.2 #10279
    • allow uploading empty files #10113
    • file upload temporary folder is unique again#10194
    • support compile-time injection of named caches (Caffeine) #10070

    For more details see the full list of changes and the 2.8.2 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.2 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Matthias Kurz
    • Arnout Engelen
    • Suiyi Fu
    • Marcos Pereira
    • slisaasquatch
    • joe gichuru
    • Renato Cavalcanti
    • Alec Theriault
    • Will Sargent
    • Al-Mothafar Al-Hasan
    • Jacob Wahlgren
    • Valy Dia
    • David Pinn
    • Geoffrey Yip
    Source code(tar.gz)
    Source code(zip)
  • 2.8.1(Feb 1, 2020)

    :mega: Play 2.8.1 Released

    The Play Team is proud to announce the release of Play 2.8.1.

    :green_book: What is new?

    The following are the main changes of this bugfix release:

    • Fix -Dconfig.resource in dev-mode. #9972 / #9978 / #10010
    • Gracefully shutdown Akka HTTP server using terminate. #8453 / #9737 / #9970
    • Use execute instead of executeQuery to lock evolutions. #9839 / #10005
    • Upgrade Akka to 2.6.3. #10016
    • Undeprecate Cookies, deprecate extends CookieHeaderEncoding #9939

    For more details see the full list of changes and the 2.8.1 milestone.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.1 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Matthias Kurz: @mkurz
    • Marcos Pereira: @marcospereira
    • Renato Cavalcanti: @renatocaval
    • Dale Wijnand: @dwijnand
    Source code(tar.gz)
    Source code(zip)
  • 2.8.0(Dec 13, 2019)

    :mega: Play 2.8.0 Released

    The Play Team is proud to announce the release of Play 2.8.0. This release adds many new features and continues our efforts to make Play more modular, flexible, and secure. Play 2.8.0 is the result of more than 10 months of relentless work from our fantastic community, comprehending more than a thousand changes made from 80 contributors.

    :green_book: What is new?

    The highlights in Play 2.8.0 include, but are not limited by:

    Akka 2.6

    Akka 2.6.0 was released a little over a month ago, and it has new APIs with type-safety for Akka Actors, better stability for Akka Cluster with Artery, and improved serialization.

    Play 2.8.0 integrates Akka Typed with Dependency Injection, full integration with Akka Jackson support, and initial support for Akka Cluster Sharding Typed. These lay down the basis to evolve integration with multiple Akka Typed APIs, such as Akka Persistence Typed.

    Scala 2.13

    Play 2.8.0 not only supports Scala 2.13 but uses it as the default version. Play, all the samples, and seeds all use Scala 2.13 by default now.

    Java 11

    Play 2.8.0 is the first version were we officially support Java 11. Play, its standalone modules, samples and seeds are all tested against AdoptOpenJDK 8 & 11. We continue to support Java 8 as the default version.

    Final changes to remove Global State

    This was a long journey we started a few versions ago, deprecating the APIs, providing dependency injection support, and many other changes. Therefore, Play 2.8 removes APIs such as Play.current, Play.maybeApplication, and others that depend on them.

    Improvements to Results APIs

    Many minor improvements were made in the Java API: sendFile, sendPath and sendResource now support an onClose callback; send* methods now accept a parameter to set Content-Type header; the type parameter for file names when serving files is now an Optional which makes the API nicer when you need to send Optional.empty (instead of null). Moreover, Range results now support to pre-seek the Source when returning results for requests containing a Range header.

    :gift: Updated Dependencies

    Besides updates to newer versions of our own libraries (play-json, play-ws, twirl, cachecontrol, etc), many other important dependencies were updated to the newest versions:

    • specs2 4.8.1
    • Jackson 2.10.1
    • Mockito 3.2.0
    • HikariCP 3.4.1
    • Hibernate Validator 6.1.0.Final
    • Lightbend Config 1.4.0
    • Caffeine 2.8.0
    • sbt-native-packager 1.5.1

    As usual, you can see the more details of those new features in the release highlights and learn how to migrate in our migration guide.

    :world_map: How to start or migrate to Play 2.8

    To get started with Play, follow the instructions in our Getting Started page. And if you need to migrate from an older version to Play 2.8, see our migration guide.

    :bow: Thanks to our contributors

    Finally, many, many thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    commits   added  removed
        231   17330     7071 Matthias Kurz
        155    7104     3190 Marcos Pereira
        154   29514    21862 Dale Wijnand
         88     105      105 Scala Steward
         53     920     2376 Renato Cavalcanti
         43     829      536 gurkankaymak
         42    2256      432 Ignasi Marimon-Clos
         16     129      990 Will Sargent
         12     734      836 Greg Methvin
          9      11        9 Albaro Pereyra
          6      72       46 Regan Koopmans
          5      10       10 sullis
          4      16       16 Bryant Larsen
          4     199      206 João Ferreira
          4      43        6 Eugene Yokota
          4      30       36 Roman Parshikov
          4      16        3 John Duffell
          4     178       54 yuuri111
          4     296       25 Nick Howes
          3       4        5 Jafer Khan
          3      69        6 Jakub Kozłowski
          3      48       57 Ruth Stento
          3     106       25 Arnout Engelen
          3       8       22 warrior911
          3      20        0 Ivan Toporkov
          3      63       21 golemiso
          3       9        9 James Roper
          3      38       38 Lukas Rytz
          2      17       15 To-om
          2      16        2 Rafael Zanella
          2       4        4 John Gutierrez
          2      18        3 Philippe Vinchon
          2       2        2 Natsumi
          2      56        0 Radim Kolar
          2       7        9 yohei.naruse
          2       3        1 Emmanuel Guiton
          2      46       12 ctoomey
          2       2        2 Byron Weber Becker
          2       2        2 Valentin Stoyanov
          2       8        8 duncangodwin
          2      53        0 a1kemist
          2     428       15 Peerapat A
          2      61       41 xuwei-k
          2      48       48 Hajime Shiozawa
          2      42        0 Geovanny Junio
          2       5        1 Felix
          2    1416        4 Gabriel Klappenbach
          2       6        3 Dominik Dorn
          2      35        5 Ander Parra
          1       2        2 Benoit Lemoine
          1       2        2 YourPsychiatrist
          1       2        0 Henri Cook
          1       2        1 igarashi-kazuya
          1     109        8 Mat2095
          1       0        1 Naoki Takezoe
          1      58        0 morellik
          1       0       37 Tim Moore
          1      56        0 Cédric Chantepie
          1      19        1 Yinan Ding
          1      15        5 Emmanuel GUITON
          1       1        1 Owen Miller
          1      32        5 Brandon Brown
          1       4        4 takashima0411
          1      10        7 Seung-Zin Nam
          1       0       10 Johannes Rudolph
          1       1        1 Yoshiyuki Sakamoto
          1       1       17 Francis De Brabandere
          1      14        0 Daniel Knittl-Frank
          1       0        5 Seth Tisue
          1       1        1 nickweitzel
          1       1        1 etienne
          1       3       26 Fajr Febriansyah
          1      62       16 Valy Dia
          1       2        2 Santiago
          1       1        1 PJ Fanning
          1      41        8 srirachapills
          1       2        0 bwbecker
          1       1        1 Sergey Morgunov
          1       0        1 Nafer Sanabria
          1       1        1 Felix Meißner
          1     113       48 gaurang-sawhney
          1       1        1 Zachary Mulgrew
          1       1        1 Jiangwr
          1       1        1 Nikolas
    
    Source code(tar.gz)
    Source code(zip)
  • 2.6.25(Dec 9, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.6.25. This is the latest stable release of Play 2.6.x series.

    :green_book: Changelog

    Play 2.6.25 brings a fix for SameSite Cookie attribute parsing to also accept None value.

    For more details see the full list of changes and the 2.6.25 milestone.

    :alien: Updated dependencies

    • Akka 2.5.26
    • Jackson Databind 2.8.11.4
    • SLF4J 1.7.29
    • Netty 4.1.43
    • Reactive Streams 1.0.3

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.6.25 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Ander Parra: @aparra
    • Dale Wijnand: @dwijnand
    • Marcos Pereira: @marcospereira
    Source code(tar.gz)
    Source code(zip)
  • 2.7.4(Dec 4, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.7.4. This is the latest stable release of Play 2.7.x series.

    Changelog

    This release mainly includes security and overall fixes.

    For more details see the full list of changes and the 2.7.4 milestone.

    Credits

    Thanks to the community for their detailed bug reports and contributions. Special thanks to the following contributors who helped with this release: Dale Wijnand, Matthias Kurz, Renato Cavalcanti, Marcos Pereira, Jafer Khan, Eugene Yokota, Ignasi Marimon-Clos, Ander Parra, João Ferreira, rhdevlin, Vlad Romanenko, takashima0411, igarashi-kazuya, Arnout Engelen, nickweitzel, YourPsychiatrist, Brandon Brown, Owen Miller, Albaro Pereyra, etienne.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-RC5(Dec 3, 2019)

    Dear Play Community,

    The Play Team is pleased to announce the release of Play Framework 2.8.0-RC5. We expect this to be the last release candidate before a GA release of Play 2.8. Like the milestone and release candidates before, one of our major goals is to get feedback, so please let us know if something isn't working or you see something that should be improved. If no critical issues are reported, we plan to promote this release candidate to GA in a week. Please, help by trying the release with your applications or modules.

    :green_book: Changes in 2.8.0-RC5

    1. Akka 2.6.0: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 releases to discover possible integrations problems sooner than later. See Akka 2.6.0 announcement to get more details about Akka 2.6.0 release.
    2. Remove Netty & Akka HTTP server backends as dependencies on Play-Test: This is a breaking change after 2.8.0-RC1. Basically, adding both server backend implementations at the same time make your tests behave differently from when running in production, where usually only one of them is present.
    3. Refactor SSLEngineProvider to also expose SSLContext: this is also a breaking change since 2.8.0-RC1, in order to make the API more extensible and usable.
    4. Last round of dependencies updates including our own projects such as Play-WS, Play-JSON, Twirl, and others. They now all have GA versions already.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    :alien: Updated dependencies

    • Twirl 1.5.0
    • Play-WS 2.1.1
    • Play-JSON 2.8.0
    • Play File Watch 1.1.9
    • SSL Config 0.4.1
    • Netty Reactive Streams 2.0.4
    • Hibernate Core 5.4.9.Final
    • acolyte jdbc-driver 1.0.54
    • specs2 4.8.1

    :zap: Highlights of Play 2.8

    Akka 2.6

    Akka 2.6 is the central theme of Play 2.8 and Lagom 1.6, so we want to ensure that Play and Lagom work and adopt Akka new features (such as Akka Typed) and new defaults in order to reduce the differences between what users get out-of-the-box for each framework.

    Scala 2.13

    Play 2.8 not only supports Scala 2.13 but uses it as the default version. Play, all the samples, and seeds all use Scala 2.13 by default now.

    Java 11

    Play 2.8 is the first version were we officially support Java 11. Again, Play, its standalone modules, samples and seeds are all tested against AdoptOpenJDK 11.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.0-RC5 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Marcos Pereira: @marcospereira
    • Matthias Kurz: @mkurz
    • Scala Steward: @scala-steward
    • Nick Howes: @halfninja
    • Dale Wijnand: @dwijnand
    • Renato Cavalcanti: @renatocaval
    • Daniel Knittl-Frank: @knittl
    • Owen Miller: @owen9825
    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-RC1(Oct 30, 2019)

    Dear Play Community,

    The Play Team is pleased to announce the release of Play Framework 2.8.0-RC1. This is the first Release Candidate of Play 2.8.x series. Like the milestone releases, one of our major goals is to get feedback, so please let us know if something isn't working or you see something that should be improved. But unlike the milestones, we are now freezing the APIs and other changes, and we intended to promote the release candidate to 2.8.0 final if no critical issues are reported. Please, help by trying the release with your applications or modules.

    :green_book: Changes in 2.8.0-RC1

    1. Akka 2.6.0-RC2: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 releases to discover possible integrations problems sooner than later. See Akka 2.6.0-RC1 and 2.6.0-RC2 announcements.
    2. Jackson 2.10: Jackson dependency was updated to the latest minor release, 2.10 so that users can have the latest release with new features and security updates.
    3. Removal of APIs deprecated in Play 2.6 series: most of the APIs were removed in previous milestones, but now all of them are gone. APIs deprecated in Play 2.7 series are not touched though.
    4. Range results improvement to it possible to pre-seek the Source when returning results for requests containing a Range header.
    5. Dependency injection support for Akka Typed Scheduler: In Akka 2.6.0, when using Akka Typed and ask pattern, it is necessary to provide a Scheduler. To make it easier for users, this adds a new binding for runtime dependency injection and new components for compile-time injection.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    :alien: Updated dependencies

    • Twirl 1.5.0-M5
    • Play-WS 2.1.0-RC2
    • Hibernate Validator 6.1.0.Final
    • Netty 4.1.43.Final
    • joda-time 2.10.5
    • Hibernate Core 5.4.8.Final
    • acolyte jdbc-driver 1.0.53
    • specs2 4.8.0

    :zap: Highlights of Play 2.8

    Akka 2.6

    Akka 2.6 is the central theme of Play 2.8 and Lagom 1.6, so we want to ensure that Play and Lagom work and adopt Akka new features (such as Akka Typed) and new defaults in order to reduce the differences between what users get out-of-the-box for each framework.

    Scala 2.13

    Play 2.8 not only supports Scala 2.13 but uses it as the default version. Play, all the samples, and seeds all use Scala 2.13 by default now.

    Java 11

    Play 2.8 is the first version were we officially support Java 11. Again, Play, its standalone modules, samples and seeds are all tested against AdoptOpenJDK 11.

    :bow: Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review. Play 2.8.0-RC1 is only possible due to the help we had from amazing contributors.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

    • Will Sargent: @wsargent
    • Scala Steward: @scala-steward
    • Matthias Kurz: @mkurz
    • Marcos Pereira: @marcospereira
    • Dale Wijnand: @dwijnand
    • Ivan Toporkov: @scyhhe
    • Geovanny Junio: @geovannyjs
    • Nick Howes: @halfninja
    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-M6(Oct 16, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.8.0-M6. This is the fifth milestone release of Play 2.8.x series. Like all milestone releases, the primary goal is to get feedback. So please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it affect your module.

    There are both improvements and changes at this new release, and you can see them all in GitHub milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M8: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later. Akka 2.6.0-M8 brought changes to its AbstractBehavior class, which required changes to the Akka Typed runtime dependency injection support, that is a part of Play 2.8.

    There is a long tail of other updates to APIs, documentation, and configurations. See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Matthias Kurz, Dale Wijnand, gurkankaymak, Scala Steward, Renato Cavalcanti, Marcos Pereira, Ignasi Marimon-Clos, Jafer Khan, Eugene Yokota, a1kemist, Albaro Pereyra, Dominik Dorn.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-M5(Sep 13, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.8.0-M5. This is the fourth milestone release of Play 2.8.x series. Like all milestone releases, the primary goal is to get feedback. So please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M7: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later. We didn't have a release using Akka 2.6.0-M6, but we recommend to read its release announcement to understand better what changed.
    2. Play applications won't depend on Omnidoc by default anymore: playOmnidoc setting is still available, but we are changing the default to false.
    3. Multiple improvements to Results APIs: Java sendFile, sendPath and sendResource now support an onClose callback; send* methods now accept a parameter to set Content-Type header; the type parameter for file names when serving files is now an Optional which makes the API nicer when you need to send Optional.empty (instead of null).
    4. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions.

    There are also many small updates to other APIs, documentation, and configurations. See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Scala Steward, Marcos Pereira, Dale Wijnand, Matthias Kurz, Renato Cavalcanti, Ignasi Marimon-Clos, golemiso, To-om, Emmanuel Guiton, nickweitzel, Jiangwr, srirachapills, Emmanuel GUITON, Seung-Zin Nam, Tim Moore, YourPsychiatrist.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-M4(Aug 15, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.8.0-M4. This is the fourth milestone release of Play 2.8.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M5: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    2. Dependency Injection Support for Akka Typed: this milestone introduces better integration with Akka Typed, mainly by supporting multiple flavors of Dependency Injection for Akka Typed Actors.
    3. Use Jackson ObjectMapper provided by Akka: which makes it consistent with Akka 2.6 Serialization defaults and also make the object mapper configurable using application.conf.
    4. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions. The most relevant updates were jackson-databind to 2.9.9.3, Caffeine 2.8.0, specs2 4.7.0 and Akka HTTP 10.1.9.

    There are also many small updates to other APIs, documentation and configurations. See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Marcos Pereira, Scala Steward, gurkankaymak, Dale Wijnand, Regan Koopmans, Matthias Kurz, Ander Parra, Eugene Yokota, João Ferreira, xuwei-k, Renato Cavalcanti, Brandon Brown, Sergey Morgunov, Seth Tisue, etienne, Arnout Engelen, igarashi-kazuya, Cédric Chantepie..

    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-M3(Jul 9, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.8.0-M3. This is the third milestone release of Play 2.8.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Akka 2.6.0-M4: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    2. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions. The most relevant updates were specs2 4.6.0, Jackson Databind 2.9.9.1, and Mockito 3.0.0.

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Ignasi Marimon-Clos, Dale Wijnand, Marcos Pereira, Renato Cavalcanti, takashima0411, xuwei-k, Matthias Kurz, Nafer Sanabria.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-M2(Jun 28, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.8.0-M2.

    Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    This release builds on Akka 2.6.0-M3 and includes binaries for Scala 2.13 and 2.12.

    Source code(tar.gz)
    Source code(zip)
  • 2.7.3(Jun 21, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.7.3 with binaries for Scala 2.13. This is the latest stable release of Play 2.7.x series.

    Changelog

    In order to have a Scala 2.13 build we needed to remove one internal class that can't be compiled with Scala 2.13 (see https://github.com/playframework/playframework/commit/1ad816eecc4727ad87e2409e77b3d981b282c671 for details). The removed class, org.jdbcdslog.LogSqlDataSource, was only used internally so in principle users should not be impact by it.

    For more details see the full list of changes and the 2.7.3 milestone.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.8.0-M1(May 28, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.8.0-M1. This is the first milestone release of Play 2.8.x series. Like all milestone releases, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it will affect your module.

    There are many improvements and changes at this new release, and you can see them all in Github milestone.

    Changelog

    Some of the most relevant changes are:

    1. Scala 2.13.0-RC2 support, to keep Play ecosystem on track with the new upcoming version of Scala. We are also dropping support for Scala 2.11.
    2. Akka 2.6.0-M2: as you can see in our roadmap, support Akka 2.6 is a priority, so we are closely tracking Akka 2.6 milestone releases to discover possible integrations problems sooner than later.
    3. Removing deprecated APIs: the main removal was play.mvc.Http.Context API, which we deprecated in Play 2.7. If your application is still using this API, we recommend you to read the migration guide for Play 2.7.
    4. Java 11 support: Play 2.8.0 applications will support Java 11. This release milestone fixes the know issues related to running Play applications in Java 11.
    5. Final changes to remove global state: this is a long journey we started a few versions ago, deprecating the APIs, providing dependency injection support and many other changes in existing APIs. Play 2.8 removes APIs such as Play.current, Play.maybeApplication and others that depend on them.
    6. Dependencies updates: thanks to scala-steward, all dependencies were updated to the newest versions.

    Standalone projects

    Together with Play 2.8.0-M1, we are also releasing compatible versions of standalone projects that directly depends on Play. These new releases update most of the dependencies and also have Scala 2.13.0-M3 support.

    1. Scalatest+Play 5.0.0-M1
    2. Play WS 2.1.0-M2
    3. Twirl 1.4.1-M1
    4. Play Slick 5.0.0-M1
    5. Play JSON 2.8.0-M1

    See the full list of changes here:

    1. Github milestone
    2. All changes

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Bryant Larsen, Dale Wijnand, Fajr Febriansyah, Greg Methvin, Ignasi Marimon-Clos, Jakub Kozłowski, Johannes Rudolph, João Ferreira, Lukas Rytz, Marcos Pereira, Matthias Kurz, Nikolas, Peerapat A, Philippe Vinchon, Renato Cavalcanti, Roman Parshikov, Scala steward, Valy Dia, Will Sargent, Yinan Ding, Yoshiyuki Sakamoto, gaurang-sawhney, sullis, yohei.naruse.

    Source code(tar.gz)
    Source code(zip)
  • 2.6.23(May 15, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.6.23. This is the latest stable release of Play 2.6.x series.

    Changelog

    Play 2.6.23 brings in a new version of play-ws (v1.1.13) that includes an important bug fix on streamed calls. In case of an error, after a connection is established, the error is now properly propagated. See https://github.com/playframework/play-ws/pull/340

    For more details see the full list of changes and the 2.6.23 milestone.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Source code(tar.gz)
    Source code(zip)
  • 2.7.2(May 7, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.7.2, the latest stable release of Play.

    Changelog

    Play 2.7.2 is virtually similar to Play 2.7.1, released a few days before. It mainly fixes a problem with play-docs artifact generation, but from the users' perspective, nothing substantial changed. For more details see the full list of changes.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Dale Wijnand, Marcos Pereira, Renato Cavalcanti.

    Join the Play Community

    Want to discuss the new release or have questions related to Play? Visit the Play Framework forum.

    Source code(tar.gz)
    Source code(zip)
  • 2.6.22(May 3, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.6.22. This is the latest stable release of Play 2.6.x series.

    Changelog

    Play 2.6.22 brings several bug fixes and documentation improvements.

    As always, there are a good number of documentation improvements made by Play contributors. For more details see the full list of changes and the 2.6.22.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Dale Wijnand, Albaro Pereyra, Marcos Pereira, Matthias Kurz, Renato Cavalcanti, Ignasi Marimon-Clos, Ruth Stento, Yinan Ding, Naoki Takezoe, Valentin Stoyanov, James Roper.

    Source code(tar.gz)
    Source code(zip)
  • 2.7.1(Apr 24, 2019)

  • 2.7.0(Feb 1, 2019)

    The Play Team is proud to announce the release of Play 2.7.0. This release adds many new features and continues our efforts to make Play more modular, flexible, and secure. Play 2.7.0 is the result of more than 1 year of relentless work from our fantastic community comprehending more than 720 changes made from almost 150 contributors.

    What's new?

    The highlights in Play 2.7.0 include:

    gRPC support

    gRPC is a transport mechanism for request/response and (non-persistent) streaming use cases. It is a schema-first RPC framework, where your protocol is declared in a protobuf service descriptor, and requests and responses will be streamed over an HTTP/2 connection. Play now offers play-grpc which is a module built on top of akka-grpc and gives you experimental support to declare your services in this format. See Akka gRPC's documentation on Why gRPC? for more information about when to use gRPC as your transport.

    Akka Coordinated Shutdown

    Play 2.6 introduced the usage of Akka's Coordinated Shutdown but still did not use it all across the core framework or expose it to the end user. Coordinated Shutdown is now used internally to handle Play's lifecycle.

    The main advantage is that it gives you fine-grained phases where you can register tasks instead of just having a single phase like Play's application lifecycle. For example, you can add tasks to run before or after server binding, or after all the current requests finishes.

    New cache implementation using Caffeine

    Caffeine is a high performance, near optimal caching library based on Java 8. It is now the underlying cache library used by Play Cache APIs implementation since it is a much better option for a local cache than the version of EhCache we were using before.

    Enhanced Content Security Policy support

    There is a new Content Security Policy filter available that supports CSP nonce and hashes for embedded content. The previous setting of enabling CSP by default and setting it to default-src 'self' was too strict, and interfered with browser plugins.

    The CSP filter uses Google's Strict CSP policy by default, which is a nonce based policy.

    Direct access to request data without Http.Context

    Historically, Play used play.mvc.Http.Context as a way to access request information and set some response data. It is a crucial part of Java HTTP & MVC APIs, but it is not a proper abstraction of how these APIs should work. You can now make your actions directly receive the request as a parameter, and consistent APIs were added to manipulate its data and the response.

    See our detailed migration guide for examples showing how to migrate to the new APIs.

    Major library updates

    Play 2.7 brings a new version of most of its dependencies. The updates mainly include new features, security and overall fixes. See a list of the most important updates in our migration guide. Of course, we are also bringing the latest version of our own libraries such as Play JSON, Play-WS and Twirl.

    Many improvements in Java Forms API

    Java Forms APIs bring a good number of improvements like binding for file uploads, better support for advanced validation, and repeatable constraints.

    New HTTP Error Handlers that are more suitable for REST APIs

    Play 2.7 brings two new error handlers — one targeting REST APIs which will return errors formatted in JSON. The second one returns HTML or JSON errors based on the preferences specified in client’s Accept header, and it is a better option if your application uses a mixture of HTML and JSON, as is common in modern web apps.


    As usual, you can see the more details of those new features in the release highlights and learn how to migrate in our migration guide. See the milestone for a more comprehensive list of changes.

    How to start or migrate to Play 2.7

    To get started with Play, follow the instructions in our Try Play page. And if you need to migrate from an older version to Play 2.7, see our migration guide.

    Thanks to our contributors

    Finally, many, many thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release:

       145  Matthias Kurz
       134  Marcos Pereira
        85  Greg Methvin
        36  Rich Dougherty
        24  Play Team
        17  Will Sargent
        17  Ignasi Marimon-Clos
        17  Dale Wijnand
        16  Schmitt Christian
        10  Tim Moore
         9  Renato Cavalcanti
         8  Lousanna
         6  Arnout Engelen
         6  Ben McCann
         6  Shunsuke Otani
         5  sullis
         5  Roman Parshikov
         4  Shruti Singh
         4  James Roper
         4  Cédric Chantepie
         4  Koen De Groote
         4  Shenker93
         3  kenji yoshida
         3  Zack Grannan
         3  Pongpira Upra
         3  jxtps
         3  Nathan Coleman
         2  Erik LaBianca
         2  Arne Schuldt
         2  Andrii
         2  Reto Habluetzel
         2  joymufeng
         2  Toshiyuki Takahashi
         2  techmoksha
         2  mufeng
         2  Tomek Kopczynski
         2  Adam Lane
         2  Alvaro Pereyra
         2  Thiago Arrais
         2  Manogna M
         2  rmcloughlin
         2  James Petty
         2  Dmitry Avershin
         2  Jules Ivanic
         2  Aristotelis Dossas
         2  Guylian
         2  yuuri111
         2  Christian Treppo
         2  Kamil Duda
         2  Radim Kolar
         2  danoliv
         1  Peerapat A
         1  Pierre Court
         1  Quentin PROUST
         1  Rafael Zanella
         1  Rajesh Pitty
         1  Ruth Stento
         1  Ryan Peters
         1  Sean Glover
         1  Sergey Chupov
         1  Sergey Novikov
         1  SheldonSoftdev
         1  Shunsuke Tadokoro
         1  Stephen Marsh
         1  Takahiro Takashima
         1  Tanin Na Nakorn
         1  Taylor Raack
         1  Thibault Meyer
         1  To-om
         1  Ty Kowalewski
         1  Tzu-Chiao Yeh
         1  Valentin Stoyanov
         1  Valy
         1  Veselin Slavchev
         1  Vincent Munier
         1  Yawar Amin
         1  Yinan Ding
         1  YuitoSato
         1  Yury Gribkov
         1  cdow
         1  chenweisomebody126
         1  ctoomey
         1  denisname
         1  duncangodwin
         1  dusanstanojeviccs
         1  Aakash Jain
         1  katainaka
         1  kerami
         1  markglh
         1  nafg
         1  natefitzgerald
         1  nwalsh1995
         1  ozencem
         1  picimaci
         1  sarathraj
         1  sweety98
         1  fghzxm
         1  Adam Williams
         1  Aidara Moussa
         1  Akhil Vijayan
         1  Alain Defrance
         1  Alexandr Tarasyuk
         1  Alexis Hernandez
         1  Amit Mhatre
         1  Ben Nelson
         1  Bora Kaplan
         1  Caio Novaes
         1  Claudio Bley
         1  Daniel Manchester
         1  Daniel Reigada
         1  Derek Wickern
         1  Dominik Dorn
         1  Elijah Rippeth
         1  Eliot Chan
         1  Gabriel Klappenbach
         1  Gui Becker. L
         1  Guillaume Galy
         1  Hajime Shiozawa
         1  Henri Cook
         1  Ivan Orone
         1  Ivar Abrahamsen
         1  Jakub Kozłowski
         1  Jean-Philippe Melanson
         1  Joe Kutner
         1  Johannes Stickel
         1  John Duffell
         1  John Gutierrez
         1  Juan J. Martínez
         1  JunpeiAnzai
         1  Justin Pihony
         1  Justin du Coeur, AKA Mark Waks
         1  Kavit
         1  Kazuhiro Sera
         1  Konstantin Perikov
         1  Lj Chen
         1  Mariot Chauvin
         1  Matthias Berndt
         1  Matthias Erche
         1  Maximilien Riehl
         1  Nafer Sanabria
         1  Naoki Takezoe
         1  Natsumi
         1  NickBlow
         1  Nishan Patel
         1  Onilton Maciel
         1  Paul Porter
         1  Pedro Rijo
    
    Source code(tar.gz)
    Source code(zip)
  • 2.7.0-RC9(Jan 14, 2019)

    The Play team is proud to announce a new, hopefully, the last, release candidate for Play 2.7.0. With this release candidate, we are fixing some issues found in RC8 and thus approaching an upcoming GA release. We are also moving closer to the idea of freezing the APIs.

    As with the previous RC, the primary goal is to get feedback, so please let us know if something isn't working or you see something that should be improved. If you are the author of a Play module, we would recommend checking out this release to see how it will affect your module. If there are changes not well documented in javadocs, scaladocs or our migration guides, please, let us know so that we can improve them before the general availability release.

    There are many improvements and changes at this new release compared to the previous RC. For more details see the full list of changes. But as we did for Play 2.6, we pushed to have a smooth migration from the previous version.

    What is new

    Play 2.7.0-RC9 brings several bug fixes and improvements. Notable changes:

    For other changes, you can see a summary of our progress on 2.7.0 in our roadmap document.

    Credits

    Finally, thanks to the community for their help with detailed bug reports, discussion about new features, and pull requests review.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Arnout Engelen, Dale Wijnand, Gabriel Klappenbach, Greg Methvin, Hajime Shiozawa, Ignasi Marimon-Clos, James Roper, Marcos Pereira, Matthias Kurz, Natsumi, Rafael Zanella, Renato Cavalcanti

    Play Team!

    Source code(tar.gz)
    Source code(zip)
  • 2.6.21(Jan 8, 2019)

    The Play Team is pleased to announce the release of Play Framework 2.6.21. This is the latest stable release of Play.

    What is Play Framework?

    Play is a high-productivity Java and Scala web application framework that integrates the components and APIs you need for modern web application development.

    Play is based on a lightweight, stateless, web-friendly architecture and features predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications thanks to its reactive model, based on Akka Streams.

    Getting Play

    1. To start a new project, visit https://www.playframework.com/download.
    2. To upgrade an existing Play 2.6 project, edit your project/plugins.sbt file and set the sbt-plugin to 2.6.21.
    3. To update an older Play project, take a look at the Play 2.6 Migration Guide.

    Join the Play Community

    Want to discuss the new release or have questions related to Play? Visit the Play Framework forum.

    Changelog

    Play 2.6.21 brings several bug fixes and performance improvements. Notable changes:

    1. playframework/playframework#8741: Forms - add support for IndexedSeq and Vector bindings.
    2. playframework/playframework#8920: Update guava to version 23.6.1.
    3. playframework/playframework#8890: Update Akka to 2.5.19
    4. playframework/playframework#8586: Update Akka Http to 10.0.15
    5. playframework/playframework#8772: Handle null content type as if the header was not set

    And, as always, there are a good number of documentation improvements made by Play contributors. For more details see the full list of changes and the 2.6.21.

    Credits

    Thanks to the community for their detailed bug reports and contributions.

    Thanks to Lightbend for their continued sponsorship of the Play core team's efforts. Lightbend offers commercial support for Play.

    Special thanks to the following contributors who helped with this release: Amit Mhatre, Greg Methvin, Gui Becker. L, Hajime Shiozawa, Juan J. Martínez, Kelvin Trambadiya, Marcin Aman, Marcos Pereira, Matthias Kurz, Renato Cavalcanti, Sandeep Chivukula, Roman Parshikov, Taylor Raack, Veselin Slavchev, Will Sargent, Yury Gribkov, fghzxm, picimaci.

    Source code(tar.gz)
    Source code(zip)
Spring Framework

Spring Framework This is the home of the Spring Framework: the foundation for all Spring projects. Collectively the Spring Framework and the family of

Spring 41.8k Mar 13, 2021
Realtime Client Server Framework for the JVM, supporting WebSockets with Cross-Browser Fallbacks

Welcome to Atmosphere: The Event Driven Framework supporting WebSocket and HTTP The Atmosphere Framework contains client and server side components fo

Atmosphere Framework 3.5k Mar 13, 2021
Vaadin 6, 7, 8 is a Java framework for modern Java web applications.

Vaadin Framework Vaadin allows you to build modern web apps efficiently in plain Java, without touching low level web technologies. This repository co

Vaadin 1.7k Apr 24, 2021
True Object-Oriented Java Web Framework

Project architect: @paulodamaso Takes is a true object-oriented and immutable Java8 web development framework. Its key benefits, comparing to all othe

Yegor Bugayenko 669 Mar 12, 2021
DEPRECATED: use https://github.com/jhipster/jhipster-bom instead

JHipster BOM and server-side library - DEPRECATED Full documentation and information is available on our website at https://www.jhipster.tech/ This pr

JHipster 399 Mar 21, 2021
ZK is a highly productive Java framework for building amazing enterprise web and mobile applications

ZK ZK is a highly productive Java framework for building amazing enterprise web and mobile applications. Resources Documentation Tutorial ZK Essential

ZK 329 Mar 12, 2021
:rocket: Lightning fast and elegant mvc framework for Java8

Based on Java8 + Netty4 to create a lightweight, high-performance, simple and elegant Web framework ?? Spend 1 hour to learn it to do something intere

Blade Framework 5.5k Mar 9, 2021
:rocket: Lightning fast and elegant mvc framework for Java8

Based on Java8 + Netty4 to create a lightweight, high-performance, simple and elegant Web framework ?? Spend 1 hour to learn it to do something intere

Blade Framework 5.5k Mar 13, 2021
CUBA Platform is a high level framework for enterprise applications development

Java RAD framework for enterprise web applications Website | Online Demo | Documentation | Guides | Forum CUBA Platform is a high level framework for

CUBA Platform 1.1k Mar 11, 2021
Ninja is a full stack web framework for Java. Rock solid, fast and super productive.

_______ .___ _______ ____. _____ \ \ | |\ \ | | / _ \ / | \| |/ | \ | |/ /_\ \ / | \

Ninja Web Framework 1.9k Mar 11, 2021
Micro Java Web Framework

Micro Java Web Framework It's an open source (Apache License) micro web framework in Java, with minimal dependencies and a quick learning curve. The g

Pippo 743 Mar 9, 2021
An Intuitive, Lightweight, High Performance Full Stack Java Web Framework.

mangoo I/O mangoo I/O is a Modern, Intuitive, Lightweight, High Performance Full Stack Java Web Framework. It is a classic MVC-Framework. The foundati

Sven Kubiak 52 Mar 1, 2021
The modular web framework for Java and Kotlin

∞ do more, more easily Jooby is a modern, performant and easy to use web framework for Java and Kotlin built on top of your favorite web server. Java:

jooby 1.3k Mar 13, 2021
Apache Wicket - Component-based Java web framework

What is Apache Wicket? Apache Wicket is an open source, java, component based, web application framework. With proper mark-up/logic separation, a POJO

The Apache Software Foundation 549 Mar 10, 2021