Android is an open source mobile OS platform that’s running on top of Linux kernel. It uses a non-standard Java Virtual Machine called Dalvik, specialized to handle mobile device processes. The main programming language used for Android is Java, with many library from J2SE and third party open source projects, such as Apache commons, sqlite, webkit, etc.
Android is tightly integrated with Google’s cloud services, such as Gmail, Calendar, Contacts, Gtalk, etc. This positions Google at a very good edge to monetize mobile ad revenues.
Android’s open source nature enables manufacturers to design and customize the platform to their own likings. So fragmentation is a concern here. However, the core Android OS provides more than enough features for current mobile devices’ needs. As it evolves, it might include more standardized features, and the OS platform can only become better and better.
There are announced handsets using Android coming out this year from LG, Samsung, Motorola, Lenovo, just to name a few. With carriers like Sprint and AT&T getting Android-powered devices under their offerings, along with T-mobile, the landscape for Android development cannot be underestimated.
On top of that, Android is also being developed for Netbook, ebook readers, and a slew of other electronic appliances. So it’s more than a mobile device OS. This is something Sun attempted with their Jini technology 10 years ago but failed miserably. Android is realizing it now.
Symbian was a proprietary operating system for mobile devices until recently, under Android’s huge challenge and losing market ground, Nokia bought all the Symbian outstanding shares, and created Symbian foundation and declared it open source.
The main platforms for Symbian includes S60 and UIQ. UIQ was closed down and all people got laid off shortly after the creation of Symbian foundation. As to how appealing open source Symbian to developers are yet to be seen. S60 series are no doubt the leader in number of installed base today. However, Symbian’s market share, especially in the smartphone area, are getting smaller and smaller largely due to iPhone.
The main language used for Symbian programming is J2ME and C++. C++ API provides more lower level device access than J2ME. However, their C++ implementation is unnecessarily complex and error-prone. Their paradigm is not suitable for the needs of modern mobile computing. It will require them a great efforts to deliver something comparable to Android and iPhone.
WebOS also supports multi-touch gesture-based system. This might potentially infringe Apple’s multi-touch patent. We will see how it works out in the end.
iPhone is by far the most powerful and elegant mobile OS yet. It’s based on Mac OS X (which is based on freeBSD). The UNIX kernel with POSIX-thread is well suited for mobile computing processing needs. iPhone’s Coca Touch UI paradigm redefined the mobile UI. Its multi-touch gesture based navigation system is the most advanced currently in the market. There have been enough articles on iPhone so I will not try to elaborate again here :).
The main programming language used for iPhone programming is Objective-C, a super-set of C and C++. You can use any of these 3 languages, mixed too, for your application. iPhone also has the webkit as well. (webkit was developed by Apple and released as open source project). Sqlite is also used for local storage.
There are more than 20,000 apps currently on the AppStore. It’s clear Apple is the winner here, although iPhone does not have the most advanced hardware in its system. The conclusion is: it’s software that makes mobile device great, not hardware.