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.

Comments
  • 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
  • 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
  • Java 17

    Java 17

    Let's see how well Play plays with Java ~16~ 17. 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
    • [x] integration tests (see below)
    • [x] 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)
    ...
    
    • ~Will this be fixed when upgrading to akka-http 10.2.x?~ The problem is okhttp.
    • Workaround for now: --add-opens=java.base/sun.security.ssl=ALL-UNNAMED

    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 48
  • 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
  • Switch to HikariCP

    Switch to HikariCP

    Consider this an enhancement request, but a biased one. Play is a great framework touting both usability and performance. Over at the HikariCP connection pool project, we care about usability and performance too. We'd love to see HikariCP become the default connection pool provider for Play. We know it's up to the task.

    Not only is HikariCP the fastest pool around, it is also the most stable and "correct". We've done our homework, and unlike most projects can say, we've read every line of code of our competitors code. We've created a pool analysis to illuminate the issues we've found in our studies.

    When most people pick up a connection pool library off of the internet, they assume that because it is popular it must be solid. But some not very deep Googling later you will find a myriad of issues from deadlocks to livelocks.

    But don't take our word for it, give HikariCP a try, throwing anything at it you want, and when you're done make an informed decision. That's all we can hope for.

    help wanted 
    opened by brettwooldridge 48
  • Fixes #2333 made it possible to implement custom naming conventions

    Fixes #2333 made it possible to implement custom naming conventions

    Fixes

    Fixes #2333

    Background Context

    I liked the idea from @cchantep what he did in anorm.

    P.S.: It's the first time i played with Macros. Also this could be backportable I guess.

    Edit: I would merge this as is, so that it maybe could go into 2.5.x but I would change that as soon as I take other issues from #4684. Can't see the big picture yet.

    opened by schmitch 47
  • [2.2.1-java] impossible to use promise with withTransaction into @Transactional controllers

    [2.2.1-java] impossible to use promise with withTransaction into @Transactional controllers

    Example: https://github.com/zadonskiyd/play2jpaProblemExample

    F.Promise<String> helloPromise = promise(new F.Function0<String>() {
        @Override
        public String apply() throws Throwable {
            return JPA.withTransaction(new F.Function0<String>() {
                @Override
                public String apply() throws Throwable {
                    return "hello";
                 }
            });
        }
    });
    String hello = helloPromise.get(1000);
    

    removes em from current thread ?

    [RuntimeException: No EntityManager bound to this thread. 
    Try to annotate your action method with @play.db.jpa.Transactional] 
    

    at

    84        Long total = (Long)JPA.em()
    

    In 2.1.0 same code (with Akka.future instead of promise) works fine

    type:defect type:improvement help wanted 
    opened by zadonskiyd 47
  • Generalize ActionBuilder by parameterizing over Request type

    Generalize ActionBuilder by parameterizing over Request type

    I love the new ActionBuilder in play 2.2, but I want even more. I want (and in fact am now using) something like this:

    /** A generic version of ActionBuilder parameterized over the request type. */
    trait ActionFunction[-R[_],P[_]] {
      parent =>
      def invokeBlock[A](request : R[A], block : P[A] => Future[SimpleResult]) : Future[SimpleResult]
    
      /** Compose this ActionFunction with another. */
      def ~>[Q[_]](child : ActionFunction[P,Q]) : ActionFunction[R,Q] = new ActionFunction[R,Q] {
        def invokeBlock[A](request : R[A], block : Q[A] => Future[SimpleResult]) =
          parent.invokeBlock(request, (p : P[A]) => child.invokeBlock(p, block))
      }
    }
    
    trait ActionBuilder[R[_]] extends ActionFunction[Request,R] {
      ...
    }
    

    This allows arbitrary processing of the Request and composition of these processes. For example, I define another trait that can choose to provide an immediate result or pass on to another ActionFunction:

    trait ActionRefiner[-R[_],P[_]] extends ActionFunction[R,P] {
      protected def refine[A](request : R[A]) : Future[Either[SimpleResult,P[A]]]
      final def invokeBlock[A](request : R[A], block : P[A] => Future[SimpleResult]) =
        refine(request).flatMap(_.fold(Future.successful _, block))
    }
    

    I've found this really useful for layering various permission checks or object lookups that can get added to the request.

    type:improvement 
    opened by dylex 47
  • use LongAdder for requestsInFlight

    use LongAdder for requestsInFlight

    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 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

    performance improvement

    Purpose

    Improve performance of the requestsInFlight counter

    Background Context

    according to JDK documentation, LongAdder outperforms AtomicLong/AtomicInteger

    References

    [LongAdder] is usually preferable to AtomicLong when
    multiple threads update a common sum that 
    is used for purposes such as collecting statistics, 
    not for fine-grained synchronization control. Under
     low update contention, the two classes have similar 
    characteristics. But under high contention,
     expected throughput of this class is significantly 
    higher, at the expense of higher space consumption.
    

    https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/atomic/LongAdder.html

    LongAdder JMH microbenchmark

    https://github.com/sullis/microbenchmarks-java/blob/main/longadder/src/jmh/java/io/github/sullis/microbenchmarks/LongAdderBenchmark.java

    opened by sullis 0
  • htmlunit-driver 4.7.0 (was 3.64.0)

    htmlunit-driver 4.7.0 (was 3.64.0)

    Updates org.seleniumhq.selenium:htmlunit-driver from 3.64.0 to 4.7.0. 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!

    Adjust future updates

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

    updates.ignore = [ { groupId = "org.seleniumhq.selenium", artifactId = "htmlunit-driver" } ]
    

    Or, add this to slow down future updates of this dependency:

    dependencyOverrides = [{
      pullRequests = { frequency = "@monthly" },
      dependency = { groupId = "org.seleniumhq.selenium", artifactId = "htmlunit-driver" }
    }]
    

    labels: library-update, early-semver-major, semver-spec-major, commit-count:1

    type:updates 
    opened by scala-steward 0
  • Seperate config

    Seperate config

    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 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 #9745

    Purpose

    This separates the Play Configuration class and related functionality into a new play-configuration subproject, which can be depended on independently of the full play framework.

    Background Context

    This is taken from #9887 but has been rebased and squashed with conflicts resolved.

    References

    • #9887
    opened by tmccombs 4
  • WIP: Scala3 remaining modules

    WIP: Scala3 remaining modules

    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 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 https://github.com/playframework/playframework/issues/11260

    Purpose

    Scala 3

    Background Context

    Why did you take this approach?

    References

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

    opened by jtjeferreira 0
  • scala3 compilation for PlayProject

    scala3 compilation for PlayProject

    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 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

    Purpose

    Support scala3 compilation for PlayProject

    Background Context

    https://github.com/playframework/playframework/pull/11310

    References

    https://github.com/playframework/playframework/issues/11260

    opened by jtjeferreira 0
Releases(2.8.18)
  • 2.8.18(Oct 17, 2022)

    The Play Team is happy to announce the release of Play 2.8.18.

    :green_book: What is new?

    This release includes a fix for #10590 to avoid StackOverflowErrors when sending multipart/form-data requests with many fields as payload. We recommend upgrading as soon as possible.

    Following pull requests got merged for this release:

    • #11491 [2.8.x] Upgrade Akka, Netty, Spring, Joda-Time by @mkurz
    • #11360 To refactor BodyPartParser of Multipart in order to avoid StackOverflowError easily by @yousuketto
    • #11465 [2.8.x] Update MIME types (backport #11406) by @PromanSEW
    • #11464 [2.8.x] Upgrade netty-reactive-streams by @mkurz
    • #11459 [2.8.x] Latest scala sbt versions by @mkurz

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

    :heart: Thanks to our premium sponsors!

    If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor. You can also individually sponsor the project by becoming a backer.

    :bow: Thanks to our contributors

    Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors. Special thanks to all code contributors who helped with this particular release (they are listed below)!

    Source code(tar.gz)
    Source code(zip)
  • 2.8.17(Oct 6, 2022)

    The Play Team is happy to announce the release of Play 2.8.17.

    :green_book: What is new?

    Following pull requests got merged for this release:

    • #11430 [2.8.x] Update Evolutions.scala (backport #11345) by @BlankFX
    • #11419 SLF4J 2 compatibility: avoid direct usage of StaticLoggerBinder by @jfsoul
    • #11367 link to ScalaCompileTimeDI doc from the DI section of the ScalaWS help by @ianknowles
    • #11333 [2.8.x] Update branch in message (RedirectHttpsFilter) (backport #11332) by @PromanSEW
    • #11320 [2.8.x] Remove 3rd party tools page by @felipebonezi
    • #11309 Update ImplementingHelloWorld.md by @ysedira

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

    :heart: Thanks to our premium sponsors!

    If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor. You can also individually sponsor the project by becoming a backer.

    :bow: Thanks to our contributors

    Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors. Special thanks to all code contributors who helped with this particular release (they are listed below)!

    Source code(tar.gz)
    Source code(zip)
  • 2.8.16(Jun 2, 2022)

    The Play Team is happy to announce the release of Play 2.8.16.

    :green_book: What is new?

    The following are the relevant changes of this bugfix release:

    • Patched a moderate CVE to prevent a denial of service when binding forms to deeply-nested JSON objects. #11301
    • Patched a minor CVE that can sometimes result in developer mode errors showing in production mode. #11305
    • Adds support for the 'bundleresource' protocol, when checking URLs. #11108

    The following pull requests got merged for this release:

    • #11305 [2.8.x] Introduce DevHttpErrorHandler by @BillyAutrey, @mkurz
    • #11301 [2.8.x] add depth limit for JSON form binding by @gmethvin, @mkurz
    • #11291 [2.8.x] GHA: Also release on publish event + secrets inherit by @mkurz
    • #11289 [2.8.x] Refactor badges by @mkurz
    • #11269 [2.8.x] Bump version of sharable workflows to v2 by @ihostage
    • #11252 [2.8.x] Adding support for checking URL with protocol='bundleresource' existence by @asaelitz, @mkurz
    • #11265 [2.8.x] Remove play-enhancer from docs, project is dead by @PromanSEW
    • #11262 [2.8.x] Switch to GitHub actions by @mkurz
    • #11228 [2.8.x] Make scripts more userfriendly if running outside of CI by @mkurz

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

    :heart: Thanks to our premium sponsors!

    If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor. You can also individually sponsor the project by becoming a backer.

    :bow: Thanks to our contributors

    Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors. Special thanks to all code contributors who helped with this particular release (they are listed below)!

    Something you want to talk about for this release? Join the discussion

    Source code(tar.gz)
    Source code(zip)
  • 2.8.15(Apr 2, 2022)

    The Play Team is happy to announce the release of Play 2.8.15.

    :green_book: What is new?

    The following are the relevant changes of this bugfix release.

    :lady_beetle: Fixed Spring4Shell (CVE-2022-22965)

    This RCE vulnerability might affect Play Java users that deploy their applications as a war file (e.g. in Tomcat). More details can be found here: A note on Spring4Shell for Play Java users

    :lady_beetle: About CVE-2020-36518 in Jackson and Play 2.8.x

    Please see https://github.com/playframework/playframework/discussions/11222

    :coffee: Experimental support for Java 17

    You should now be able to run your Play applications with Java 17, but to do so, you have to make some adjustments.

    :warning: Even though people report running their Play 2.8.15+ apps on Java 17 without issues, support for Java 17 is experimental. :warning: :warning: Make sure to test your application thoroughly before putting it into production. :warning:

      // In your build.sbt add:
      libraryDependencies ++= Seq(
        "com.google.inject"            % "guice"                % "5.1.0",
        "com.google.inject.extensions" % "guice-assistedinject" % "5.1.0"
      )
    
    • If you are using the Java routing DSL you have to upgrade typetools (see #10055 and #10814):
      // In your build.sbt add:
      libraryDependencies += "net.jodah" % "typetools" % "0.6.3"
    
    • Avoid using jnotify for the FileWatchService (like in this removed test)
    • To be able to run tests using OneServerPerTestWithComponents or GuiceOneServerPerTest (see #11209):
      // In your build.sbt add:
      Test / javaOptions ++= Seq(
        "--add-exports=java.base/sun.security.x509=ALL-UNNAMED",
        "--add-opens=java.base/sun.security.ssl=ALL-UNNAMED"
      )
      // Test / fork := true // This is the default anyway, just a reminder in case you changed it to false before
    

    If you run into any other issues please let us know by opening a bug report, thanks!

    :book: Following pull requests got merged for this release

    • #11214 [2.8.x] Upgrade Spring to fix Spring4Shell vulnerability by @mkurz
    • #11215 [2.8.x] Adjust welcome message for experimental Java 17 support by @mkurz
    • #11210 Remove -XX:MaxPermSize, breaks on Java 17 by @mkurz
    • #11207 [2.8.x] Update dependencies before next 2.8.x release by @mkurz
    • #11206 [2.8.x] Partial support for Java17 by @mkurz
    • #11205 [2.8.x] Fix docs: Passing request to WebSocket action not supported (backport #11172) by @mkurz
    • #11202 [2.8.x] Reverts #11109 (downgrade ssl-config back to 0.4.x) by @mkurz
    • #11200 typing error by @Sanabria13
    • #11195 Doc fix: Body needs to be redirected with POST by @mkurz
    • #11175 Update jquery dependency to 3.6.0 version by @morellik
    • #11178 [2.8.x] Make the "please donate" message more friendly (backport #11177) by @jxtps
    • #11129 Remove old or abandoned 3rd party play modules from module directory by @Max-AR
    • #11149 [2.8.x] Update release drafter workflow by @mkurz
    • #11146 [2.8.x] Rename master branch to main by @mkurz
    • #11140 [2.8.x] Cleanup .github folder by @mkurz
    • #11130 [2.8.x] Remove iteratees docs by @Max-AR
    • #11117 [2.8.x] Renamed Boxfuse to CloudCaptain by @axelfontaine
    • #11119 [2.8.x] change uri parse path error from warn to debug (backport #10151) by @fusuiyi123
    • #11116 [2.8.x] Make sure to append -SNAPSHOT for sonatype by @mkurz
    • #11109 [2.8.x] Use ssl-config to 0.6.0 by @mkurz

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

    :heart: Thanks to our premium sponsors!

    If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor. You can also individually sponsor the project by becoming a backer.

    :bow: Thanks to our contributors

    Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors. Special thanks to all code contributors who helped with this particular release (they are listed below)!

    Source code(tar.gz)
    Source code(zip)
  • 2.8.13(Jan 12, 2022)

    The Play Team is happy to announce the release of Play 2.8.13.

    :green_book: What is new?

    Following pull requests got merged for this release:

    • Dev server should not exit when it receives EOF (-1) #11088 by @mkurz
    • play-ws 2.1.7 #11083 by @mkurz
    • Bump versions (backport #11050) #11076 by @scala-steward and @mkurz
    • [2.8.x] Add onLoadMessage #11071 by @mkurz
    • Shutdown dev server when pressing CTRL+C during run #11064 by @mkurz
    • ConsoleReader should be blocking in sbt 1.4+ since System.in already is non-blocking #11061 by @mkurz
    • Updating log4j to 2.17 in docs (backport #11060) #11062 by @BillyAutrey
    • Updating log4j ref in docs to 2.16.0 (backport #11053) #11054 by @BillyAutrey
    • Show latest version of java supported in 2.8 in Requirements.md #11055 by @syntapy
    • Upgraded version of log4j used in docs to 2.15.0 (backport #11051) #11052 by @jroper

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

    :heart: Thanks to our premium sponsors!

    If you find Play useful for work, please consider asking your company to support this Open Source project by becoming a sponsor. You can also individually sponsor the project by becoming a backer.

    :bow: Thanks to our contributors

    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. Special thanks to all code contributors who helped with this particular release (they are listed below)!

    Source code(tar.gz)
    Source code(zip)
  • 2.8.11(Dec 1, 2021)

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

    This release brings in a new version of Akka Http including security updates.

    :green_book: What is new?

    Following pull requests got merged for this release:

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

    :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.

    If you find Play useful for work, please consider to support this Open Source project by becoming a backer or premium sponsor. You can donate to our Open Collective here.

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

    @FuriousTurtle, @PromanSEW, @TrevorNathan, @arid-mangoss, @ennru, @gmethvin, @ignasi35, @johnduffell, @kaseken, @mergify, @mergify[bot], @mkurz, @octonato, @rstento and @scala-steward

    Full Changelog: https://github.com/playframework/playframework/compare/2.8.8...2.8.11

    Source code(tar.gz)
    Source code(zip)
  • 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.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.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.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.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.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)
: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.7k Dec 28, 2022
The Grails Web Application Framework

Build Status Slack Signup Slack Signup Grails Grails is a framework used to build web applications with the Groovy programming language. The core fram

grails 2.7k Jan 5, 2023
Ninja is a full stack web framework for Java. Rock solid, fast and super productive.

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

Ninja Web Framework 1.9k Jan 5, 2023
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 Jan 5, 2023
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.5k Dec 16, 2022
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 657 Dec 31, 2022
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 769 Dec 19, 2022
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 748 Dec 23, 2022
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 375 Dec 23, 2022
Firefly is an asynchronous web framework for rapid development of high-performance web application.

What is Firefly? Firefly framework is an asynchronous Java web framework. It helps you create a web application Easy and Quickly. It provides asynchro

Alvin Qiu 289 Dec 18, 2022
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 Oct 31, 2022
jetbrick web mvc framework

jetbrick-webmvc Web MVC framework for jetbrick. Documentation http://subchen.github.io/jetbrick-webmvc/ Dependency <dependency> <groupId>com.githu

Guoqiang Chen 25 Nov 15, 2022
A simple expressive web framework for java. Spark has a kotlin DSL https://github.com/perwendel/spark-kotlin

Spark - a tiny web framework for Java 8 Spark 2.9.3 is out!! Changeset <dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core</a

Per Wendel 9.4k Dec 29, 2022
: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.7k Jan 5, 2023
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.6k Jan 3, 2023
A web MVC action-based framework, on top of CDI, for fast and maintainable Java development.

A web MVC action-based framework, on top of CDI, for fast and maintainable Java development. Downloading For a quick start, you can use this snippet i

Caelum 347 Nov 15, 2022
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.3k Jan 1, 2023
Flutter GetX模板代码生成 Gradle模式开发---Used to generate the template code of GetX framework

getx_template 语言: English | 中文简体 GetX usage Gold digging: Flutter GetX use --- simple charm! Renderings Plug-in effect Take a look at the effect diagr

小呆呆666 241 Dec 23, 2022
🚀 The best rbac web framework. base on Spring Boot 2.4、 Spring Cloud 2020、 OAuth2 . Thx Give a star

?? The best rbac web framework. base on Spring Boot 2.4、 Spring Cloud 2020、 OAuth2 . Thx Give a star

pig-mesh 4.3k Jan 8, 2023