5

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
  • As a beginner, it may be a disadvantage that you'll have a harder time getting support, because not many Android developers use Scala. – Overv Oct 4 '13 at 8:01
  • True, this is likely to be a problem. I was also wondering about possible problems in the development cycle. – ShankarG Oct 4 '13 at 8:03
  • Admittedly I've only spend an afternoon playing with it, but I found it extraordinarily hard to get Scala working in Eclipse together with Android. I managed to get regular Scala programs to compile, but never in combination with Android. It's a shame there aren't more resources on it. – Overv Oct 4 '13 at 8:06
  • @Overv: Ok, that's a big problem - I had the opposite impression :). Can you put these points in an answer so I can upvote it? – ShankarG Oct 4 '13 at 8:08
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:

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
  • 1
    If you're not using SBT, then IntelliJ + Android + Scala works more than fine, straight out of the box. With Eclipse I remember it was indeed harder to get it working properly... – Patryk Ćwiek Oct 4 '13 at 21:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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