OK, this should really be asked to someone from Google, but I just want other opinions.
Even though Android supports Native code applications, the main development tool is still Java. But why? I mean, isn’t it too slow to interpret code on a mobile device? When introducing Froyo, Google said that new JIT compiler can achieve 2-5 times faster applications. This means, that using Java over native code is 2-x times slower.
Yes, I know that using managed code applications is safer in terms of system stability, since virtual machines have better control over program execution, but still, this performance drop is huge, and I don’t see any point why to use it.
Some points:
Java is a known language, developers know it and don’t have to learn it
it’s harder to shoot yourself with Java than with C/C++ code since it has no pointer arithmetic
it runs in a VM, so no need to recompile it for every phone out there and easy to secure
large number of development tools for Java (see point 1)
several mobile phones already used Java ME, so Java was known in the industry
the speed difference is not an issue for most applications; if it was you should code in low-level language