Appendix

brianwawok edited this page Nov 11, 2015 · 47 revisions

List of projects using Scaloid

Roadmap

  • Cover full Android API versions
    Currently, only API level 10 is supported. Scaloid may not be compiled with below that API level, and new features introduced above that level are not fully covered. Some of the features to be covered are:

    1. Fragment
    2. Action bar
  • Build an example Android app
    Finish a Scala port of apidemos app and try another.

  • Build a dedicated website

  • Write a complete API document

  • Write the Beginner's guide

  • Build an example of laying out multiple UI

  • Write a converter that turns an XML layout into a Scaloid code
    A simple web application is demonstrated. Providing this functionality as an Eclipse or Intellij plugin would also be great.

  • WYSIWYG layout builder

  • Cover full listener shortcuts

  • Cover OpenGL ES and renderscript

  • Automatically unregister SensorEventListener onStop()

  • Support Google services
    Including Google Cloud Messaging (GCM)

  • Google glass?

  • iOS??

FAQs about Scaloid

I can't use Scaloid because it does not provide a functionality X.

You can always use plain-old Android API within your Scaloid project. If some feature of Scaloid is missing, buggy, or if you don't understand how to do it, don't worry, you have always a workaround.

Is the Scaloid mature enough for production Apps?

This question is very frequent, but hard to answer, because the 'matureness' is not an objective term. Instead we divide it in several subquestions:

  • Blocker bug or API instability that prevents writing actual apps
    There are no fatal bug on Scaloid. The basic API is quite stable in these days.

  • Reference app that is popular
    Scaloid is extensively used in Soundcorset, which is downloaded more than million times. It works nice on virtually every kind of Android devices that exists.

  • Developer community
    Not strong, but it is steadily growing. Please refer to the list of projects that using Scaloid.

Why Scala rather than Xtend?

Xtend natively supports 1) converting Java bean style getter/setters into the assignment style 2) automatically shorten the clutters when calling one-method callback interface by converting it into closure-like style. Because these are language features, Xtend users can enjoy these features without any wrapper library. We hope that Scala also adopt these benefits soon.

However, We think that Scala is a better alternative for Android platform, because Scala is more mature than Xtend and has these advanced features:

Why Scala rather than JRuby?
  • Type-safety

  • Runtime performance (and your precious battery)
    See a benchmark

FAQs about Scala on Android

Because programming in Scala on Android is not a widely known practice yet, many people asks me basic questions about it. Here are some frequently asked questions:

How big is the compiled apk?

For Scala + Android projects, using proguard is mandatory. After the library is reduced by proguard, overhead caused by the Scala standard library is about several hundred kilobytes, although it depends on how much you used the library in your code.

How much slower is the application?

According to a benchmark, runtime performance of Scala is a little worse than that of Java. However, because most of the code using Scaloid is writing UI and core logic, the performance difference is nearly not noticeable. Still, the display will consume most of the battery life, not Scala.

How much slower is the compilation?

Clean rebuild of compile-proguard-package-deploy takes some time (30~70 secs approx). However, if you set up incremental build, the build time becomes a matter of few seconds. Please refer to tips for faster development iteration.

Is it hard to setup a Scala + Android project?

It's not hard. There is a maven project template and a sbt project template.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.