The King is Dead, Long Live the King

I’ve been resisting the temptation to write about Android. But after reading some of the blogs about Android netbooks, I can’t keep quiet.

Aside from being a Really Cool Idea, I don’t have a lot to say about netbooks themselves. I’ve got an Android phone (thanks, Google), and I like it, and it would be nice to see the operating system move from the cell phone world onto other hardware. Netbooks are a logical step. But what’s the next step after netbooks? How long will it be before we see “big” computers–full sized laptops and desktops, developer machines for serious coding, video and audio production, even servers–run on Android?

What would have to happen for Android to become a developer operating system? Probably not as much as you think. We'd need the sorts of tools you expect on a desktop–but Google already has an office suite. We'd need developer tools, but I see no reason to believe that Eclipse couldn't be made to run well on Android. (Yes, you'd have to replace SWT with an Android UI.) And there's already Mozilla's bespin, which is looking more and more like a browser-based IDE every day.

A few other tools would be needed. Everybody Loves to Hate Java, so I have no illusions that developers will drop their favorite languages to write native applications. But that’s not necessary on several levels. JRuby on Android? @headius reports that he’s already done it.(thanks for the tip, AH). What about the other languages that run in the JVM? If JRuby runs easily, Scala, Groovy, Clojure, and the other 100+ JVM languages can’t be far behind. C and C++ might fade into the past (running C in a virtual machine just misses the point), but that’s about it.

Think about how that would change the game. We’d have a fourth major operating system to contend with–and two of the major operating systems would be open source, from the top down. Linux has a decent share of the server market, but has never thrived on the desktop. It would be great to see a new platform cause a big jump in open source’s share of the end-user market. Do we really need another desktop/netbook option? I like chaos, and admit that I enjoy thinking about the creative forces that would be unleashed. We might indeed end up with the browser being the platform for the next generation of applications–and that might finally make operating systems irrelevant. That’s something Sun promised, but never managed to deliver.

So–what does this have to do with royalty? In the past two weeks, there have been two conferences in Moscone Center: Google I/O (which I attended) and JavaOne (which I missed). While Larry Ellison’s JavaOne keynote was described as a farewell party for the Sun execs, it struck me more as the captive nobility lead up on stage before having their heads put on pikes and paraded around Silicon Valley. I mean no disrespect to Mr. Ellison, but we’re adults here–we know how this game is played. If it was a farewell party, where was the cake? Where were the gold watches?

For a long time, I thought that “The King is Dead, Long Live the King” was a funny bit of irony, or cool dadaist humor. But it really refers to the doctrine of the King’s Two Bodies. A king is a mortal person: he’s born, he lives, he dies. Nothing changes that. But the king is also the embodiment of the State, and when he dies, physically, the state lives on, embodied in the next king.

It’s clear that Java’s center of gravity has moved. Google I/O was filled with interesting developers doing interesting things and excited about the changes they were bringing to the industry–whether it’s revolutionizing communications through Wave, bringing new applications to phones with Android, simplifying the deployment of JDK-based web applications with App Engine, or changing the way we generate applications with GWT. And, while I wasn’t at JavaOne, and while many excellent developers were there, I haven’t seen anything from JavaOne that I’d consider a major announcement or a new technology. Last year at JavaOne, developers were justifiably excited about the flowering of languages that run on the JDK. This year, the most important thing I’ve heard is that Oracle isn’t ditching JavaFX. FX is interesting technology with some good potential; it’s nice that Oracle isn’t ditching it, but not killing FX hardly makes you a technology leader.

Google is exercising leadership and vision in the Java space in a way that reminds me of Sun in its best years. But there’s a difference, and that difference is tilted decidedly in favor of Google. Sun has been good at coming up with great ideas, but abandoning them half-finished if the followers didn’t show up. Think about Android again. Back in the early days, Sun used to talk about JavaOS, now a “legacy system”, according to Wikipedia. But it took Google to build a true Java-based OS, and what’s more, it took Google to make developers care about it. Think about GWT. GWT must be an acquired taste–I admit, I don’t get it. But Google has been riding that horse for some time, and it’s finally paying off for them. If it were Sun, it would be dead by the roadside, like JavaMedia.

Google is not exercising the other kinds of leadership that Sun has displayed during its tenure. On the whole, that’s a good thing. Google have different goals, and their goals seem better aligned with what developers need now. I don’t think Java needs more language pyrotechnics; is anyone really excited by the idea of Java 7? Not me. Java certainly doesn’t need micromanagement of “official” libraries. While the JCP is less dysfunctional than most standards committees, it’s riddled with politics, has made plenty of poor compromises for bad reasons, and at this point is holding things back rather than moving things forward. And while I appreciate the standardization of the JDK, Sun’s position on compatibility (and compatibility testing) is unfair to non-corporate developers, and is one of the reasons that Sun remains the company people love to hate. The years in which Microsoft tried to “embreak and extend” Java are long past, and the paranoia that legitimately arose from that situation is no longer useful or appropriate.

Sun has accomplished great things, and I hope they continue to do so as part of Oracle. The JVM is wonderful technology, and “write once, run anywhere” really works: in the application I’ve developed and maintain, I never have to fix platform-specific bugs. But it’s time to move on. Who is moving Java into new areas? Who is doing exciting work? Who is building the future?

The metaphysics of the two Moscone conferences are clear. Google is providing the idea leadership that the Java community needs.