I got a lot of flack for what I wrote in my ONLamp.com article on Rails when I said you could get a 10x productivity increase using Rails vs. a typical Java framework. The funny thing is that I thought I was being conservative!
Anyway, I spent some time talking with Bruce Tate this weekend (author of Better, Faster, Lighter Java, Bitter Java and Bitter EJBs) and he was able to confirm that my claim is not out of line (he likes to say 5x to 10x increase). Obviously your mileage will vary depending on circumstances, but based on the details I got from Bruce, I still think that 10x is a good ballpark number.
Some of these details have been reported before (DHH even commented on some of this in his Rails blog), but if you dig a little below the surface I think it is even more telling, so please forgive me for re-telling the story…
Bruce Tate and his partner Justin Gehtland were engaged by a client to replace an web app that had originally taken the company a year to develop. Justin took 4 months to reimplement this web app using Spring and Hibernate. Bruce characterized Spring/Hibernate as among the most productive frameworks available in the Java space.
Recently, Justin decided to re-implement with Ruby on Rails. Bruce said that this took a total of 5 days (Justin’s weblog reported 4 days for 80% completion so, presumably, 5 days is for the whole thing)!
Now this was all widely reported, and so far there’s nothing new here. But consider this:
- Justin is a recognized expert in Spring and Hibernate.
- Spring/Hibernate are not your typical Java framework (i.e., not Struts), but are the current best-of-breed.
- Justin was a novice with Ruby and Rails and knew practically nothing about either one.
Despite being an expert in the best-of-breed Java frameworks and a novice in the Ruby on Rails frameworks, he still managed an 8x improvement in productivity—this is very compelling! I can easily see how the productivity increase would be even higher if compared with a Struts-based implementation written by a non-expert.
But there is more… the Rails implementation actually ran faster than the Java implementation! Now this, too, was previously reported. This had baffled me somewhat, but Bruce thinks he knows why. He thinks its primarily because Rails has fewer layers to go through than the java stack, and the fact that the ActiveRecord ORM layer is much less generalized than Hibernate and can, therefore, be implemented much more efficiently.
Anyway, it feels good to have my 10x claimed confirmed by an industry expert who stated that he, too, was skeptical… until he had first-hand experience.
Bruce Tate and David Geary (author of Core Java Server Faces , Core JSTL , and more ) have signed with O’Reilly to write a “Rails Developer Notebook” (obviously one of O’Reilly’s new Developer Notebooks series).
UPDATE: Justin has posted his detailed measurements, and they are very interesting indeed!