Mobile devices are hot. This is especially true in the smartphone market with products like Apple’s iPhone and the Verizon Wireless Droid. The hardware on these platforms is impressive, but the software and the service infrastructure around the systems really make the difference.
The large number of iPhone applications highlights how easy a good development platform can make application delivery. The iPhone may be popular, but its software platform is designed for a limited number of hardware platforms, all from Apple.
The Symbian OS (operating system) and framework address the same realm as the iPhone, but Symbian targets a wider range of platforms, including ARM-based smart phones. Symbian OS is now an open-source project hosted by the Symbian Foundation.
Android is similar to these OS frameworks, and its initial target is smart phones. That isn’t surprising given its sponsor, the Open Handset Alliance. The thing that makes a difference with Android is the level of interest for using it on platforms other than smart phones. If developers are going to take advantage of Android, they need to know how it works. For a contrast to Android, consider two other platforms that address hardware in this space.
One of the most popular is Microsoft’s Windows CE, known as Windows Mobile in the smart-phone market. But its underlying framework architecture is the same as that found on Microsoft’s desktop and server platforms, including the latest desktop version, Windows 7.
The next platform in the mix, Moblin, is based on Linux, just like Android. It suits netbooks and mobile Internet devices (MIDs) that utilize the Intel Atom. In this aspect, Moblin is similar to the Apple and Symbian solution, where a certain class of hardware is the base.
All three platforms are distinct, but they share many types of common components. For example, Android and Microsoft’s .NET framework are both built around virtual-machine (VM) technology.
ANDROID’S ANSWER
“Android takes the complexity out of Linux and provides developers an easy-to-use and widely known environment from Google for GUI (graphical user interface) creation, keeping their focus on making solutions compelling for embedded systems far beyond just handsets,” says Jason Kridner, open platform technologist with Texas Instruments.
“This makes it a great operating system for OMAP 3 processorbased designs, such as TI’s OMAP35x evaluation module or the immensely popular community-supported BeagleBoard, allowing open-source innovators to build on a small, low-cost ARM Cortex-A8-based system with high performance and low power,” Kridner adds.
Based on Linux, Android uses native device drivers to provide a set of services to the underlying Android framework. Native applications can run on the system, and it’s possible for them to access these services, but most applications will be written in Java and target the Dalvik VM (Fig. 1). These applications can also take advantage of the application framework that provides the user interface familiar to users of the Verizon Wireless Droid, which is one of the latest Android smart phones (Fig. 2).
The Dalvik VM (DVM) runs Dalvik Executable (.dex) files. These compiled Java applications resemble class files used with a Sun Java virtual machine ( JVM). Conceptually, there is little difference from an application level between a DVM and a JVM. Architecturally, there is a major difference between the registerbased DVM and the stack-based JVM.
Both use a VM code model. However, the DVM uses registerbased opcodes that are comparable to the register-based bytecode instructions that most of the target platforms already execute. This includes architectures such as those available from ARM and MIPS and the x86-compatible architectures from Intel, AMD, and VIA Technologies.
Google developed Android and chose DVM for several reasons. First, there were licensing issues with most JVMs. Next, the DVM should be more efficient in terms of memory usage and performance on a register-based machine. DVM is also supposed to be more efficient when running multiple instances of the DVM. Applications are given their own instance. Hence, multiple active applications require multiple DVM instances. Like most Java implementations, the DVM has an automatic garbage collector.
It’s going to be interesting to see if these advantages pan out in the long run or especially as memory capacity and processor performance on the targets increases. At this point, the DVM does not support just-in-time (JIT) compilation. On the other hand, the dex files can be optimized for the hardware when the files are loaded into the system.
As noted, Android has its own Java classes for the services it provides. These are comparable but not identical to the kinds of class services provided with Java SE or Java ME from Sun. Android does not support the graphical AWT and Swing libraries common for Sun-style platforms.
Instead, Android has its own user-interface classes, including support for OpenGL. The base set of classes will be found on smart-phone platforms including interfaces like Bluetooth and the telephony interface. They may not be required on other embedded Android platforms.
The Android software development kit (SDK) is a free download from the Android Web site. It can be used with a range of development tools. The Android Development Tool (ADT) Eclipse plug-in allows Android applications to be developed using the open-source Eclipse platform. This includes the large number of third-party toolsets based on Eclipse like Mentor Graphics’ ESD.