Programming for Cool Devices Using the OpenSource Java ME phoneME Stack
By Janice J. Heiss on Apr 06, 2008
I took in a session by Terrence Barr a senior staff engineer at Sun Microsystems and Evangelist of the Java Mobile and Embedded Community, who offered an update on Java ME. It’s on two to three billion mobile handsets. Yes, "b" as in billion! Third-world farmers with access to handheld devices are getting climate information via the web to guide their decisions. It appears that much of humanity is meeting and greeting the web through handhelds – and Java ME. It’s kind of thrilling to be the tiniest part of it, even if only as someone who reports on and promotes it.
Barr has been working on various aspects of Java ME for a number of years, is chairman of the EEMBC (Embedded Microprocessor Benchmark Consortium) Java subcommittee, participates in the Open Mobile Alliance the “industry forum for developing market-driven, interoperable mobile service enablers,” and is co-author of JSR 246, which enables Java ME applications to access device management implementations. So hats off to him and the whole community.
Mobile Services Architecture – JSR 248
Barr first made it clear that the code in the Java ME open-source community is full-blown, compilable, and runnable with a lot of functionality that can be used to build devices and platforms. His goal was to show the large room of developers how they could make use of it for themselves. Currently the MSA (Mobile Services Architecture) is what all the new devices implement and what anyone getting in the game should target. This is JSR 248, an umbrella specification that does not define any new functionality but combines and clarifies existing specifications. While the JSR 248 spec leads are Nokia and Vodafone, Sun is also involved. It’s on a lot of mass market phones now; Sony Ericsson has at least eight devices and Nokia’s popular 40 series also uses MSA.
The JSRs that are combined under MSA cover such things as communications, graphics, security, application connectivity and environment, personal information, and more. It can be used, for example, for mapping, web services, messaging, and camera access. Obviously it’s extremely rich.
Why Open Source
Barr explained what bears repeating: Sun open sourced Java ME, fundamentally, to remove barriers to innovation. Formerly, to experiment with Java ME, developers had to talk to device manufacturers, carriers, and maybe even platform implementers. Because reliable information was hard to come by, and code was not public and could not be seen, it was hard for the community to flourish. Sun is working to bring vendors, software developers, and tool companies together to collaborate as one ecosystem.
The Mobile and Embedded Community
The Mobile and Embedded Community is lively and active with constant news updates. More than 140 Java ME projects are alive there. “One important project that is near and dear to me – because I am the owner of it,” said Barr, “is the ME Application Developer Project which is primarily geared towards the people who want to write interesting applications and don’t want to deal with the virtual machine internals and the stack.”
Why be involved in the open source community? “This is a place like no other,” explained Barr. “It’s the only place where experts at Sun who’ve been working on this technology for years can answer questions in very active forums. It’s the only place where you can get the complete source code of Java ME implementations and answers about how things actually work deep down at the platform.”
There is a lot of code that can be downloaded and used under the BSD license.
The phoneME Project
Next, Terrence turned to the phoneME Project, whose objective is to further expand the usage of Java ME in the mobile handset market. The scope of the project includes a focus on the mainstream feature phone segment with phoneME Feature software, and the emerging advanced phone segment with phoneME Advanced software. By making these technologies available to the Mobile and Embedded Community, the idea is to reduce implementation variation, increase innovation, and enable new devices to leverage Java ME.
It’s technically two things: a CDC-based stack and a CDLC-based stack, which are different owing to different VM functionality. When Sun open sourced Java ME, they had been selling commercial Java ME stacks to licensees, typically handset manufacturers, so Sun had to remove the code bits that they did not have rights to, like third-party plugins. The rest went into the open source repository. Barr took pains to make it clear that this is the actual code of commercial implementations – it’s the real thing. As the code is developed, changes are put back on a daily basis.
He also pointed out that the phoneME Project is not necessarily phone specific; while it started out with mobile phones, people are using it outside the mobile space. He described the dual licensing policy, one for the community under GPL v2, the other for commercial enterprises and proprietary code extensions.
Since the phoneME project began in late 2006, phoneME features have been widely used. Sun’s Project Sun SPOT technology uses all the libraries in the phoneME library.
Barr showed developers the intricacies and complexities of making use of the Java ME code repository, presented a demo, and made a pitch to the thriving and gifted Russian developer community to innovate with Java ME.
Learn more about Sun Tech Days.
Janice J. Heiss