Google's Android software gives Sun Microsystems' Java technology a starring role — but not the version of Java the rest of the mobile phone industry has been developing since the 1990s.
Instead, Google struck off on its own in an attempt to improve performance and openness for the software used in the Open Handset Alliance phones. That means programmers will have a new variety of Java to reckon with — offset somewhat by Google's US$10 million code contest to draw developers in.
One difference is Google's development of its own core Java virtual machine (JVM) technology called Dalvik, the software that actually executes Java programs on an Android phone, which Google says means Java programs run fast even on the constrained hardware of mobile phones. But a more significant departure than just using an in-house JVM 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.
The JCP governs Java by codifying new features as application programming interfaces (APIs), so programmers can have a standard way of calling upon new technology such as Bluetooth support or 3D graphics. But that existing Java realm wouldn't accommodate the developer freedoms Google thought were important in Android.
"We wanted the platform to be open in a lot of different ways," said Mike Cleron, a Google senior staff engineer working on Android. "The idea is that anybody can come along and replace the pieces of the Android experience on a very fine-grained level. The existing APIs didn't really allow the level of openness we were hoping to achieve in Android."
It should be noted that Google isn't working in a Java vacuum. For example, one of the OHA partners, Motorola, has helped lead development of Java for mobile devices, and Google wants to keep the Java programming experience familiar to developers. And Google is an executive committee member of the JCP, though only for the Standard and Enterprise editions that run on PCs and servers, not the mobile edition for phones and other devices.
"We have people on the team who are active in the Java community. They've been helpful in informing us and guiding us, making sure what we were doing is familiar to folks in the Java community," said Steve Horowitz, Android's engineering director.
But the bigger issue is whether Google's effort will worsen the already fractured world of Java. Not all phones support all the same Java standards, so programmers can't be sure that their software will run on a multiplicity of devices, as the "write once, run anywhere" Java tagline promises.
"They are using Java, but they aren't implementing any well-known Java framework, and really that just creates another standard to support. The risk they take here is that they might fragment the market further," Benoit Schillings, Trolltech chief technology officer, told my comrade Maggie Reardon. Trolltech, which sells tools and components for programmers whose software runs either on PCs or on mobile phones.
Mauro Lollo, CEO of mobile phone video-streaming company Movidity, saw Google's work similarly. "In essence, they've created another standard. Standards are great, but the challenge is that there are so many of them," he said.
Google also faces a common risk of open-source software, that the openness will mean programmers can "fork" projects in different, incompatible directions. (Indeed, this was one of the earlier reasons Sun resisted its eventual decision to make Java open-source software.) "In the end, you could have 20 different versions of the Android technology that are incompatible, because anyone can take the license, modify it, and create another variation," Schillings said.
For its part, Sun supports Java and open-source software on mobile devices, but expessed some caution about joining Google's alliance. "We were interested in being part of the Google ecosystem, but we were interested in getting more clarity on what this program entails," said Rich Green, executive vice president of Sun's software effort.
Asked if there's any possibility of unifying the Android work with the Java Community Process, Horowitz said, "It's an open alliance. We can welcome anybody who wants to join."
Techno-politics aside, Google clearly has grand aspirations for Android. And it wants outsiders to be part of the development.
In stark contrast to Apple, which plans to release a software developer for its iPhone in February, half a year after the product began shipping, Google is releasing its SDK about a year before any Android phones ship.
"We're making it available pretty early—early enough that we can get feedback at a point where we can still impact the direction of the software," Horowitz said. "People tend not to ship SDKs until the products are done. In this case we thought the platform was such an important part that we wanted to get that out early."
Of course, there's another advantage to releasing an SDK early: the open-source community can help build interesting applications that give Android phones more than just the basic set of programs.
So far, so good, said Horowitz, pointing to "unprecedented" interest in Android compared to other projects hosted at Google's open-source projects site, code.google.com. "It is above and beyond anything Google has seen to date," Horowitz said.
Among details in the SDK:
- It makes mention of support for GSM mobile phone networks, the leading technology for mobile phone networks, but is silent on support for the top rival, Qualcomm's CDMA. That will come, though, Horowitz said, pointing to CDMA allies such as Qualcomm that are members of OHA. "It's clearly something on the roadmap, but we're not talking about specific support for it at this time," he said.
- OHA supports touch-screen technology, but Horowitz declined to comment on support for multitouch, a notable iPhone ability that opens up user-interface possibilities, beyond saying multitouch support isn't in the first version of the Android SDK.
- Google will release a new version of the Android SDK once feedback from programmers starts coming in. "We're committed to a regular release cycle," Horowitz said.
- Software should run quickly on mid-range phone hardware such as those with a 200MHz ARM 9 processor. "One of the key goals of the project was to ensure we can run on a broad range of phones that don't require a high-end processor at all," Horowitz said. "When we bring it to higher-performance devices, it's just going to scream."
- The SDK so far permits development only of software that runs on the Java foundation, not natively on the hardware itself. "We are aware of the interest in native application development, but we having nothing to comment on right now," Horowitz said. But performance shouldn't be an issue: "Our system is designed to take full advantage of native code in performance-critical areas and expose this functionality through our framework APIs."
- Posted By Stephen Shankland
Margaret Reardon and Dawn Kawamoto contributed to this report.