Java web frameworks - the Rails influence

I’m re-examining the state of web-frameworks for Java at the moment, with a particular focus on support for Ajax and JSR168 portlets. It’s interesting to see the impact that Ruby on Rails has already had in this space. For example, several Java frameworks have started to favour convention over configuration, even if sporadically.

Matt Raible has created a summary document, Java Web Frameworks Sweet Spots, of the current state of Java web frameworks, formed out of a series of short Q&A sessions with principal developers from 11 frameworks. He has blogged about this here. Each developer was asked the same set of questions, including “What do you think of Ruby on Rails”. Responses to this varied greatly, but there was pretty much a consensus that Java framework developers had something to learn from Rails. The response from Howard Lewis Ship from the Tapestry project was, I thought, nicely put:

…RoR represents a limitation on choice:. You do it the RoR way, or you are in for a big struggle. However, within the confines of the RoR naming and coding conventions, it looks like you get a lot for your buck. That’s a very compelling value statement, and it’s surprisingly similar to the Microsoft philosophy (use our tools or else). The Java philosophy can be expressed as “we don’t know how you will precisely use our tool, so we’ll support any possibility, but in a vague way that requires you to understand our tool to a high degree.” Not just Tapestry, but JEE, Spring — pretty much the entire stack. So, I think it’s very important for the Java world to shift at least part of the way in the direction of providing solutions, not just tools.

It seems that Rails has highlighted a very real problem with Java frameworks in general - and I’m speaking from bitter experience - that when a choice between ease of use and flexibility is presented, Java framework developers have tended to choose flexibility. With Rails the developers have done the opposite, to a relatively extreme degree, and it’s working. Good to see that some in the Java world are responding positively!

This was previously published at and was retrieved from the Internet Archive.