Jason Hunter (Jason Hunter), a renowned Java evangelist an the author of two highly popular books on J2EE technology (Java Servlet Programming, and Java Enterprise Best Practices, ) posted an interesting blog entry last week: The Innovator’s Dilemma: It’s Happening To Java. The “innovator’s dilemma” that Jason is talking about is expressed as follows: “you can listen to customers, provide them with what they want, but still lose out – because a cheaper, not-as-good but good-enough competitor comes in and eats your market.”
Kind of reminds me of the days when I was shopping for my home audio system. I used to visit lots of high-end shops, where knowledgeable sales personnel would engage me in detailed demos of various components, but at the end of the day I would walk across the street to some of those cheap outlets (Circuit City etc.) to see if I could get same or similar components for less.
The dilemma Jason is referring to is specifically related to Java. Here we have an exorbitantly expensive platform, that, ten years after its launch, had reached a point where it is too complex to be able to be used in any meaningful, let alone feasible fashion. So, in a way, we could say that the situation is similar to what was happening to the mainframes 15 - 20 years ago, when the businesses reached the end of their rope and realized that they need to adopt a more disruptive technology.
Jason’s thesis is that Ruby on Rails is this disruptive technology. Java is now being perceived as a sitting duck, similar to how mainframes were the sitting ducks of the early nineties. And similar to how client/server technology came about and claimed the market share traditionally reserved for the mainframes, RoR is today poised to eat into the Java’s market share (hence the ‘disruptive’ epithet).
One of the strongest arguments he makes about RoR’s threat is this one: “In programming these days, cheaper isn’t about price, it’s about mental effort.”
Now, anyone who’s ever tried to develop a web application using the J2EE frameworks, and then tried to to the same thing using RoR, will undoubtedly agree that RoR requires significantly less of a mental effort. And thus, RoR is significantly cheaper.
Ironically, it was this same quality that made Java so attractive 10 years ago. Due to the fact that Java was so much simpler than C++ (so much so that in its early days Java used to be called ‘C minus-minus’), it made huge inroads into the development community’s mind share, and overtook C++ as the language of choice when it comes to developing applications. Lowering the cost of software development is obviously a strong driving force in motivating the adoption of the new technology.
The mood in the Java camp nowadays is really strange. As is to be expected, the prevailing sentiment is the one of huge denial. This is similar to the mainframe crowd sentiment 15 years ago.
But the odd thing is that the same people who tend to shrug off RoR’s threat to Java seem to be at the same time working frantically on proving that Java can be concise too. Ironically, they are attempting to introduce simplicity into the Java platform by adding new features to it! This leaves an open question: since when is bloat to be regarded as simplification?
In the final analysis, it is extremely significant that a number of top-echelon Java evangelists are jumping into RoR heads first, and are buying into it hook, line and sinker. The worrisome aspect of all this is that, once RoR takes off and hits the mainstream, who’s going to do the new development? Most of the existing development workforce hadn’t managed yet to make the transition from procedural to object-based approach. The full fledged OO nature of Ruby, coupled with its dynamic nature, may prove to be too big of a challenge for the average application developer out there.