I understand the Spring is more general purpose than just web development, but I'm thinking specifically of web application development.
I am just curious what other Java (or .NET, Python, PHP, whatever) web application frameworks you have used, and what about Spring 3 makes you prefer it to them for web development. In particular, have you tried Scala and Lift or Apache Tapestry or Wicket, and if so how does Spring 3 measure up?
I have not used Spring professionally, the little shop where I work has our application trucking along on Struts 1.x. It's a pain to develop for it, but re-engineering the beast isn't in the cards. My only friend that has used a much older version of Spring said it was easier than Struts 1.x but still very heavy on boilerplate XML.
I've used quite a few web frameworks: Struts 1, Struts 2/WebWork 2, Tapestry 3, Tapestry 4, Tapestry 5, Wicket, JSF, etc, etc, etc...the list goes on.
The original Spring MVC was much like Struts 1, but a tiny bit more lightweight...only a tiny bit. I liked it better than Struts, but in all honesty it still wasn't perfect.
Spring @MVC (the new style that came with Spring 2.5) is DRAMATICALLY different and much better. It involves a lot less XML and is much more flexible while remaining much simpler. In my opinion, Spring @MVC is among the best Java web framework options out there. But, I'm not going to tell you which web framework you should use. Some of those other frameworks are awesome, too. You should evaluate them and decide which works best for you and your project. I can answer questions to help you decide, but I can't decide for you.
I was thinking in particular of the front end, although I'm not opposed to swapping around the middle layer if the productivity gains and ease of understanding and fixing bugs is worthwhile. If I'm remembering the division of labor between the pieces of MVC correctly, Struts 1.x is the view using JSP and JSTL, of course. Hibernate is our model - it works fantastically well, but the Hibernate layer of the application was written by someone who left before I got to the company four years ago, and I had to teach myself Hibernate, configuration, HQL, the Criteria API, proxy objects, and how to debug and fix lazy instantiation errors, multiple instances of the same object in the session, and so forth. (Maybe I'm stupid, but that was a hell of a learning curve even with the Hibernate forums and books on the subject.) The Control layer has a lot of pieces but is relatively simplistic, consisting mostly of a horde of Simple Factories (Design Pattern). It works and it's easy to understand, but it's slow to develop.
Thanks for your response.
I appreciate that you can't make the decision for me. I was mostly interested in what other products you used before deciding Spring MVC was a top choice. If you had responded that you've never used the others, I would be less inclined to trust your belief that Spring is worthwhile. I mean no disrespect with that statement.
I won't decide to use Spring because of your statement, but it definitely puts Spring - and your book - into the "worth investigating" category. Again, I work at a small company, three developers, one monolithic Struts 1.x application with about 75 mapped actions and a similar number of underlying tables in a Postgres database. Any migration we do would have to be piecemeal over a long period, and the new framework would have to be intuitive and useful enough that it would be worthwhile to run it alongside and intermingled with Struts 1.x.
posted 9 years ago
No disrespect taken! I just wanted to be clear (both for you and for anyone else who follows along and reads this) that I've used several frameworks and have things I like and dislike about all of them. But in the end, I find Spring MVC to be the most powerful and intuitive of the bunch and it's the one I favor most of the time.