Scala en Android: alternativa escalable para reemplazar a Java en el desarrollo de aplicaciones

Java es el lenguaje principal que se usa para programar en Android, pero también existen otras alternativas para crear aplicaciones de todo tipo como pueden ser C++, Titanium, Ruboto, Rhomobile Rodes, etc... Pero uno de los que más nos ha llamado la atención ha sido Scala.

Scala se considera un lenguaje más evolucionado que Java. Quizás, mejor. Empezamos por no necesitar un punto y coma (como muchos), pero Scala posee el poder de la abstracción moderna, traits (la unidad básica de reutilización de código en Scala) o implicits, checkeo de tipos nulos, bloques (fundamentales para tener un código sólido). Para aplicaciones móviles, Scala goza de ventajas frente a otros lenguajes JVM, los lenguajes estáticos correr más rápidos, consumen menos memoria y, generalmente, se optimizan mejor.

Para ver cómo nos puede ayudar Scala en el desarrollo de Android existe, Scala for Android, un proyecto en Google Code con herramientas para la creación de aplicaciones. Por ejemplo, podemos ver como sería la codificación de un Activity con sus métodos onClick para Views y un método findView para Activities mucho más funcional usando definiciones trait e implicit para tener un código más escalable.


package com.thoughtbot.helloscala
import _root_.android.app.Activity
import _root_.android.view.View
import _root_.android.view.View.OnClickListener
trait FindView extends Activity {
  def findView [WidgetType] (id : Int) : WidgetType = {
    findViewById(id).asInstanceOf[WidgetType]
  }
}
class ViewWithOnClick(view : View) {
  def onClick(action : View => Any) = {
    view.setOnClickListener(new View.OnClickListener() {
      def onClick(v : View) { action(v) }
    })
  }
}
object FindView extends Activity {
  implicit def addOnClickToViews(view : View) = 
    new ViewWithOnClick(view)
}

Esto añade un método onClick a los Views y findView a los Activities.


package com.thoughtbot.helloscala
import _root_.android.app.Activity
import _root_.android.os.Bundle
import _root_.android.widget.Toast
import _root_.android.view.View
import _root_.android.widget.Button
import FindView._
class HelloActivity extends Activity with FindView {
  override def onCreate(savedInstanceState : Bundle) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)
    findView[Button](R.id.button).onClick { view : View =>
        Toast.makeText(this, "You have clicked the button", Toast.LENGTH_LONG).show()
    }
  }
}

Actualmente no existe una herramienta de apoyo en forma de plugin para Scala en Android. Aunque existe un plugin compatible pensado para Gradle que soporta tanto ProGuard como Scala a la hora de crear el apk de la aplicación.

Vía | Infoworld Sitio web | Scala Más información | Scala for Android, Plugin Gradle En Xataka Android | Cuatro alternativas a Java para programar en Android

Portada de Genbeta