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)
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 ..