Este artigo lança alguma luz sobre a situação. O link mais pertinente dentro desse artigo é este . Então você tem uma enorme base de instalação com muitos programadores que conhecem o idioma e são amplamente ensinados nas universidades. C ++ foi retirado do currículo da minha escola, Java ainda está aqui. Java tem Java ME, que tem uma base de instalação massiva em outros celulares. O Pantec Ease que tenho no bolso agora tem uma pequena xícara de café no canto da tela. Alguém quer adivinhar o que é isso?
Esta resposta no Stack Overflow também a abrange muito bem.
Resumo da resposta do SO:
java is a known language, developers know it and don't have to learn it
its 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 developement tools for java (see first)
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 were you should code in assembly