A look at Android vs MeeGo Architecture comparisonLast 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...
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...