Is Spring becoming what it despised?
Spring is a great framework, but it seems like it is turning into exactly what it was trying to solve: a complex, full stack framework. It was created out of frustration with the then J2EE (now JEE of course) stack of technologies. Spring’s approach was good, fairly simple and got the job done. But is it now too big and people jumping ship?
If you take a recent look at the most read items on JavaBlogs, it seems so. From Seam to Guice, it looks like there are competitors out there looking to fight Spring for king of the framework mountain.
To Spring’s credit, it has a large following and won’t go by the wayside anytime soon, but if these new annotation based frameworks get some traction I would expect some pretty good adoption among them. Give a year or so for a few to come out and then another year or so before the prominent ones take the market share away from each other and slowly from Spring.
The Driving Force
Undoubtedly, annotations instrumental to leading this change. Just a few years ago XML configs were the norm, but when Java added annotations to Java 5, everyone was tired of those XML files and looking for a better way. Thankfully the core JEE stack started using them and everyone else jumped on that wagon. I’m still not a fan of using them for everything, but in a lot of cases they certainly make sense.
The second major factor is pure size and complexity. Much like JEE which it sought to replace, Spring has become too big. Just like JEE, you don’t have to use the whole bag of tricks, but people don’t look at it like that. They see this huge feature list and potentially complex configuration and look for something simpler. In a way it is a shame since Spring can be very helpful and non-complex if you just took the time to learn the basics and forget about all the extra features that you can tack on.
Let the framework wars begin…
Don’t miss anything, subscribe!
Did you enjoy this post? Why not leave a comment below and continue the conversation, or subscribe to my feed and get articles like this delivered automatically to your feed reader.
Comments
It’s a little a mixing of categories here. If you are just looking at Dependency Injection (DI) (which is one of a several dozen jars / services from spring), there is not only Guice, Pico and Nano but also Hivemind! These are only competitors in DI (perhaps Hivemind a little more). On the other hand Seam (as Spring) do offer sooo much more that you really can’t compare them all… What we really need is a table (framework and features on each axis) and see if these features are usable independently. This could be a better ground for a comparison or critique.
Best regards
I also got this feeling that Spring becomes too much for any beginners. For instance,
creating a simple CRUD app. (DI, AOP, MVC) took my new colleage almost two month (including learning Spring) and same app. in JEE5 he made it in two weeks. Of course it is a particular case and cannot be taken for any comparison. Many said Spring is well documented but my colleague got some bad experience using it. It is just not enough for a beginner. Most of things he found on Spring forum.
It is just a case to share.

Can you mention any of those Spring competitors?