As I know Android is running on Java VM on top of Linux kernel. These so many layers may lower down the performance (FPS,etc.). Is Android still good for game development then?
closed as not constructive by bummzack, Patrick Hughes, Tetrad♦ Feb 16 '12 at 19:09
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.
In Android, java files are compiled into class files via javac (as usual). Next, the dx tool converts the class file into a "dex" file. The dex file is optimized for mobile devices. Android's Dalvik virtual machine on the device runs the dex files. Dalvik uses a register based architecture (Java JVM is stack based). You can learn more by reading the performance section of this article: http://en.wikipedia.org/wiki/Dalvik_(software)
Each application running under Android gets its own Dalvik virtual machine as a Linux process. To speed application start up and to minimize memory footprint, Android has a Zygote Dalvik virtual machine that is created at boot up. The Zygote instantiates the core library classes. The Application VMs connect to the Zygote following a binder IPC pattern (see http://stackoverflow.com/questions/4936531/do-apps-using-multiple-processes-share-a-dalvik-instance). The application's VM is forked from the Zygote so that it has the common libraries already mapped.
Keep in mind Android does let you run native code. If you don't want the Java layer, you don't have to have it for the bulk of your project.
(Some of the vital Android APIs are Java-only, but you can always set up a thin wrapper.)