I’ve been working on a small web side project lately. Being a mostly Java oriented developer – I wanted to build a java web-app. It’s been about 2 years since I worked on a web-app full time – at which time we were using Struts 1 point something and jstl.
I did a little digging around and found a couple of blog entries and documents that talk about web framework comparisons…
Unfortunately, none of these resources yielded a clear winner. The one thing everyone does go on about consistently is Ruby on Rails. Nobody seems to be happy with Java Server Faces, although there seems to be hope for the future. The middle ground seems to be filled with Tapestry, Struts 2 (the artist formerly known as WebWork) and Spring MVC (step by step guide here). There also seems to be some interest in Stripes.
Given that the Spring folks seem to have a good, clean, simple approach to things, I thought I might go that way for my app. Having said that, I quickly learned that just about all the web frameworks now use spring as their back-end container. Glowing praise indeed. I invested a couple of hours in downloading and unpacking the latest jars for frameworks, jdbc drivers etc, before I had a change of heart. Since everyone has been going on about Rails for the past year or so, why don’t I give that a try??
My first look at rails was watching the videos on the Rails website. These do a pretty good job of demonstrating how to start doing something with Rails. This blog entry assisted with getting rails installed on my Fedora server, and before long I was rocking along.
It’s obvious to me that I will pay a price for the ease of startup later on, but if you wanted to build a web application to see if it “sticks”, you don’t particularly want to pay the startup tax – you want to see if it’s worth investing any real time on it. IMHO – this is where rails is killer… from idea to implementation is much quicker than it would be with Java; and this leaves more time for what is often the harder pain: figuring out the requirements and user interaction.
The learning for the java folks IMHO is that some application layout standards need to be agreed upon, and then a standard application skeleton (or skeleton builder) needs to be published. We need to get to a point where you can do something like scrip/generate controller and have something generate a new Controller, View and supporting configuration for you, so that less time is spent doing the same old grunt work. Hopefully it’s already out there and I just haven’t found it yet :).