Ruby on Rails is an acceptable J2EE
There are similarities between the two
Posted by 06/12/2006
The Current discussion
There has been a lot of heated discussions on the internet lately about Ruby on Rails. I've read a lot because I'm interested in what other programmers think about - and I've also talked with Java programmers at work. I work for the state - so the prevailing wisdom is still 3-4 years in the past. I don't expect forward thinking. For instance, it was only 3-4 years ago that I was an anamoly for doing Java web development. Now that is what everyone is doing because IBM came to town with Websphere. But I'm still interested in what questions people ask - and what it would take for something like Ruby on Rails to be adopted here.
These are some of the questions I get:
- Ruby who?
- It makes Ajax easy? Does that mean I can just drag and drop to make Ajax web pages?
- Will it support my strange and inextricably complex legacy data structure?
- Does it work with stored procedures?
- Is it in widespread use? I've never heard of it
- What kind of server environment is required?
- Will it run on Websphere?
- Does it scale?
- Why invent another language?
I don't think Ruby on Rails can have widespread adoption until all of these questions are addressed. Even the stupid ones. But I don't think it is unforseeable to make a version of Rails work with JRuby (so it works on Websphere) and for the Eclipse RadRails plugin + a little JSF-like wizards - to address all these questions. Rails, like Ruby, is somewhat of a perfect storm that combines a lot of disparate elements to make a unified whole. I would not be suprised at all if IBM comes with something at some point and starts pushing Rails.
Doth protest too much
At the same time the discussions between the Ruby programmers and the Java programmers do not seem to ever arrive at a mutually beneficial point. It's always one or the other.
And some of the protests from the Java people strike me as a little "The lady doth protest too much" i.e. this Ruby on Rails thing it is striking a nerve. It's irritating. It's making people angry. It's getting in their craw. If RoR were an insignificant nothing, it wouldn't warrant the vitriol.
So why are a lot of Java programmers so pissed off?
- People make their living with languages and they don't want their skills obsoleted because that means they are obsoleted
- People have invested a lot of time and it feels like learning another language is starting from scratch
- A lot of programmers are just barely comfortable with object oriented programming - and they learned it by using Java. That was an investment. Now they are reaping the rewards of that investment
- Real programming languages compile
- People have seen things like PowerBuilder and Visual Basic come and go - and don't want to just jump on the latest fad programming language
The apprentice surpasses the master
Think about it though, what does Rails have? What does it make easy? What are the features?
- Built in unit testing
- Built in build system - with built in tasks
- MVC pattern
- Run-time, declarative behaviour
- Object-oriented
- Built in ORM
- Open-source
- Cross-platform
Sound familiar? Those are all taken straight from the book of Java web applications. These are all selling points for Java. They are not new ideas. It's just done better. Maybe that is what's so infuriatating to the Java crowd. It beats Java at it's own game. It's all the same stuff, except it's all right there ready to use. Ready to go.
And I'm guessing DHH did all that on purpose - or at least subconsiously. I don't know, but I imagine he was either working with, or highly influenced by, a bunch of Java programmers when he came up with Rails.
You reap what you sow
So now Java is being bitten by some of it's own monsters. Criticizing Ruby for performance. Isn't that what Java got for years? Java was the resource hog only a few years ago. In fact it still is. Even the Java on my cell phone sucks. Why is that?
It's the same thing with the "it doesn't scale argument". As if Java were the master of integrating with legacy systems or building "robust, scaleable, enterprise solutions". Not in the Universe I live in. In my Universe Python integrates much better with Legacy systems - cause it's friendly to C. Java does not integrate well with C. Everything has to be a rewritten to work with the JVM. How is that working well with legacy systems?
And Python has always seemed to run faster - whatever the benchmarks are. Am I the only one that has noticed that? When was it the Java got the reputation for being so fast, reliable and rock solid? Only 4 years ago Java Web development was still too radical for some places. It was actually a risk. Now it's a standard. It is taught at Universities. And that only happened in 4 years. Wasn't that quick? Did it even happen? Maybe it's just more marketing. I feel a conspiracy theory coming on.
Conclusion
That's all I have to say about this. I can't say what will happen in the future. It __feels__ like Java is old school. But who knows. I think there is way too much religion involved with programming - languages, editors etc... And I think a big reason for that is the nature of the industry. You can be marginalized as a programmer in a matter of a few years. Then your stuck cranking out Cobalt code 8 hours a day and it's boring and soul-sucking. Nobody wants that (except for the people that still swear by Cobalt).
Comments
Post a comment