Contributed by Asad Khan
read on Developing a Small Hello Android
The year was 2007; the launch of Apples iPhone changed everything, revolutionizing the very niche of smart phones. Phones weren’t phones anymore they were compact mobile computing devices pushed to next level. Soon pretty much everybody started to jump on the smart phone bandwagon, initially following the path paved by Apple and then eventually challenging the very king of the jungle. The biggest challenger and threat to iPhone appeared to be the Android platform.
History of Android
In July 2005 Google acquired a new small start-up company known as Android Inc. A little was known about the company back then apart from that it developed software for mobile phones.
In 2007 Google joined hands with around 70 other industry leaders to form an alliance, which came to be known as Open Handset Alliance to develop a next generation mobile computing platform. The alliance vowed to come together & accelerate innovation in mobile computing to develop a richer, less expensive & open platform, the result of which is just sheer brilliance.
An early look SDK was released in November 2007 and in September 2008 first Android phone, T-Mobiles G1 was launched. Subsequently, Google released the source code of Android platform under Apache’s open source license.
Today around hundred Android mobile phones exist in the market.
Architecture
Android is an open software platform, which includes a complete software stack from the operating system to the middleware and up through the applications.
At its core Android runs a modified version of Linux kernel specifically the 2.6.* kernel. The diagram below from the Android website shows us how the android platform is implemented. Linux acts as a HAL (hardware abstraction layer) providing memory management, process management, networking etc amongst other things.
The next level up is the native libraries which are basically native C/C++ libraries providing a plethora of functionalities, from SSL implementation, SQLite, Webkit to the surface management. The C library is based on BSD(Berkeley Software Distribution) and is fine tuned for embedded Linux-based devices. The WebKit library is the same library that powers Google Chrome, Apple’s Safari and is used on Android to provide browser support. Font type is responsible for font support. SQLite is responsible for in memory relational management of data. 2D support is present in Skia & 3D graphics support is based on OpenGL ES. Android provides a software implementation of OpenGL ES, which is hardware accelerate-able if the device has a graphics chip.
Adjacent to these libraries lies the Android runtime, which basically consists of Core Android Java libraries sitting on top of Dalvik Virtual Machine.
Rather then using the traditional Java virtual machine Google implemented its own virtual machine the Dalvik VM. Dalvik is the name of the town in Iceland from where the chief programmer of the VM belongs. It is highly optimized for the mobile devices with better Garbage collection and lower memory footprint.
The Dalvik VM takes the generated java class files & combines them into one or more Dalvik Executable .dex files. It uses a different kind of assembly code generation, in which it uses the registers as the primary source of data storage instead of the stack hence reducing the instructions up to 30 percent on the ARM processors. It should be noted that you cannot directly run the java bytecode generated elsewhere on the Dalvik VM you will have to convert the source code to .dex files to run it on Android.
read on Developing a Small Hello Android
About The Author
“Asad Khan is the CEO & Co-Founder of Semantic Notion. He first started programming on his Commodore 64 & has never looked back since. He is a serial entrepreneur. His first successful tech start-up was at the age 16. Currently, he is leading a small start-up which specializes in intelligent web solutions. ”

{ 1 trackback }