Android, Inc. started with a clear mission by its creators. According to Andy Rubin, one of Androids founders, Android Inc. was to develop smarter mobile devices that are more aware of its owners location and preferences. Rubin further stated, If people are smart, that information starts getting aggregated into consumer products. The year was 2003 and the location was Palo Alto, California. This was the year Android was born.
While Android, Inc. started operations secretly, today the entire world knows about Android. It is no secret that Android is an operating system (OS) for modern day smartphones, tablets, and soon-to-be laptops, but what exactly does that mean? What did Android used to look like? How has it gotten where it is today? All of these questions and more will be answered in this brief chapter.
Origins
Android first appeared on the technology radar in 2005 when Google, the multibillion-dollar technology company, purchased Android, Inc. At the time, not much was known about Android and what Google intended on doing with it. Information was sparse until 2007, when Google announced the worlds first truly open platform for mobile devices.
The First Distribution of Android
On November 5, 2007, a press release from the Open Handset Alliance set the stage for the future of the Android platform. The alliance stated some of the goals of Android as, fostering innovation on mobile devices and giving consumers a far better user experience than much of what is available on todays mobile platforms.
At that time, more than 2 billion mobile phones were used worldwide, compared to the 4.6 billion used as of 2010. However, there was no coordination of platforms between the various companies that provided mobile devices. With the introduction of Android, a single operating system removed the need for reimplementation of phone applications and middleware. The companies creating new devices could now focus much more intently on the hardware and underlying components.
But these companies werent the only ones who benefited from the launch of Android; software developers could now release applications to multiple devices with very few changes to the underlying code base. This allowed developers to spend more time working on the applications these phones were running and create the rich and impressive applications that we are all used to. This was in part due to the open source philosophy behind Android, and the Apache license, which is the license used on most of the Android source code.
Open Source Apache License
The Apache License is just one of many different licenses that exist in the open source community. While there are differences in all of these licenses, they all facilitate the same open source mindset that is best summed up as follows:
Free software is a matter of liberty, not price. To understand the concept, you should think of free as in free speech, not as in free beer.
Richard M. Stallman
The Apache License specifically grants freedom to use the software for any purpose, as well as the ability to distribute, modify, or distribute modified versions. The Apache License is also permissive, meaning that modified versions do not have to succumb to the Apache License. For more information about the Apache License, go to http://www.apache.org/licenses/LICENSE-2.0 .
What Is Android?
So what exactly is Android? Android OS is the open source technology stack that runs on over 400 million devices worldwide. This technology stack consists of various components that allow developers and device manufacturers to work independently. This can be broken into five primary piecesapplications, application frameworks, native libraries, Android runtime, and the Linux kernelas shown in Figure .
Figure 1-1.
The Android System Architecture
Android OS (Wikipedia) http://en.wikipedia.org/wiki/File:Android-System-Architecture.svg
Applications
The applications exist at the highest level. These are the tools that everyone who uses Android is most familiar with. Android comes with various robust applications that support everyday phone needs, such as messaging, e-mail, Internet browsing, and various third-party applications. These applications are primarily written in the Java programming language. In a recent legal case with Oracle, Googles Android chief Andy Rubin explained why he chose Java as the language of use for developers. Rubins primary points were that Java had a well-known brand name and that Java is taught in almost all universities worldwide.
These applications are distributed through various means, most commonly from the Google Play Store (formerly Android Marketplace); however, the Android OS also supports installation of applications over a USB connection and from an SD card.
Application Frameworks
Android provides developers the ability and tools to create extensive, interactive, rich graphical applications to users, and is targeted to deploy these applications to the Google Play Store. Developers have access to the same APIs that are used inside of core applications, as well as access to almost all existing Java libraries. For the development process of Android applications, consult : Installing the Android SDK for Intel Application Development.
Native Libraries
The next level is where the road diverges. The native libraries and the Android runtime exist in roughly the same space. The native libraries are compiled and preinstalled C/C++ binaries that the Android system depends on. These include all of the libraries in the green section of Figure . The following sections contain descriptions of some of the more prominent native libraries and their functions inside of Android.
Surface Manager
This is often referred to as Androids Window Manager. Surface Manager is used for composing what any individual screen will look like. It also does some more subtle things that help Android run smoothly, such as off-screen buffering and transitions.
SQLite
This is a database used to persist information across sessions of an Android device. On Android, the SQLite database is stored inside of the devices internal memory so SD cards can be interchanged without losing device-specific information.
WebKit
WebKit allows for HTML to be rendered and displayed to Android very quickly and efficiently. This is the default browser engine in the Android system and is available to system and third-party applications.