Support for the Scala programming language has been available since version 1.1 of the framework.[3] In version 2.0, the framework core was rewritten in Scala. Build and deployment was migrated to SBT, and templates use Scala[4] instead of Apache Groovy.

Contents

Play was created by software developer Guillaume Bort, while working at Zengularity SA (formerly Zenexity).[5] Although the early releases are no longer available online, there is evidence of Play existing as far back as May 2007.[6] In 2007, pre-release versions of the project were available to download from Zenexity's website.[7]

Version history

Version

Date

Notes

Old version, no longer supported: 1.0

May 2008

The first published code for 1.0 appeared on Launchpad.[8] This was followed by a full 1.0 release in October 2009.[9]

It included dependency management with Apache Ivy, support for WebSocket, integrated database migration (reversion was not implemented[11]), a switch to the H2 database as the default development database and other features.[12]

Upgraded to Hibernate 5.x. Dropped support for java version prior to 1.8 documentation

Old version, no longer supported: 2.0

March 13, 2012

Sadek Drobi joined Guillaume Bort late 2011 to create Play 2.0[13] in conjunction with Typesafe Stack 2.0.[14]

Older version, yet still supported: 2.2

September 20, 2013

Upgraded support for SBT to 0.13, better support for buffering, built in support for gzip and new stage and dist tasks with support for native packaging on several platforms such as OS X (DMG), Linux (RPM, DEB), and Windows (MSI) as well as zip files.

Older version, yet still supported: 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.

Older version, yet still supported: 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.

Older version, yet still supported: 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 CompletionStage and Optional), introduced equivalent Java APIs for features that previously only existing in the Scala API, such as implementing filters and custom body parsers and with a 20% performance increase.

Older version, yet still supported: 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.

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.[17]

Although Play 1.x could also be packaged as WAR files to be distributed to standard Java EE application servers,[18] Play 2.x applications are now designed to be run using the built-in Akka HTTP or Netty web servers exclusively.

Asynchronous I/O: due to using Akka HTTP as its web server, Play can service long requests asynchronously rather than tying up HTTP threads doing business logic like Java EE frameworks that don't use the asynchronous support offered by Servlet 3.0.[19]

Modular architecture: like Ruby on Rails and Django, Play comes with the concept of modules.

Native Scala support: Play 2 uses Scala internally but also exposes both a Scala API, and a Java API that is deliberately slightly different to fit in with Java conventions, and Play is completely interoperable with Java.

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.

As of October 2013[update], the Play Framework is the most popular Scala project on GitHub.[20] 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.[21]

In December 2010, the first e-book for the Play framework was released.[22] This was subsequently also published in hard copy. In August 2011, a second book was released, covering more complex and modern features.[23]