During ThoughtWorks University XI we took the decision to introduce to the trainees Waffle as an example of MVC framework.
I’ve been impressed by the simplicity of the framework. It has been a while since the last time I’ve played with any Java Web Framework ( I think it was around 6 years ago the last time, using the super hated Struts 1.0! )
So the first good news is the Java world is alive and some good people are writing great frameworks ( with also the big help of all the knowledge/experience gained using other languages)
I’ve a very personal opinion on this: many people moved to Ruby and have such a bad remembering of the old times in Java, well I think that frameworks like Waffle keeps the name of Java high.
In addition to that Waffle has a nicer design compared to Rails, no command line scripting ( you might like it, I don’t ), it’s not annotation heavy and you don’t have to write a line of xml ( ok, just one but in the web.xml! )
The only bad thing of Waffle is that there’s not that much documentation on the web ( I’ve to say that it’s so simple to use that you don’t need it! ) so my goal for the next months will be blog as much as possible about it and prepare some speeches too.
When I find something good I definitely want to spread it, and this is the case.

Waffle is different from the multitude of web frameworks that exist today, in that Waffle:
- has no mandatory XML configuration files (beyond a minimalist web.xml required by any J2EE-compliant webapp)
- is interoperable with best-of-breed UI templating technologies
- does not have a base controller class to extend or interface to implement
- has controller classes that can support multiple actions, each a single method rather than a sequence of initialiation/settter/execute methods
- has a small learning curve
4 Comments
Hi Toni,
We have been using Waffle at the ThoughtWorks University for about 2 years now. It has been a good learning exercise as well as a blessing in terms of working in the Java World.
Mike Ward wrote it because he was frustrated with all the configuration based web tools in Java.
Sudhindra
Really? I wonder then why I had to write a session plan and presentation for it! ahaha, you kept the secret quite well!!
Well I think the last batch used Struts2…
Very nice
Another excelent option as an MVC framework is VRaptor2, that works with convention over configuration.
http://vraptor.org/
There even exists a fork that adds “sexy url” to VRaptor, so instead of requesting host/context/controller.action.logic you can request host/context/controller/action, similar to Rails. The fork sits here:
http://github.com/dcrec1/vraptor2_sexy_urls/tree/master
Ha ha Toni,
Gotcha. We only asked them to use Waffle. We never gave a presentation or a session on it. I guess we were lazier/brutal(devils?) than you were. I hope you enjoyed being a trainer.
Sudhindra