Which programming languages for mobile apps?
meredydd: Android: Java? Or any language?The bad news is that the vast majority of the "other" languages for the JVM - and this includes Clojure, JRuby, Jython, and rest - are dynamic. This means that they are either interpreted or compile to Java bytecode at run-time. Pure interpreters are fearsome slow, so these days everybody does runtime compilation.Runtime compilation, however, won't work with Android. For licensing reasons, they use their own funky Dalvik VM, with a different instruction set to the JVM. Although you write Android code in Java, all the code in your .class files is translated into Dalvik bytecode as part of the packaging process. This is naturally incompatible with generating JVM bytecode at runtime.The upshot, then, is that none of the big dynamic languages will run on Android, which is a big pain. Scala is an exception among the "other JVM languages". Because it is very static and doesn't have "eval" functionality, it can be completely compiled (and translated) ahead of time.Unfortunately, even Scala has problems with Android development: For starters, the runtime libraries are over 3MB (compressed!), which is going to tax if not completely blow the memory of any phone. All that extra code between you and the VM is also going to take its toll in CPU and extra garbage collection - and on an embedded device, that's battery life you can't afford to spend.For my money, then, the only sensible choice for Android development is native Java. This sucks, relatively speaking, but think about it as a progression: For most embedded development, C is still more or less the only sensible choice. Java is still velvet cushions and hand-holding by comparison.