Almost three years have passed since Google launched the Android OS, aiming to conquer the cut-throating mobile world, after having succeeded in the internet world. Android is an operating system for mobile devices that includes middleware and key applications. However, its use is not limited to smartphones, but it can also be found Tablet Computers, E-Reader Devices, even netbooks. There is Linux under the hood after all. Initially, only a few devices were supported, with the first one being the HTC Dream, released on October 2008. The list of Android devices is growing ever since.
Google has released most of the Android code under the Apache License. The Apache License is considered “enterprise friendly” and vendors can add proprietary extensions without submitting those back to the open source community. You can actually download the Android source code and build your own device intended to run the Android software stack. Or you know, just mess around with it.
Google is not alone in this difficult game. The Open Handset Alliance (OHA), a business alliance of 65 firms for developing open standards for mobile devices has been created (with Google on the front, of course). Big names have joined, namely HTC, Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG, T-Mobile etc.
OHA’s philosophy is to deliver an open platform, revolutionizing the way the mobile world operates. The moto behind the application creation is that “All applications are created equal”. This means that both phone’s core applications and third-party applications have equal access to a phone’s capabilities.
If you are a developer and want to develop for the Android OS, then the Android SDK is the way to go. The Android SDK is used, including a comprehensive set of development tools. All major platforms (Windows, Mac and Linux are supported). The main language used for building applications is… Java. However, the software does not run on your ordinary Java Virtual Machine, but rather on a very specialized one designed specifically for Android. It’s name is Dalvik and it is optimized for battery-powered mobile devices with limited memory and CPU. So yes, this has nothing to do with JME, totally different kind. This prevents compatibility among Java applications written for those platforms and those for the Android platform. Android only reuses the Java language syntax, but does not provide the full-class libraries and APIs bundled with Java SE or ME.
If you believe that performance is your number one priority, then what you need is the Android NDK, a companion tool to the Android SDK that lets Android application developers build performance-critical portions of their apps in native code.
The Dalvik Virtual Machine runs applications which have been converted into a compact Dalvik Executable (.dex) format suitable for systems that are constrained in terms of memory and processor speed. If you want to dig deeper on the Dalvik Virtual Machine, check the Dalvik VM Internals presentation. After Android’s version 2.2, Dalvik has a just-in-time compiler, boosting performance even more. As with most virtual machine’s code, there is a disassembler tool for DEX files. It’s name is Dedexer and it is open source software.
We have to mention that Dalvik use a subset of Apache’s Harmony project for the core of its Class Library. Apache Harmony is an open source, free Java implementation, starting with Java SE 5 and 6. As mentioned in its website, the project aims to provide:
- A compatible, independent implementation of the Java SE 5 JDK under the Apache License v2
- A community-developed modular runtime (VM and class library) architecture
To lure developers all over the world to create apps for its new OS, Google organized the Android Developer Challenge, a competition for the most innovative application for Android. What other way to inspire developers, than offering them 10 million dollars, right? There were two challenges, gathering the attention of developers all over the world. Check out the winners on the following links:
New Android applications, both free and commercial, can be found at the Android Market. Android Market is an online software store developed by Google. It offers a catalog of applications that can be downloaded and installed to target hardware over-the-air, without the use of a PC. Android Market has rapidly grown, currently hosting over 70,000 applications (as of June, 2010). Check the market statistics for yourself.
That’s it. A short introduction for a mobile platform that is here to stay. In the following posts, we will describe how to install Android OS in a virtual machine and provide tutorials on how to build apps with the SDK.
Stay tuned here, at JavaCodeGeeks.