views:

478

answers:

3

I just ordered an Android smartphone and want to start playing around with creating my own applications. Now the question is which language to use, the native Java or Python using SL4A (former ASE).

I tend to Python, as I know it much better than Java, but I'm wondering what I would be missing using a "second class" language on Android. On the SL4A website it is also stated to be alpha quality software, which is not exactly encouraging.

I'm also not quite sure what the limitations of the scripting environment are and if they would be problematic.

+2  A: 

More likely will depend what type of applications you will develop.

I would start with Java to become familiar with Android SDK. Anyway first you need to look into some examples, tutorials. Most of them are done in Java, and only a few, probably on the dev site of SL4A for that.

Also there is native development Android NDK, that can be programmed with C++.

But anyway Java rules for general applications.

Pentium10
I didn't think about tutorials/documentation, that's a good point. So I probably should start in Java anyways, regardless which language I use in the end.
Fabian
+2  A: 

At the moment you cannot create a releasable program with Python (or any other scripting language) using SL4A. I have heard rumours that this is something Google is working on, but even if they do enable it Python apps are likely to be slow and power-hungry compared to Java. Also the scripting API only gives you access to a limited subset of the native Java API. I would not consider using SL4A for serious development work at the moment, only for one-off scripts and prototyping.

Take a look at Scala. It is a statically typed language on the JVM, but uses type inference to remove most of the noise that you get in Java. It also fully supports functional programming, and has a lot of pythonish features. Because it is statically typed it is as efficient as straight Java with none of the disadvantages. IMHO it is the language that Java should have been in the first place.

A lot of people are blogging about using Scala on Android, so Google around for more information.

Dave Kirby
I'll definitely take a look at Scala, should be interesting.
Fabian
Depends on how you code your program. If you are an experienced Python programmer, go for it, as it is sufficiently fast for most (or almost all) purposes. Just avoid Java whenever you can.
OTZ
@otz: for regular desktop programs I would agree with you, but as I said in my post (1) there is currently no way to turn a python script into a releasable Android app, (2) the SL4A Python implementation does not give access to the full Android API and (3) on a mobile phone battery usage is paramount. A dynamic language like python is going to use more juice than the Java or Scala equivalent.
Dave Kirby
A: 

Adding an update to Dave Kirby's answer:

Issue 55, Distribute scripts as APKs, in the issue tracker at SL4A deals specifically with that.

There is a solution being worked out (may be complete by now) described at SharingScripts. The only issue seems to be that you need to have a interpreter APK already installed.

Christopher Mahan