Facilitating the spread of knowledge and innovation in professional software development



Choose your language

InfoQ Homepage News Public Beta of Play! is Now Available on Heroku

Public Beta of Play! is Now Available on Heroku

This item in japanese


Heroku announced yesterday that Play!, a Java Web Framework was now available as a public beta. Play! has taken a "clean room" approach to Web development and decided to not be bound to various self-imposed restrictions such as :

compatibility with servlet containers, support for JSP, compatibility with the standard Java web app layout, and conformance to Java and OO principles even when they don't make sense.

As such, Play! follows the "Built-and-Deploy" model of Ruby on Rails, instead of the more traditional "Package-and-Distribute" model.

No boilerplate classes or XML config files are needed. The framework takes a fresh approach to packaging conventions, and uses static code where it makes sense. For example, since controller entry points are stateless, and HTTP-oriented instead of object-oriented, they are implemented as static methods.

Just like "Heroku for Java" which was just released last week, Play! is based on a containerless PaaS model. A Play! app can run locally or seamlessly be deployed in production. This results in a simplified deployment workflow and eliminating any problems caused by environment differences.

From an architecture pespective, Play! uses Netty, a non-blocking I/O protocol library built by the JBoss team which supports the asynchronous processing of requests using a continuation based programming model. Play! is also implementing a share-nothing model which makes it easy to scale out applications horizontally by adding more nodes since stateful sessions are not possible.

From a Language strategy perspective, Heroku explains:

Java is another milestone on the polyglot platform path, but there's more to come. Future language packs will span the gamut from venerable (like Java) to cutting-edge (like Clojure and Node.js) to squarely in-between (like Ruby). Our desire is to be as inclusive as possible. Choice of language is up to the developer.

Are both the Web App and Java spaces ripe for disruptive innovation by cloud application platforms as Heroku suggests? What's your take on it?

We need your feedback

How might we improve InfoQ for you

Thank you for being an InfoQ reader.

Each year, we seek feedback from our readers to help us improve InfoQ. Would you mind spending 2 minutes to share your feedback in our short survey? Your feedback will directly help us continually evolve how we support you.

Take the Survey

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • My take on PaaS

    by William Louth,

    • My take on PaaS

      by William Louth,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      The last thing we need at the moment is a black box container for the edge execution node that restricts the service world to that of a particular PaaS vendor, service provider, technology, runtime or language. Lets create much more compatibility, coordination and robustness in the infrastructure and services making the edge nodes (devices or containers) as unrestricted and diverse as possible until we have gained a greater understanding and appreciation of the cloud and its possibilities which could very well invalidate our current application architecture and deployment approaches (i.e. webapps / containers) today.

    • Re: My take on PaaS

      by Jean-Jacques Dubray,

      Your message is awaiting moderation. Thank you for participating in the discussion.


      I don't necessarily disagree with your point of view, but:
      a) don't you think PaaS reflects an optimization of many people building the same thing on top of IaaS. You lose control, but you gain in LOE and Robustness. Configuring a set of servers, elastically, at the IaaS level is no simple task
      b) When you say "I believe so strongly in the separation & control of this differentiation that I expect all services to allow delegation of some aspects of their execution & delivery." I wholeheartedly agree with you, but maybe we disagree on how that could be achieved. I personally don't believe this is a good idea to achieve it dynamically. I would rather prefer an "assembly" mechanism like the one of SCA which allow a single service (component) to participate in different assemblies and hence allow this level of delegation, but statically defined for every "consumer" of the service component

    • Re: My take on PaaS

      by William Louth,

      Your message is awaiting moderation. Thank you for participating in the discussion.


      I think it is much harder to configure servers that execute code you did not design and develop which is why I advocate for this to be pushed out to other service providers. Today It's not just about building software and having your customers learn how to administrate and manage it. You need to be able to operate it as well at a scale much greater than a signal customer.

      You need dynamic delegation at the service interface (context/contract) level because I should be able to interact with a service and ensure it places the data I create (directly or indirectly) in a storage location that is under my control beyond the service its self otherwise there is a lock-in situation and a risk factor (if the supplier goes out of business/service). Migration then becomes easier but not easy and more importantly the cost of access to such data is outside of the control of the service and in the hands of the storage service ensuring pricing is not used to restrict exits. In addition I expect brokers or other mashup like services to augment but still pass thru requests which does require a service to have this delegation on a per user basis but which looks to the other services in the supply chain as on a per request basis because they don't see the user itself because its not part of their domain.

      Every time your purchase something on the web you always have the option to change the deliver address and billing address though by default it assumes your home address but there are times when I am buying for different people under a different context (cost center). Do you not think the virtual world will have some similar mechanisms that have been proven to work much longer than its own creation? We need to design and developer software like it was engineering a business and its systems, models, events/signals, processes,....

    • Re: My take on PaaS

      by William Louth,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Jean whilst the delegation maybe be dynamic that actually binding at the service backend with another service provider can be static then it becomes more like a routing/redirection mechanism. This is something we are planning on supporting ourselves so we will have to see how we balance the additional flexibility and the complexity it entails especially with state mgmt though I expect this to be partition up in different spaces one control by user the other by the provider.

      OpenCore 6.3UM – Everywhere Usage Metering

    • Play looks nice, but they have not done much research.

      by Frank Carver,

      Your message is awaiting moderation. Thank you for participating in the discussion.

      The play blog entry states "no existing frameworks have taken a clean-room approach" which is a somewhat naive claim to make.

      Mojasef (originally released back in 2005, and still being developed) takes a similar, but potentially even simpler, approach, and there are several others if you look around the web a bit.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p


Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.