Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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?

share|improve this question
3  
What kind of game are you trying to make that might suffer from performance issue? Something based on computation fluid dynamics? Then, Yes! –  iamcreasy Feb 16 '12 at 10:58
1  
Each platform has its own limitations. The challenge is to understand them and to get the most out of it, even turn limits to an advantage, creating new ideas born out of the limitations. So the question is not "Is the platform good?", but: "Is your team good enough to take that challenge" :) One of the best games ever is Pong. A normal washing machine these days would easily be able to run multiple instances of it. That makes even a washing machine a good platform :p –  Maik Semder Feb 16 '12 at 11:40
6  
No, the platform which apparently has a couple of hundred thousand games on it is no good for game development. –  Jonathan Hobbs Feb 16 '12 at 12:52
add comment

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 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, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

2 Answers

up vote 1 down vote accepted

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.

share|improve this answer
add comment

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.)

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.