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:

BecomeAnXcoder, And Give, Please!!

This was posted on cocoalab back in October and I’m just now seeing it, but this online book BecomeAnXCoder looks fantastic! I will start pointing people who are interested in Mac OSX programming who have no programming experience there from now on. I hope these guys can continue to produce high-quality content. Which appears debatable–not because they don’t have the ability to create quality content–clearly they do, but because they seem to be having trouble supporting it.

I noticed when I visited the site this note in bold at the top:

Please Donate! Our bandwidth is at record levels: 29 GB in March, and donations do not even come close to covering our costs. If you appreciate our work, please take a minute to send a donation.

I do appreciate their work myself, but it’s mainly because I would send more people, new programmers that is, to them–which in turn is what is giving them the problem of using too much bandwidth in the first place.

To the folks over at Cocoa Lab, this statement really makes you sound desperate. I hope you can get the support you need, but when you give away content for free, a statement like this suggests that maybe your ultimate intention wasn’t to give it away, but rather to give it first so that people may donate. If this is a business model for you, it looks like it’s not working out the way you expected, so, with the deepest sincerity, I thought I might offer a few possible solutions to your predicament.

  • Talk to a publisher. This is really good content that you could probably sell. Show it to a publisher and see what they think. I’ve heard of publishers that *may* be accepting proposals from Mac Programming authors
  • Get cheaper webhosting. There is this company called 1and1 that provides shared hosting (which would work fine for the content you are providing) and give you 2.5TB, yes that was TERABYTES!!, of transfer bandwidth per month for the affordable price of $9.99 per month. You can sign up at 1and1 now. And yes that link is my affiliate link. I will get a kickback if you sign up!! That’s not a sales pitch–just a disclaimer.
  • Convert the site to a blog site. If you make your site into a blog rather than a book and continue to add new content, the benefit to the Cocoa development community continues to grow. It’s great with the content that’s there now, and to those who haven’t checked it out yet there is a *ton* of content, but keep it coming.

I write this not to chastise, but to be helpful. I hate to see good content producers go un-rewarded for their efforts. The solution, however, is either to change your approach, or change your expectations. Best regards to the BecomeAnXCoder writers. Keep up the great work.

Windows Programmers Shifting to the Mac?

Vista to Core AnimationThe tide is turning or so it seems. Well, maybe it’s not quite so monumentous as a tide shift, but there is certainly a buzz in the air that I think is indicative of at least a gradual shift. I can’t speak for all Windows developers of course, but I’ve talked to enough of my friends to know that the Macintosh is no longer in their eyes some obscure computer made by some obscure computer company that makes computers for artists. It’s got some amazing tech that would appeal to any geek especially programmers who have the initiative to take advantage of it.

I made the switch to the Mac along with a job change back in June of 2007 and I have to say that I am glad I did. It’s not to say that there aren’t good tools for programmers on Windows, but there is most definitely a different approach to everything from the kinds of applications that you build to the way you build them on the Macintosh. These differences in some areas are subtle, but in others they are monumentous.

Core Animation, for instance, a technology that enables programmers to use animation to provide users with visual feedback of many different sorts (e.g. change window frame dimensions and watch the window change in steps rather than having the frame update instantly), is really groundbreaking. It’s not something that you see in Windows programming. There are many other technologies that have a similar appeal. Some frameworks that I’ve used such as WebKit–a framework for building web applications, or QTKit–a framework for building multimedia applications based around QuickTime, are exciting and interesting to work with.

I have made predictions in the past that haven’t come true, so when I make a prediction, you ought to take it lightly. However, on this one I feel pretty confident. Apple just gets doing technology elegantly and they’ve made their tools and libraries available to everyone so that anyone who takes the initiative can build elegant software themselves. This fact, I think, will soon have a snowball effect that will start brining programmers from the Windows world in droves. Considering the disappointment that Vista is and the fact that Microsoft doesn’t even seem to like it, Windows programmers are going to start looking for ways to deepen and broaden their toolsets and even consider new platforms such as the Mac.

So what are the hurdles to entry? I think the following list pretty well summarizes it:

  • The cost of a Mac. I’ll put this one out there even though I don’t agree with it. To get a decent professional laptop, you’ll pay at least as much if not more to get similarly equipped systems to the MacBook Pro line. The MBPs were just recently upgraded and the price is actually excellent for the specs you’re getting
  • The cost of the development environment. Oh wait… XCode is free and comes with every new Macintosh. Scratch that!
  • Objective-C uses square braces. Well, you will need to learn a new language. Just take it by the horns and go for it. It’s not that hard and once you become proficient with it, you’ll prefer it. It’s very powerful and often intuitive.
  • No real hurdles. There really aren’t any major hurdles to entry. Just get a Mac and start coding. It’s that easy. And if you need some pointers, take a look at my XCode 3.0 article to get your started. When you’re done with that, head on over to Cocoa Dev Central for some great tutorials or your can check out Cocoa is My Girlfriend a new site that Marcus and I put together.

If you are planning to switch or have just recently switched to the Mac, you should know that you are far more likely to find work building applications for consumers. Most of the work I’ve done over the years on Windows has been business software. This is one of the main differences. I think this will also shift over time, however, for right now, expect to build applications your mother might use rather than software your company might use. And if you have any questions as to what other benefits there are, talk to any successful independent Macintosh software vendor out there. There are lots of them and they do very well.