A decade or so ago, I was excited about Java. The promise of Java as a language was that it would make applets, servlets, and other Internet programming tasks easier. While I was and remain a Perl junky, I drank the Java Kool-Aid, believing that I needed to build my Web applications in a language with sophisticated infrastructure for them to scale and operate reliably. And I wasn't disappointed. My company successfully built eCommerce applications in the late 90's using Java, JSPs, EJBs, Struts, and other Java components. They worked well and we had a development methodology that delivered on time and on budget. Our efforts were rewarded by being bought by Excite@Home for $400 million in 1999. But, it wasn't easy and it wasn't the sort of thing a lone developer could do--at least not without superhuman abilities. Whenever I programmed Web applications for myself, I turned back to my beloved Perl.
Lately, the Java sheen has worn off for me. Over the years, I've been involved in numerous Java projects and taught Java-based Web development skills to hundreds of students. Java and its frameworks and infrastructures are what I term "heavyweight" development technologies. In my opinion, Java is best suited for large projects carried out by large teams of programmers. We could debate whether such projects are a good idea in any event, but that's a different topic.
I've become reconverted to lightweight Web development. The lightweight Web development framework that is on everyone's lips is Ruby on Rails. I'm not a Rails programmer (yet), but everything I've read and seen has led me to believe that it is having a real impact on Web development. Some of the students in my lab are Rails programmers and I've been involved as a consultant to a project that's using Rails as the development infrastructure. Rails met the lightweight development methodology we were after and the results have beenastounding. Especially when compared to the results of another Java-based project by the same group of programmers.
Rails is the result of David Hansson's vision. A recent CNet News article discusses the result of Hasson's vision:
Hansson's quest to build a practical and productive Web development framework demonstrates how a single person can shake up the status quo, even in a development world where a few companies dominate.
The trick, said Hansson, is to "slaughter the holy cows," the well-understood ideas of computer science that dictate how programmers work. In many cases, software vendors design products for difficult problems, an approach that leads to excess complexity, he said.
I attended a tutorial on Rails by Hansson at OSCON earlier this year and came away impressed. In the tutorial Hansson built a functioning blog application before our eyes. Admittedly, the demo was scripted and not a full-featured blogging tools, but I couldn't imagine a similar exercise using other frameworks and languages I'm familiar with. Rails favors convention over configuration. That principle is a big part of Rails' success because it means that programmers can control applications as they write code without breaking trains of thought to think about and create configuration schemas.
Whenever I listen to CIOs and IT managers, I hear about long project lists and insufficient resources. The common tactics for dealing with the backlog is to ask for more money and people or to tell people "no" more often, but there is a third way. The third way requires that IT shops become more productive. My advice is that you don't let things like Rails and other dynamic languages pass you by: start some pilot projects now and get experience with them. I think you'll be pleasantly surprised.