A handset operating system and a rich and functional SDK for handset software development, Android is considered Google's entry into the mobile world, but it's actually being developed by the Open Handset Alliance. Working together, hardware companies, software companies, and mobile operators are developing a free and open mobile platform. Google's involvement in the project is extensive, with Google hosting the open source project and providing documentation, tools, forums, and the SDK.
Android is an emerging mobile technology still in the development phases. Early releases of the SDK have been made available to the mobile developer community to start writing applications before handsets are available on the market. Fully featured Android handsets are expected to start shipping towards the end of 2008 or early 2009.
For the developer, Android is a new mobile platform based on Java running on top of a Linux kernel. For now, Java is the only development language available, but eventually Android may support other programming languages. Android has a complete set of application programming interfaces available for everything from user-interface components to accessing location information.
Unlike other mobile development platforms, all Android applications have access to the same APIs. There is no distinction between native applications and developer-created applications. This allows for more innovative applications than are currently available.Why Is Android Important?
Mobile application developers are watching Android, which promises to be an exciting new market in mobile device development. The manufacturers of Android handsets are amongst the largest in the world. Mobile operators from all the hot mobile tech markets (Europe, Asia, and the Americas) are involved in the Alliance, with others also announcing Android handsets in their upcoming product lines. Mobile application developers looking for broad mobile coverage will need to factor Android handsets into their product plans in the near future.
Android's open platform is being embraced by many operators. Verizon has said their network will be open to any device and any application and AT&T has said much the same. If an open platform reduces operator costs, there could be a migration to open handsets from proprietary platforms and Android is well suited to fill this demand. If Android does carve out its audience from existing platforms, you'll want to be ready so your customer base doesn't shrink.
Early developers are likely to have many of the typical first-to-market advantages, such as a smaller base of competitors or even none at all. Additionally, this early exposure and experience can have lasting advantages over competitors later to the market. Incentives are also being provided, like the Google-sponsored Android Developer Challenge.
Early days of Android development have exhibited many similarities to the early days of development for both J2ME and QUALCOMM's BREW platform. Early support is available via community forums and online documentation. It's a new platform, with all the typical roadblocks.
What Benefits Does Android Have?
For the mobile developer, Android has a number of benefits over other platforms. Android is an open-source platform and the SDK and basic development tools are freely available. You'll be able to use your favorite Java development environment. Plug-ins for Android project development are already available for the popular Eclipse environment. The development tools are all available for Linux, Mac, and Windows PCs.
Android is an open platform, both in the open source sense and in the open API sense. Several stock applications, such as the contact application and the web browser, will be distributed on Android handsets and are being developed with application interaction in mind. Google is also providing some core services that are not readily available on other platforms. Developers will have access to Google Maps to display location information. A messaging service for peer-to-peer communication without the use of SMS, as is common on competing platforms, will also be available. This is another case of enabling application innovation that either isn't available on other phones or would be cost-prohibitive to replicate.
The goal is to allow for new and innovative applications that either can't be done on existing platforms or simply haven't been allowed. This openness extends beyond simply providing access to the data on the handset. Included applications can be customized or even replaced entirely. For example, a corporation could replace the messaging application with one that only allowed secure messaging through the company's servers or a user could replace the included photo viewer with one of their choosing.
The Android APIs are extensive and modern. In addition to the typical APIs for screen drawing, user input, and network access, you'll find APIs for storage, media, graphics, and even direct hardware access. Media APIs are available for both playback and recording of audio, video, and still images. For storage, developers aren't limited to file-based APIs. SQLite is available for relational data storage, a preferences API is available for simple setting storage, and applications can extend the data storage mechanisms available. OpenGL ES, with optional hardware acceleration, is available for 3D graphics applications. Lastly, there will be a set of low-level APIs for direct access to the hardware, such as WiFi or Bluetooth. Most mobile platforms don't allow low-level access to the hardware, but Android allows developers to extend the hardware on a given handset. For instance, it might be possible to add support for Bluetooth profiles that weren't provided out-of-the-box.
Security is essential with such an open development environment. Therefore, a tight security model is built into Android. Applications are only granted required permissions (data access, APIs used, and so forth) at installation time and cannot change their permissions later. So, an application can't remotely add a new feature to, say, read a user's location with or without the user's permission. This is a big step towards preventing malware and easing privacy and safety concerns for users of the platform.
What Could Be Better?
For all of its benefits, Android is not perfect. It's a moving target, always changing and improving, and it's not always stable. This introduces risk for early developers of Android applications, but being aware of the risks associated with any new platform is key to success. Android developers currently using the early-release SDKs have had to cope with changes to APIs between releases of the SDKs as well as incomplete APIs and defects with the platform have not been uncommon.
Also, the question of how to sell your Android apps to end users once Android "goes live" remains unanswered. There has been no formal announcement of any traditional application store for developers to distribute their applications through. Many in the Android developer community are assuming that some distribution solution will be developed before Android is commercially available. At a recent Google Fireside chat, Google's Director of Mobile Platforms said some form of distribution has been considered, but Google has made no commitments. Without a shared distribution channel, small developers or developers wishing to distribute free applications may have a much harder time getting the distribution they would like. There is also the possibility that operators will create their own application stores and enforce their own rules, leading to a closed distribution environment.