The Baby in the Java Bath August 11th, 2006

A few years ago, a really bright developer persuaded me to take Java seriously. I did, and I fell in love.

Looking back, though, I see that I didn't fall in love with Java. I fell in love with object orientation, with design patterns, with agile development and with test-driven development.

As a procedural C and Perl programmer, I hadn't been exposed to these things. I hadn't recognized that I needed them. I certainly knew something was wrong. I just could never get to the end of a software project and feel I'd done a solid job, and that extending the software would be a pleasure.

In the Java world, these things are mandatory. You simply can't survive without them. So you can't work with enterprise Java very long before being exposed to them. And for that, I'm truly grateful, both to Rob, who encouraged me to explore Java, and to the Java community.

Nevertheless, the enterprise Java environment left me unfulfilled, and I now realize that we were never lovers, Java and I. I don't like its rigidity, and am horrified by the complexity of the platform environment mandated by that rigidity.

Last year, I got into Rails with a vengeance. My time in enterprise Java land stood me in great stead. I understood the MVC framework, felt comfortable with most of the patterns codified into Rails, and appreciated why Rails wanted certain things done certain ways.

As a software developer, it feels like I've found my one true love. Ruby is a phenomenally expressive language. Its writability is one thing, but its readability is outstanding. It's beautifully expressive, and manages to provide powerful flexibility without the need to pay for that power when doing simple things.

For me, here's the proof that I've found home. I was a licensed user of IntelliJ IDEA, and was convinced that I would never be able to live without an IDE again, because of its powerful support for refactoring and code analysis. This, after being a die-hard "Vi should be enough" C and Perl hacker.

The dynamism of Ruby is such that I believe the same level of IDE support isn't and simply never will be available for Ruby. But here's the kicker. It doesn't matter. I don't miss my IDE, because Ruby and Rails is so clean, so consistent, so elegant that I just don't need IDE assistance to be productive.

Having successfully deployed Singles Everywhere to an highly available, scalable cluster, I don't buy the FUD that Rails doesn't scale. It does, and a damn-site more elegantly than JBOSS, Tomcat and friends. The thing with Rails is, you don't pay for scalability until it's time to scale.

Singles Everywhere has some surprisingly complex background processing to deal with. When I set up the cron jobs to handle it, the last lingering glow of my infatuation with J2EE flickered out for good as I realized how ridiculous J2EE has become.

You develop a web application. You have some processes that need to run outside request scope. So you set up an application container, add Quartz, set up all sorts of contexts and... Hold on a minute. This is running on a Unix server! How did we get so far abstracted from the usefulness of the operating system that we lost access to the system scheduler? And why isn't it a simple job to fire up a process that runs in the context of the application from that scheduler?

At that point, Java finally went cold for me. I'm done. Thanks for the beautiful babies, but from now on, we'll bath where we don't have to assemble and excite the H2O molecules ourselves.

4 Responses to “The Baby in the Java Bath”

  1. Hash said on
    Design patterns and agile-development indeed! I love this stuff too.. check out my article about my Rails excitement here. Thanks for the enthusiasm...and a cool dating site to boot :)
  2. Tony P said on
    You will ask Rails for a divorce when the next hot sexy young thing comes along.
  3. sheldonh said on
    I may do that. A wise man once said to me that, for a new thing to be adopted, it needs to be about 5 times better than what's currently in use. That sounds like "99.2% of all statistics are made up on the spot." But it's a sound principle. For people to abandon what they know in favour of what you have on offer, you need to offer much more than what they have now. I'm using Rails because it offers more value for less pain than J2EE. It's not without its problems. I just like the set of problems it has much more than I like the set of problems J2EE has. If a hot sexy thing comes along with an even more attractive set of problems, I may well pursue it.
  4. AnĂ­bal Rojas said on
    I completly agree, after almos 10 years being a Java developer focused on Web development, I just get sick of J2EE and the forever groving stack of complexity around it. Buy J2EE give the bases to appreciate and use Ruby or Rails in a proper way, best regards from Venezuela and thanks you for joining RubyCorner.com

Leave a Reply