Configurable Thoughts


Fighting Fragmentation – part 2

Google has recently reassured the market that Android will continue to be the open and processor neutral platform that it was meant to be, without lock-downs or restrictions against UI customizations. The dust up was because Google wants to avoid the type of fragmentation that would prevent applications like the latest hot Angry Birds Rio game that you just downloaded from working on your device.

Android enables the development of portable microprocessor neutral applications that can run on any device equipped with a proper and compliant version of Android. But portability can come with a performance penalty – run-time translation of processor neutral code to target specific machine code is slower than running the same code built natively. Therefore, to achieve required performance levels for the most demanding applications, the Native Development Kit (NDK) can be used to support native application building for a specific target. While this may be required for the most demanding games it shouldn’t be used for most applications. Tim Bray pointed this out at the latest Google Developer Day in Brazil, saying that the NDK is used more often than needed; just because it is available and because it can be done. And, when doing so, portability is sacrificed at the expense of non-essential performance boosts.

This over-enthusiastic deployment of the NDK is not only causing compatibility problems between different 32-bit microprocessor architectures (ARM, MIPS, ARC, Intel) but even between different vendors using the same processor architecture. So if Google is going to push to prevent NDK over-use and guard its usage for what it is meant for, this is good and we will all benefit from the promise brought by Android of every application running on every device.