I’m in the middle of studying for the Core Spring Essentials Certification exam and wanted to put a couple of thoughts out there with regards to Spring and Java for the Web. Spring has a nice web framework know as Spring MVC. It doesn’t need a JEE container to run so it runs on Tomcat and other non-enterprise servers. I think a person could get it set up on a PAAS like Heroku, now that they have Java support. So it makes a very viable option for developing web applications for personal and freelance projects.
However I don’t know why anybody would use it for that. If you are a Java developer and don’t know Ruby on Rails, or one of the other newer web language/framework combos, I suppose Spring MVC would be a good option. But compared to ROR, Spring MVC seems like a much more complex way to solve the exact same problem: serve dynamic web pages with data pulled from a database mixed with static content.
I know that Spring will integrate into a Java environment that supports messaging, transactions, and any other enterprise bits that you need. But ROR can do some of those things as well and, really, how many sites really need a full enterprise backend? I’m a J2EE dev in my day job so I’m tempted to use a Java framework for my side projects as well, as a way of improving my skills. But using Spring MVC seems like overkill.