Firstly, you can’t say much for Ted wrt taste… I mean he is running that .NET blog software now ;)
Secondly, I think Ted hit the nail on the head and didn’t even realise it:
We found a greater need for configuration, more flexible and powerful execution models, and so on. In essence, as web apps got more complicated, the servlet/JSP space got more complex to match it. “With power, comes complexity; with complexity, comes power.”
I think the Java world took this waaaay to far. Abstractions upon abstractions.
We forgot that web frameworks ARE FOR THE WEB!!!
Before you look around we have JavaServer Faces, which “features” that you don’t just get to write out HTML. Sounds great on paper. I still hear people talking about how they will be able to just flip on a different Renderer and they will have a mobile application. Of course, in reality a mobile application is very different. You care about different things.
I want a web framework that lets me work with web technology (HTML is one of them ;), but gives me a nice clean way to do this.
Rails has a nice balance:
- MVC is there. No model 1 JSP here.
- Although MVC is here, you don’t have to learn struts html tags :)
- All Ruby. Learn it, move on. No EL/JSTL/JSF-EL/OGNL/XML
- Smart defaults, with the simple ability to plugin whenever you want (thanks Ruby)
- Helpful wrappers on top of behaviour such as Ajax if you want it
- Well thought out helpful code, such as flash
WebWork 2 does a good job of this on the Java side IMO. It gives you things that you need… but doesn’t make you have to learn a whole new world. Want components? Simple. Create some templates and you are done.
However, Rails is just a web framework. It has its issues like everything else, and isn’t a silver bullet. Often after learning about something fairly simple to get into like Rails you will be “huh that is it?”. In my opinion this is a very GOOD thing. Although, I do miss my IDE goodies :)
In my experience, I like to have simple tools which just work, but if the hardest part of your application is the web framework, you are lucky!