Tuesday, December 18, 2007

The ANDROID

A brief Preview – Vinayak B. Joshi

Yes, you and I have been hearing about this word for quit some time now. It is the base framework for the “Google Phone”. Yes, you read it right. I think most of you might have already read about it. But still, I thought I can share with you whatever I know about this wonderful product from google.

Like any other application framework like OpenMax or our SHP, it is also a mobile application environment consisting of an operating system, middleware and key applications. You might ask what is so great about it? Hey wait! It is the brain child of Google. So, don’t you think it’s worth spending some time discovering it?

The Search engine legend- The Google, realized the potential of the mobile market, after watching the success story of a Finnish Shoemaker and a Korean TV maker in this Arena. They thought, why not enter this field. Here they come with “Android”. The best part of Android is that, the SDK for android is already released and you can write applications, before the actual platform comes to market. It is the same strategy which Nokia has been using to popularize its S60 framework.

Android offers following features:

ü Application framework enabling reuse and replacement of components
ü Dalvik virtual machine optimized for mobile devices
ü Integrated browser based on the open source WebKit engine
ü Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
ü SQLite for structured data storage
ü Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
ü GSM Telephony (hardware dependent)
ü Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
ü Camera, GPS, compass, and accelerometer (hardware dependent)
ü Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE

So, it offers every thing that your other frameworks do offer. The presence of SQLite and Dalvik VM are the catching factors in this framework. So far, nobody has used the SQLite so effectively in their frameworks. Here is the architectural view of Android, as shown in figure 1. As per Google, Android will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others. All applications are written using the Java programming language.
Figure 1: Architectural view of Android

Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities (subject to security constraints enforced by the framework). This same mechanism allows components to be replaced by the user.

Underlying all applications is a set of services and systems, including:

ü A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser
ü Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
ü A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
ü A Notification Manager that enables all applications to display custom alerts in the status bar
ü An Activity Manager that manages the lifecycle of applications and provides a common navigation back stack

Google has formed an alliance with 33 firms to develop this open platform for mobile phones. Then, you would definitely expect something more from this literature regarding, what more it has.
Android includes a set of C/C++ libraries used by various components of the Android system. These capabilities are exposed to developers through the Android application framework. Some of the core libraries are listed below:

ü System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
ü Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG {sounds pretty trivial}
ü Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications {just like our DAM in SHP}
ü LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view.
ü SGL - the underlying 2D graphics engine
ü 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer.{To meet growing needs for mobile games and other location based java applications}
ü FreeType - bitmap and vector font rendering {off course open source}
ü SQLite - a powerful and lightweight relational database engine available to all applications.

Having said all these, its very important that I should speak about Dalvik VM. Android includes a set of core libraries that provides most of the functionality available in the core libraries of the Java programming language.

Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool. So, you still can’t run your JAD/JAR based games and applications in Android. You need to port or convert them to .dex .

The Dalvik VM relies on the Linux kernel for underlying functionality such as threading and low-level memory management.

Having said that the whole Android sits on Linux, let’s talk about Linux used. Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model. The kernel also acts as an abstraction layer between the hardware and the rest of the software stack.

Having tried various UI applications in Android SDK, you will realize that, you need more of XML based tools, than any thing else. This is because of its closer association with the open source community. The UI framework is no way different from what we normally use in the form of miniGUI/GTK.

Overall, we can say, Android looks like “an Old wine in a New Bottle”, but, this time from Google. Let us wait and see how it stands the stiff competition from the S60’s and the MOAP’s {NEC’s MOAP}.
For more:
ü Here I’ve made an attempt to put forward my understanding on Google’s Android, for more:
“Jai Google Devatha”!!!!!!!!!!!
@ http://code.google.com/android/documentation.html
ü This one also sounds good :
http://www.techcrunch.com/2007/11/05/breaking-google-announces-android-and-open-handset-alliance/

2 comments:

Android app development said...

This is one of the good post About Android.We can get good idea in detail about Android.Nice post.
Android app developers

Android developer said...

Good information and i really enjoyed to read this articles, its a good entertainment. i think most of the peoples are likes your informative post , because its having enjoyment. so thanks for your great informative post.

Android developers