Play is seriously, seriously good. We used to build on top of a fairly heavy but powerful stack of Spring, Hibernate and Struts2/Wicket (depending on the app). Although there's a lot of power there there's also a lot of tangled XML and you need to do a fair amount of gymnastics to get through it all. Server restarts are common and painful. Getting exception stacks that run 200 classes deep are IMHO a bad sign.
Play is a total breath of fresh air. REALLY well thought out, clean, simple, fast:
- almost no server restarts needed,
- runs very very quickly in production
- stateless, so zero downtime deployments are trivial
- great community
- extendable with modules
Then there are all the little things. Libraries to do things like encryption and image resizing are built in and just work. Everything just works.
I can't recommend it enough. It really does liberate Java from the Enterprise shackles.
I'm an experienced Java developer, but a bit of a novice when it comes to webapps on Java. I've tried Java EE, Spring, Hibernate, etc and hated all of them with a passion. For writing simple apps it was a mountain of configuration and framework.
I've got to agree that Play is a breath of fresh air. It doesn't hide/automate as much as RoR, which I appreciate. It's really easy to get going with and it's made writing web apps feel quite natural.
It does scale, believe me. In order to scale you have to be able to load balance to accommodate a higher load.
Using exceptions for flow management doesn't prevent you from adding more boxes. If you're thinking it can cause performances problems, I have an app in prod; here are some numbers:
* With a single box, we can do about 500 req/s for a dynamic page, accessing the database
* It appears that the bottleneck is the template engine. If we cache the result (thus serving a "pseudo static" page) the exceptions-based control flow is still there but we serve up to 1000 req/s. (That's more than Apache can do to serve static content on the same machine).
Play is seriously, seriously good. We used to build on top of a fairly heavy but powerful stack of Spring, Hibernate and Struts2/Wicket (depending on the app). Although there's a lot of power there there's also a lot of tangled XML and you need to do a fair amount of gymnastics to get through it all. Server restarts are common and painful. Getting exception stacks that run 200 classes deep are IMHO a bad sign.
Play is a total breath of fresh air. REALLY well thought out, clean, simple, fast:
- almost no server restarts needed, - runs very very quickly in production - stateless, so zero downtime deployments are trivial - great community - extendable with modules
Then there are all the little things. Libraries to do things like encryption and image resizing are built in and just work. Everything just works.
I can't recommend it enough. It really does liberate Java from the Enterprise shackles.