There is always a performance hit when you make things run on a VM environment. Same is the case with Android OS. There will be significant performance Hit and limit is posed by the use of virtualization.
Android developers had to build their applications that used to run inside Dalvik, the JVM (Java virtual machine) upon which Google’s mobile android OS is built. No doubt, it is beneficial in embedded systems with limited processor power and RAM, it is limiting for developers who, for example, want to create CPU-intensive, but not Memory-intensive, applications such as more in-depth computations, simulations, or high multimedia signal processing.
Google has now announced release of a native development kit, which will enable developer’s reach the ARM directly. With NDK out, called Android Native Developers Kit, a companion to the SDK. It gives developers a way to use the ARMv5TE machine instruction set, such as popular libc, the standard C library, libm, the standard math library, libz, the common ZLib compression library, the Java Native Interface (JNI), and liblog, which can send logCat messages to the kernel.
Exposing this to the developer’s now its possible to harness the compelte power of the ARM platform without having to worry about performance hits. But it’s not as easy as it seems. Things would go tougher.
Commenting on the NDK release, Google Android Developer’s Blog quoted:
“Keep in mind that using the NDK will not be relevant for all Android applications, As a developer, you will need to balance its benefits against its drawbacks, which are numerous! Your application will be more complicated, have reduced compatibility, have no access to framework APIs, and be harder to debug. That said, some applications that have self-contained, CPU-intensive operations that don’t allocate much memory may still benefit from increased performance and the ability to reuse existing code…The NDK, however, can be an effective way to reuse a large corpus of existing C/C++ code.”