That Sucking Sound Is Java Killing Your Soul

There is nothing fun about Java. Every possible good facet’s goodness is completely predicated on the requirement that you know how to set up and or get around some soul sucking gotcha. Where it’s been said that even a language such as Perl can make “easy things easy and hard things possible”, Java seems to try to make “easy thing hard and hard things infuriatingly impossible”.

Ok, I know. This will get some people steaming. You may not want to continue reading if that’s you. I’m sure that your assumptions are that I’ve never given Java a chance. I’ve never worked with Java long enough to make any sort of real assessment. I’m not a real programmer… blah blah blah. Ok. Sure yeah. I’m not going to try to convince you of anything. I’m sure you’ve found Java just wonderful for your research paper or whatever pet project you’re working on. That’s great. You know so much. Like I said. You may not want to continue reading.

For those of you who can hear it, here’s the point. Why use a language that tries to be everything to everyone when all it does is suck the joy out of being a software engineer. Remember when programming was fun? If you don’t, then you’ve never used anything but Java.

Why do I need to invoke a Factory every time I want just a simple object? Why are there no good GUI design tools–and please, don’t tell me about your favorite GUI design tool. Frankly, they all suck in comparison to pretty much everything else out there. And that’s another thing, why does a GUI based Java application window, when restored from being minimized for several hours, respond so sluggishly?

Java is not fun. It is not exciting. It is not enjoyable. It just makes you grumpy. If you find it fun, I dare you to to tell me how. Go ahead. Put it in the comments now. Let it be known how Java is so fun. Seriously!

I admit that there is no perfect dev environment. They all have their quirks, even my new favorite–xcode on the Macintosh/iPhone, but I just can’t understand the madness. Why do people insist on defending Java–this lousy programming language that is the basis of more once-hot-now-abandoned frameworks than anyone can keep track of. If you don’t believe me, take a quick survey of the latest posts about Java over at Reddit’s Programming Section. Here’s a smattering:

All of these posts are actually not bashing Java. The writers like the language. What they are doing, however, is defending it. Why? Because it needs defending. It’s horrible.

What’s fun about programming is problem solving. Sure enough, you’ll spend a lot of time solving problems when you use Java, but they are not programming problems–they are environment problems. Sure, you can write that web app once you’ve decided which lame web framework is the least bad of them all. But then you’ll find that setting up the least bad framework will take you a full day or longer and then it might not work properly once you deploy it. Oh yeah, and where are you going to deploy it? Not on a shared hosting web server. You’ll have to go co-lo and administer the box yourself if you want it to run Tomcat or some other web app server.

… and I could go on, but why?

If you want to have fun writing code… If you want to get your soul back, start writing for the Mac or get the new iPhone SDK and start writing code for it. For that matter, start writing for 8-bit embedded systems. That’s more fun than Java and probably easier. And for those of you who just at that moment thought about suggesting embedded Java for 8-bit micro-controller programming, you need to put your laptop down right now and seek help. Seriously. Call somebody. You are not well.

If you are wondering what’s fun that I am doing these days, take a look at my other blog Cocoa Is My Girlfriend. Here are a few of my latest posts:

5 thoughts on “That Sucking Sound Is Java Killing Your Soul”

  1. On one hand, Java is not the funniest language. But on the other hand, you have the best tools to develop in Java and far ahead from other IDEs.
    I used to develop on several other languages too, and I regularly test new languages with new environement. But when I lack code completion, formatting, navigation, refactoring (not just renaming) I really miss my Java IDE. Finding all implementations of an interface, all usages of a class, or the call stack of a method key shortcut is as easy as a key shortcut. And all this makes me happy.
    So, what do you prefer, fun or happiness ?

  2. I agree with you Matt, Java has tangled itself up into a big ball of crap. I think this stems not so much from the language as it does from the crappy, counter-intuitive API and framework patterns that are so pervasive in the language. I couldn’t agree with you more about the over-use of the Factory pattern (and the Builder and all the other ridiculously over engineered patterns). The Calendar and related Classes are a good example of bad design.

    I also find it interesting how many Classes start out with a somewhat intuitive API that gets deprecated to make room for a more counter-intuitive API that makes no practical sense at all. It almost seems deliberate.

    So I would contend that the crappiness of Java comes not from the language but from the idiots who steeped the Java culture in over-theoretical and counter-intuitive API’s.

  3. Hi:

    This is more of a question than a comment. You all are light years ahead of me in all this.

    I just downloaded your Audio Scrub beta but I don’t know where to put the components in order to build the application. Would you be willing please to explain to a neophyte?

    Thanks!

    baruch@mcn.org

  4. I agree completely that Java can be quite tedious, but it does the things I need on the server side without much setup hassle, like creating zip files and accessing (Oracle) databases. Working with Java on UNIX sure beats the heck out of .Not on Windows (for me, anyway).

    I use Perl when I can (Python isn’t permitted here :-( ), but installing the modules can be such a supreme hassle.

    After 30 years of server-side development, I’m studying hard to try to make the transition over to the Mac with Xcode/Cocoa/ObjC. (Your tutorials are much appreciated! :)

    I like Java much better than I like straight C, but the combination of Cocoa and ObjC goes a long way towards alleviating the pain of C.

Leave a Reply