September 14, 2011

My Choice - Play Framework!

At my work, there was a need to develop the same application for three different platforms - .NET, LAMP and for Java.  I was asked to pick a framework to develop this app in Java. It was easy for my other colleagues for .NET and LAMP as there was not much choice - ASP.NET was picked for .NET and Ruby on Rails for the LAMP stack.
When it comes to Java, I need not say more, there are tons of choices. Burden of Choice. 
The objectives were clear -
  • Rapid development (code - deploy - test cycle)
  • Deployable on popular Web/App servers (Apache Tomcat, JBoss, Oracle, Websphere etc)
  • Deployable on the cloud
  • Best engineering practices (unit testing, functional testing, clean code)
My friend suggested that I don't have much choice - it has to be either Spring or Groovy on Grails. 

Spring has kind of become the de-facto standard for enterprises, followed by JBoss SEAM.
I have a good experience with Spring and have been an early adopter of this great framework. Spring became popular because of the pit-falls of EJB2 and heavyweight runtime.

But over the past few releases, Spring has grown to be a huge framework. It takes a lifetime to be familiar with all the modules of the Spring and the features it supports.  Recent times - Spring is over-engineered, over-complicated and feature creep.
With JBoss SEAM stack, you cannot avoid JSF. I never learnt JSF and would never learn it. There is already enough rants on the web about the design flaws of JSF.

Spring Roo is another great tool to improve the developer productivity but again it's not straightforward. It involves GWT, Spring. Maven etc. Too much. All goes well for a trival hello-world or a simple CRUD app, the moment you try to do a little more complex web-app, things start falling apart.

No doubt these are great frameworks, but I wanted to avoid maven and its pom file nightmares, classpath issues, layers and layers of abstraction, enforced rules,  high learning curve etc.

Enter Play framework !

I'm not advocating this is one of the best frameworks, but it truly matches the productivity of RoR, low learning curve, stateless architecture i.e. made for cloud, dramatically reduces the develop/test/deploy cycle, borrows the best things from RoR, DJango and still retaining the best things about Java (rock solid, enterprise strength scalability and security, great external libraries and developer community etc.).

It has been already a month I'm using this great framework and I must say it has been a very memorable experience.
In my next post, I would be giving some nifty features of this framework and more insights

Until next time ..

No comments: