Nov
13
Updated 11/13 12:12pm, see bottom of article.
It’s now been over twelve hours since the Android SDK and documentation hit the web. Before I sleep, here is a rundown of one of the technical aspects of the Android release that surprised and impressed me the most. By far the biggest, ballsiest move we saw from Google today was the announcement of the Dalvik Virtual Machine within the Android architecture. Following the Open Handset Alliance’s initial announcement last week that revealed Android would be using the commercial-friendly Apache v2 license for everything but its linux kernel (here’s a good Ars Technica article explaining why), there was much speculation on what sort of development environment Android would adopt, since Sun’s own open-source reference implementation of J2ME (phoneME) is GPLv2 and therefore incompatible, and Sun was conspicuously absent from the OHA lineup (despite the CEO’s public approval of the project while promoting the Netbeans IDE).
Sooo, what about Google Android and phoneME?
Boom. Forget Sun and Java ME, enter the Dalvik Virtual Machine. Named after a small Icelandic fishing village, pop. “nearly 2000” (is this why all these icicles are everywhere??), this virtual machine seems to be based on the Apache Harmony open source Java implementation, heavily tweaked by Google and supposedly optimized for running efficiently on mobile devices. It runs a custom bytecode that doesn’t conform to either Standard or Mobile Java’s specification, and therefore needs its own special conversion process after the Java source is compiled. According to Google,
The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included “dx” tool.
Now, although this might bring back painful flashbacks of the old Microsoft-Sun Java wars, if Google releases the source to Dalvik as promised, making it open-source community-supported instead of proprietary, then there should be little conflict to worry about. Furthermore, although the Android-paranoid have worries about a non-J2ME implementation increasing language fragmentation in the already-Babel-ed mobile space, this move at least has the potential to become a free-to-all Java solution that could end the age of a myriad of proprietary J2ME JVMs all competing for the commercial phone application market (remember that Sun’s own phoneME is GPLv2-licensed and incompatible with commercial closed-source applications, making it pretty much useless on actual device implementations except as a standard reference.)
In the end, all this means that with Dalvik, Android will be able to freely package a heavily customized and optimized, open-source and commercial-friendly virtual machine with its mobile operating system.
And one final tidbit for you J2ME-lovin’ Dalvik-bashers out there: According to their official press release quote, OHA member Esmertec will be offering a (presumably commercial) Android-compatible version of their popular J2ME Virtual Machine:
“Thanks to the availability of our Jbed™ Java™ VM on the Android platform, we offer immediate compatibility to the standard Java ME world to enable Java ME-based mobile services with the Android platform.”
For another take on the significance of Dalvik’s license to open-source mobile development, check out Stefano’s very insightful post.
Update: CNet News is reporting that “a more significant departure than just using an in-house VM is the fact that Android isn’t part of the Java Community Process that Sun established in 1999 to oversee the development of new Java features.” This is definitely true, their decision to part ways with Sun through Dalvik is much more thorough and has much broader implications than simply the features within the Virtual Machine itself. It means that Google probably won’t be following the design-by-committee process of JSR that has dominated the mobile industry up until this point. While some worry that this will add “just another standard” onto the already fragmented scene, many are fed up with the lousy state of support for existing JSRs and believe that a solid, openly documented, full-featured, branded system could carve a path that others will inevitably follow for the sake of market competition, not out of being beholden to a certain official specification. In any case, it is becoming clearer why Google felt it necessary to assemble together so many companies to make a phone - they’re not just trying to build a cool phone, but they’re trying to start a new standards-setting method for innovation in the process.
I’m surprised the mainstream press is not making a bigger deal of this. Nice catch.