Android VM Performance is not a Factor
It seems that that time has come in the Android vs. iPhone war where arguments that the faster VMs in Froyo and later versions of Android will mean that Google’s mobile robot platform is going to crush the iPhone. While this battle is far from clear and who knows which way it will go, I will laugh at anybody who tries to say—with a serious face—that VM performance is what ensures that Android will be a better platform.
Listen kids, this has all happened before and it will happen again. Fifteen years ago, all we thought that Java needed to rule the known universe was a faster VM. If we just had that, Windows and all native UI applications were toast. After lots of hard work by wicked smart people, and more than a few years, Java VM performance was increased to the point where it wasn’t a problem any more. But that didn’t change the equation of where Java did or didn’t succeed. Most notably, the Java GUI applications didn’t suddenly kick native Windows or MacOS applications to the curb. For quite a few of us that worked on the Java platform in the late 1990s—at least the more rabid of us—this came as a bit of a surprise. And a disappointment.
Yes, that increased performance came in really handy in the place where Java did eventually kick ass: on the server. But even before the super-fast JVMs came online with HotSpot, we were doing some really neat and compelling things with Java on the server thanks to decent API design, a long-lived process model, and persistent database connections. Servlets—the technology I worked on back in the day—were awesome because of design, not raw speed. The increased performance that came later simply helped out what was already a good thing.
The problems with Java GUI apps weren’t about performance. They were much more fundamental. They involve a lot of factors that aren’t measurable by numbers at all. Was building Swing and replacing AWT the right way to go? Would something else have worked better? Who knows. I don’t pretend to know and I don’t think that anybody really has a good answer. What we do know is that people seem to prefer native desktop GUI applications by large measure. Just run the numbers. Look at your own desktop.
All that said, Java’s failure on the desktop has nothing to do with the story of Android. No, the little robot OS is innovative and kicks ass in lots of ways. In the bit that I’ve looked at it, the team at Google that works on Android—some of whom I used to work with at JavaSoft and Sun—have done a really good job on several tricky things. It’s already an important platform and it’ll continue to be so. A faster VM will certainly help things out. But Android’s eventual fate will have little to do with how fast the VM is or how long method dispatches take on the iPhone. Instead, it’ll have to do with harder things like user experience, service plans, interoperability, and excellent applications.
But what do I know? I’m just a photographer these days.