Development platforms and tools often take years to mature and gain general adoption and approval. Spotting these diamonds in the rough, though, can be very easy or incredibly difficult.
This year, the often-hyped open-source Android platform is the obvious choice for best software development. While it hasn’t been around long, its use in areas outside its original arena mark it as a significant platform for embedded developers. On the other end of the spectrum, there’s the Everyware platform from hardware company Eurotech. Everyware is built on a number of open-source systems, so it isn’t proprietary.
Google started the open-source Android project as part of the Open Handset Alliance with an eye toward smart phones (Fig. 1). But Android is quickly becoming much more as it invades everything from set-top boxes to robots.
Based on Linux, Android’s middleware makes the difference, including the Dalvik virtual machine and integrated Web browser. It specifies SQLite for structured storage and Open GL graphics, and it supports a host of standard media formats from JPEG to H.264.
Android takes advantage of the Eclipse open-source development environment. It doesn’t specify the underlying hardware, allowing it to run on everything from an ARM to a MIPS processor. The core libraries run on the register-base Davlik virtual machine, providing portability. A Java virtual machine provides similar portability, but it is stack-based. Both support Java applications, though other programming languages can target both types of virtual machines.
Android middleware provides many services similar to those found in the OSGi f ramework. This flexibility will enable Android to find a home outside of the cellphone market.
OSGI IS EVERYWARE
Getting a new system up and running starting with a C-based board support package (BSP) is typical and time consuming. Likewise, Arlen Nipper, Eurotech’s president and CTO, has noted that customers often were reinventing the wheel with each new platform, developing services such as remote update management.
Eurotech’s Everyware addresses these issues (see “Everyware Everywhere”). It’s built around the Java-based OSGi framework, which is the basis for the open-source Eclipse integrated development environment (IDE). Also part of the puzzle is Wind River’s Linux, IBM’s Java virtual machine (JVM), and a host of general and hardware- specific “bundles.”
Bundles are Java packages (Fig. 2). Eurotech provides a collection of hardware-specific bundles for its boards plus a set of common bundles useful for embedded applications. It’s also possible to use many of the bundles developed for other platforms such as Web and mail servers.
C and C++ are still the mainstays for embedded developers. But even legacy code can be incorporated into an OSGi platform by utilizing the Java Native Interface (JNI).
One thing common to these two winners is the use of virtual machines. Portability and reliability are primary advantages, though performance and security are advantages that many designers overlook.