Sunday, April 18, 2010

wasssup with java?

Every time I turn on my PC now, Java wants to update. What's up with that? Java is 14 years old. I really don't expect a 14 year old system to keep having new patches all the time. I mean, I get that the hardware changes and whatnot. And it needs to be updated from time to time. But seriously.... I must have had to patch 6 times so far this month.
Now this:

I've gotten to do some Java development again recently, and I do still like it. It's a fine technology. But I wonder if it's getting left a bit behind. Microsoft has really been pushing some of the tools and extended features of .net. Generics, attributes, workflows, now Pex and some of the new tools. Don't get me wrong, I don't think Java's going anywhere. It's a great language and you can do awesome stuff with it.
But I've always thought Java was a language in search of a purpose. At first (remember?) it was designed for portable devices -- cell phones, pda's, mp3 players. That was its birth reason. These hand-held things changed constantly so having an interpreted language (write once, test everywhere), was a great idea.

Except that it was too top heavy to run on those things (especially 14 years ago). So it was proclaimed to us that Java applets was the way of the future for the web.

But, of course, they're top heavy too. And they take a lot of bandwidth, back when people were still connecting over modem.

So, we were told that what was coolest about Java was its ability to run on different servers, and Java servelets were the answer. This really was a great idea. And it took hold a little. But there were 2 problems with it. First, companies don't need to have the same language across multiple servers. They don't move apps from Unix to Mainframe to Windows very often. So the idea of a cross-platform language was unneeded. Second, the hard-core OS developers (like Unix admins and guys who wrote assembler on mainframes) really didn't care about Java. These weren't the software geeks who got stoked by new object oriented ... anything. And they were perfectly happy with Perl, thank you very much.

So, the *real* reason for Java we were told was CORBA. This would allow developers to write thin tiers on Windows and Unix (and whatever else) to facilitate communication between boxes. And then the hard-core OS devs could write the real complex stuff, and it could be invoked from Java. Great idea. Terrible implementation. I'm sure someone somewhere is using it, but I never spoke to anyone who could actually get it to work reliably.

Next, we learned that the *real* purpose for Java was UI development on a desktop. Enter Swing (well, JFC pre-dated it, but sucked so bad, I don't even want to remember it).
Swing, again, was a great idea. And a wonderful implementation. Personally, I think Microsoft has *finally* just caught up with some of the great ideas (like databound controls that bind to objects rather than databases, really separating the UI from the raw data).
I spent about a year developing Swing apps. And I have to say that it was the greatest framework I've ever used that really, really sucked. Developing it was cool. But it was so, sooooooooo buggy. I remember writing window frames that the user had to resize manually in order to get them to refresh. There was nothing I could do programatically to do it... that actually, you know... worked.

In the end, EJB won the fight. And it is cool, it really is. The big win for EJB is also its big loss. Sun, who developed the standard, doesn't actually build the implementations. Which means there's a huge disparity in reliability. What works in IBM's server, doesn't in BEAs. What's great in JBoss isn't great in IBM's.

And now this.
Gosling quit.
Not a surprise after the takeover by Oracle. Still, it's a blow.

So I wonder where Java is going. I really would love to see Gosling connect with some of his old peeps and create a "newJava" . I really like Java, but I think it's time for a makeover. What would be even cooler is if he really went open source this time and connected with the ANSI group from the start.

Meanwhile, I'd be happy if I just didn't have to download new patches every day.
--kevin