PLAY
framework for J2EE
Play is an open source web application framework, written in Scala and Java, which follows the model–view–controller (MVC) architectural pattern. It
aims to optimize developer productivity by using convention over configuration, hot code
reloading and display of errors in the browser.[1]
Support
for the Scala programming
language has been available since version 1.1 of the framework.[2] In version 2.0, the framework core was
rewritten in Scala. Build and deployment was migrated to SBT and templates use Scala instead of Groovy.
History
Play was created by software developer Guillaume Bort, while
working at Zenexity.[3] Although the early
releases are no longer available online, there is evidence of Play existing as
far back as May 2007.[4] In 2007 pre-release
versions of the project were available to download from Zenexity's website.[5]
In May 2008 the first published code for 1.0 appeared on Launchpad.[6] This was followed by a
full 1.0 release in October 2009.[7]
Play 1.1 was released in November 2010 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.[8]
Play 1.2 was released in April 2011. It included dependency
management with Apache Ivy, support for WebSocket, integrated database migration (reversion is not
implemented yet[9]), a switch to the H2 database and other features.[10]
Sadek Drobi joined Guillaume Bort late 2011 to create Play 2.0
which was released on March 13, 2012[11] in conjunction with TypesafeStack 2.0.[12]
Play 2.1 was released on February 6, 2013, upgraded to Scala 2.10
and introduced, among other new features, modularisation, a new JSON api,
filters and RequireJs support.[13]
Play 2.2 was released on 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 zipfiles.
Major differences
From other Java frameworks:
·
Static methods: all controller entry points are declared as
static (or equivalently, in Scala, methods on Scala objects). After requests
were made for this to be customisable, Play 2.1 now supports other styles of
controllers, so controllers need not be static/Scala objects; however, this is
still the default.
·
Asynchronous I/O: due to using JBoss Netty 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.[16]
·
Modular architecture:
like 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.
Components
Play 2.0 makes use of several popular Java libraries:
·
JBoss Netty for the web
server
·
No required ORM, but
Anorm (Scala) and Ebean (Java) are included for database access
·
Scala for the template
engine
·
Built in hot-reloading
The following functionality is present in the core:
·
a clean, RESTful framework
·
CRUD: a module to
simplify editing of model objects
·
Secure: a module to
enable simple user authentication
·
a job scheduler
·
an embedded database for
quick deployment/testing purposes
·
a full embedded testing
framework
·
an automatic file
uploads functionality
·
multi-environment
configuration awareness
·
a modular architecture,
which enables bringing new features in the core easily
No comments:
Post a Comment