Sunday, June 29, 2008

The Google Android software stack in brief

The Google Android platform for mobile sounds like a very promising platform and software design. It address some of the common problems that the industry had encountered before. Android use Java as its main application development language, to make sure application is portable on all mobile devices. Android use Linux kernel which already proven as advance and stable.

There is a good Androidology video, explain on Android software platform.

Why Android sounds good?

The Android system contain 3 part of software layer:

1. Application, build by Java.
(I merge application and application framework together)
2. System library written by C and C++.
3. Kernel is base on Linux kernel 2.6.

Application layer. Java language was chosen as the development language. There is a lot of mobile developers out there already know Java language (mainly J2ME which is for mobile devices).

Java is a proven technology, portable on different software and hardware platform. Java is already available on majority of the mobile phones, only some old and low end mobile phones will not have Java included.

Current Java on mobile (J2ME) has a lot of limitation, so major mobile phone company will add in their own extension to the Java library, this make portability of Java application on mobile more difficult. Normally Java was used to create Java games on mobile, many other applications are still build on the native OS and not on the Java layer.

Sun has been pushing Java technology on mobiles for years, it was successfully deploy on most of the mobile phones, but lacking of standardization make it difficult to go further.

If there are rich and standard API stated in Android, developers can use those API to develop games and applications, integrate well into mobile phones, and Java will make Android application portable on all (Android) mobile phones.

The Java program don't run directly on Android, it was converted into Dalvik byte code. Basically Android not just can run Java but other application as long as it can be converted to Dalvik byte code.

The Linux kernel. The Linux kernel was chosen because it was proven to be stable and powerful. Linux has good memory management, process management and already build in with many other functions like tcp/ip networking which is necessary for an operating system (especially you need it to connect to data network on your mobile).

For a new hardware mobile manufacturer, the first thing to do for building an Android platform is to build the device driver on the Linux kernel, there should be a lot of developers around which already know how to do it.

There are a lot of companies try to build mobile phone operating system base on Linux kernel before Android do, but not very successful. Palm and PalmSource is a very good example, they have been working for years to develop a new Palm OS, but unable to deliver.

Even Motorola and Nokia has release some mobile and internet devices which running Linux operating system, but it was not very successful as well, like the Motorola A series phone started with A760. Nokia has an Internet Table device (N770) which build using Linux operating system too. These devices are not popular on the market, even on smart phone market.

In technical point of view, Android use Java + Linux is a smart move. Both Java and Linux is proven technology, and provide portability for mobile application on Android platform.

The system libraries. The system libraries on Android mainly build by C and C++, it should be fast and efficient. Since the library is run on top of the Linux kernel, there should be a lot of available software which ready to run on Android.

Open source. Android has use a lot of open source software to build their platform. Linux is open source, SQLite (in library layer) is open source, the WebKit to build the browser, is base on KHTML, which is open source as well.

The advantage of using these open source software, help to build up the the platform more quickly. All these open source software already proven to be usable, stable and powerful. Most important thing, these open source software will be improved in the future.

Since Android is still under development and there is no real product implementation yet, we will observed in the future how good it will be.

1 comment:

Mobile Application Development said...

Thanks for sharing nice information about android software application development. Mobile Application Development useful for iPhone development and Android Mobile Application Development. Awesome post.