I am a hobbyist programmer who makes and maintains one production system, largely coded in Python, which now has to be ported to Android. I don’t know Java at all. However, SL4A in Android makes Python a bit of a second class citizen re APIs, such as Google Cloud Messaging etc. However, for me, Java appears intimidating with its verbose syntax and strict typing. Scala’s syntax is more appealing and seems like a possible compromise.
From this question and this one on Stack Overflow it seems that Scala development on Android is feasible. However, as a ‘beginner’, I would like to know what problems I might encounter by using Scala instead of Java. The available information that I can find on the ‘Net (including the question from this site cited above) is from early 2012, at the latest, and I imagine the situation has changed since then.
4
Although Scala will feel a bit more comfortable compared to Java if you’re used to a scripting language like Python, there are a few significant disadvantages in using it in Android development.
- It is less common, so you’ll have a harder time getting support on sites like StackOverflow. You may have to translate your code to Java to reach a wider audience.
- It is not trivial to set up, especially when you’re not familiar with Eclipse and Java yet.
- The Android APIs themselves were not designed for Scala, so using them may still feel as awkward as using Java in the first place (strict typing, required type annotations, incompatibility with Scala paradigms).
- Most of the articles discussing it are, as you say, out-of-date which may indicate that using Scala on Android has fallen out of favour with developers who’ve tried it.
- It will increase the size of your applications, perhaps not significantly, but it’s still a factor
Since you’re a beginner, it would be a much better idea to get over the initial burden of learning Java and making a few simple applications to get the hang of Android concepts. You’ll be able to get full support, which will make development less frustrating in general. Also note that a lot of Scala concepts will be easier to understand if you already know Java.
Nevertheless, if you want to get started with Scala on Android, here are some useful resources:
- http://code.google.com/p/scalaforandroid/ (Traditional way of working with Scala on Android)
- http://fxthomas.github.io/android-plugin/ (A promising new way, worth checking out)
- https://github.com/pocorall/scaloid (A library that makes the Android APIs easier to use with Scala)
Lastly, a bit anecdotal perhaps, I’ve been developing Android apps for about 3 years now and I recently tried to get started with Scala myself, because I really like the language. Unfortunately, it took so much fighting with Eclipse, packages and build scripts that after spending an entire afternoon on it, I just gave up. Your mileage may vary, but to avoid frustraton, I would definitely recommend to get started with Java first.
1