|Developer(s)||Lightbend, Zengularity and the community|
2.8.19 / 13 January 2023
|Type||Web application framework|
|License||Apache License 2.0|
Play Framework is an open-source web application framework which follows the model–view–controller (MVC) architectural pattern. It is written in Scala and usable from other programming languages that are compiled to JVM bytecode, e.g. Java. It aims to optimize developer productivity by using convention over configuration, hot code reloading and display of errors in the browser.
Support for the Scala programming language has been available since version 1.1 of the framework. In version 2.0, the framework core was rewritten in Scala. Build and deployment was migrated to SBT, and templates use Scala instead of Apache Groovy.
Play was created by software developer Guillaume Bort, while working at Zengularity SA (formerly Zenexity). Although the early releases are no longer available online, there is evidence of Play existing as far back as May 2007. In 2007, pre-release versions of the project were available to download from Zenexity's website.
|Old version, no longer maintained: 1.0||May 2008||The first published code for 1.0 appeared on Launchpad. This was followed by a full 1.0 release in October 2009.|
|Old version, no longer maintained: 1.1||November 2010||Released after a move from Launchpad to GitHub. It included a migration from Apache MINA to JBoss Netty, Scala support, native GlassFish container, an asynchronous web services library, OAuth support, HTTPS support and other features.|
|Old version, no longer maintained: 1.2||April 2011||It included dependency management with Apache Ivy, support for WebSocket, integrated database migration (reversion was not implemented), a switch to the H2 database as the default development database and other features.|
|Old version, no longer maintained: 1.3||January 15, 2015||libraries upgraded (a.o. netty, hibernate, etc.), added multiple databases support and included customisable template name resolving.|
|Old version, no longer maintained: 1.4||October 30, 2015||Compatible to Java 7 and removed support for Java 6. Added ability to define enabled ssl protocols.|
|Old version, no longer maintained: 1.5||September 29, 2017||Upgraded to Hibernate 5.x. Dropped support for java version prior to 1.8.|
|Old version, no longer maintained: 1.6||March 15, 2021||Compatible to Java 14, libraries upgraded|
|Current stable version: 1.7||April 3, 2022||Compatible to Java 17, libraries upgraded, dropped support for java version prior to 11, Play scripts upgrade to Python 3|
|Old version, no longer maintained: 2.0||March 13, 2012||Sadek Drobi joined Guillaume Bort late 2011 to create Play 2.0 in conjunction with Typesafe Stack 2.0.|
|Old version, no longer maintained: 2.1||February 6, 2013||Upgraded to Scala 2.10 and introduced, among other new features, modularization, a new JSON API, filters and RequireJS support.|
|Old version, no longer maintained: 2.2||September 20, 2013||Upgraded support for SBT to 0.13, better support for buffering, built in support for gzip and new |
|Old version, no longer maintained: 2.3||May 30, 2014||Introducing the Activator command, better tooling for static assets, support for Java 8 and Scala 2.11, better performance, Web Service enhancement and support to integrate Actors and Web Sockets.|
|Old version, no longer maintained: 2.4||May 26, 2015||With Dependency injection out of the box, the possibility to embed Play inside other applications, improved Java 8 support, HikariCP as the default connection pool and better testing APIs.|
|Old version, no longer maintained: 2.5||March 29, 2016||Switched from Iteratees to Akka Streams for all asynchronous IO and streaming, replaced custom functional types with Java 8 types (such as |
|Old version, no longer maintained: 2.6||June 23, 2017||Using Akka HTTP as the default server backend, experimental HTTP/2 support, Scala 2.12 support, no more global state under the hood, JSON Web Token format for cookies, improved security and configuration improvements.|
|Older version, yet still maintained: 2.7||February 1, 2019||Scala 2.13 support, support for Caffeine as underlying cache implementation, updated HikariCP and Guice versions, improved form validation and file uploading functions.|
|Current stable version: 2.8||December 13, 2019||Java 11 support, Updated Akka, Jackson, support pre-seek sources for range results|
Older version, still maintained
Latest preview version
Play is heavily inspired by ASP.NET MVC, Ruby on Rails and Django and is similar to this family of frameworks. Play web applications can be written in Scala or Java, in an environment that may be less Java Enterprise Edition-centric. Play uses no Java EE constraints. This can make Play simpler to develop compared to other Java-centric platforms.
Although Play 1.x could also be packaged as WAR files to be distributed to standard Java EE application servers, Play 2.x applications are now designed to be run using the built-in Akka HTTP or Netty web servers exclusively.
Play provides integration with test frameworks for unit testing and functional testing for both Scala and Java applications. For Scala, integrations with Scalatest and Specs2 are provided out-of-the-box and, for Java, there is integration with JUnit 4. For both languages, there is also integration with Selenium (software). SBT is used to run the tests and also to generate reports. It is also possible to use code coverage tools by using sbt plugins such as scoverage or jacoco4sbt.
In August 2011, Heroku announced native support for Play applications on its cloud computing platform. This followed module-based support for Play 1.0 on Google App Engine, and documented support on Amazon Web Services.
As of October 2013[update], the Play Framework was the most popular Scala project on GitHub.
In July 2015, Play was the 3rd most popular Scala library in GitHub, based on 64,562 Libraries. 21.3% of the top Scala projects used Play as their framework of choice.
Corporate users of the Play Framework have included Coursera, HuffPost, Hootsuite, Janrain, LinkedIn, and Connectifier.
|last=has generic name (help)