Back in 2009, when my employer wanted to start a project in Struts, I suggested them to go with Spring, even though no one in my team knows it, even me. I always love to work with latest and hottest framework, for it’s support and added features it bring over existing frameworks and ease of setup.(And spring was a buzzword back then) No hurdle from management side, so we took it as a challenge, started doing POC and after facing a lot of errors(I hate BeanCreationException and likes), we(along with one of my colleague) succeeded and finished prototype just the day of the deadline. It was a special moment for me. I was not expert in Struts(in fact all I did at that point was some POC, no real time, project experience), but still I bit the bullet and I succeeded in my challenge, which was pretty tough for just 2 years experienced java developer, who never worked in a framework before.
My journey with Spring started then. I have been working in Spring from then, learned a lot and now starting a project in Spring is like back of my hand. But then meanwhile, a lot has been changed in the other end of spectrum too. Play was not what it used to be. It has changed a lot and Play 1.1 was a mighty leap from what I saw before (No idea about Play2.0 as I don’t feel it is for Java). New trend has been spotted, JS-MVC, Node.js etc. Over the past 2 years, I had to work with new technologies and after getting to know them better, I kinda say Spring lost it’s charm. Why?
Main reason why I chose Spring : It was Lightwight. But not any more! Sadly, Spring spread it’s wings, but a little too much in my opinion. Almost everything is a plugin, and that is what annoys me. I mean, I appreciate Spring ORM, but Spring Social, MongoDB, but why? We already have tons of libraries to do that, which already integrates well with Spring. In that case, why the need to re-invent the wheel? Everytime I want to integrate new plugin, I simply read their documentation and start implementing it. But now, I look at Spring to see if they are already have plugin for that! Then I ignore it and go with my original way. In fact couple of times, I tried Spring Social and I feel it is not leveraging the libraries to it’s true potential. I know most of them are not yet in v1 or some are, but still it is not what I expected out of Spring and what we need.
Stop spoon feed everything(for developers) and innovate something which once kept you as market leader(I guess this is right word).I read JEE6 has improved a lot and the gap it had with Spring, is becoming thin. If it not for Glassfish or my laziness, I would have already gone with JEE6. Slowly, I switched my interest towards these V8 engine boys and Play framework. Create a REST backend, Use Node.js+AngularJS, finish up things. It was pain at first, but after a couple of time, things looking easier this way. And with Play! framework, RAD is possible and much better than Spring Roo in my opinion.
Unless Spring comes up with new innovative features or better Spring Roo implementation, I guess I will start using something else, and it eventually means less Spring more competitor.
Note : The views expressed are purely by me and if you find have conflict with facts and information, please feel free to point out. I will correct it. All opinions are mine and doesn’t mean Spring is bad, but it doesn’t interest me any more like it does before.