A look at Android vs MeeGo Architecture comparison

Last updated: 22nd February, 2011

Here I take a closer look at the published architectures of both Android and MeeGo.  To have a better understanding I have slightly redrawn the software stacks of both these platforms. Now let us dive a little below the surface...

Android MeeGo arch

A look at the base OS layer shows the all-too familiar linux kernel and a set of device drivers specially highlighted to indicate the proprietary drivers from the platform vendors. In addition the IPC component(s) can be seen, binder driver for Android and d-bus for MeeGo ( of course, this is not to imply the DBus is the only mechanism available for this ).  

At this point we may be tempted to conclude that both are fine examples of embedded linux system, but the reality is different. While Meego is a proper embedded linux system Android in reality is bolted right down to a Java VM. Kernel is just a pack mule to carry this VM. In fact we may even speculate that in the not too distant future, Android may run on some native Java hardware with out even the scent of linux around.

Bionic C library:

Android uses Bionic C library instead of glibc or newlib. The Bionic libc  
is a lean implementation with own linker and loader, own pthread implementation which supplements Android's other IPC mechanisms and no  pthread cancellation. DNS resolver is in the dark for security. Though it is not compatible with glibc or non-Android tool chains, statically linked binaries will run OK. No C++ exceptions and no STL.

Three factors, license, size and speed are supposed to favor Bionic over say glibc. Among these size seems to be somewhat of a suspect. Android is targetted smartphones which are not exactly starving of resources and eglibc (embedded glibc) is specially being tweaked for embedded systems. So the other two factors hold the key. Bionic has been tuned keeping in mind of the Java infra structure and and the Java applications. Equally interesting is how new non-Java components and applications are discouraged by virtue of being incompatible with Bionic. License factor is also very signficant as both the platform vendors and third party Java application developers probably will not need to worry about GPL compliance.

More to follow...