El pasado 27 de mayo en el evento Inspect 2014 de Rubymotion, el equipo dio a conocer una importante noticia para el desarrollo móvil, y es que por fin Rubymotion se encuentrará disponible para Android a partir de su versión 3.0, con esto se abre todo un mundo de posibilidades, pues el desarrollo móvil multiplataforma podrá ser completamente nativo pudiendo aprovechar todas las APIs nativas, pero utilizando Ruby como lenguaje principal.
Si ustedes llevan un tiempo desarrollando aplicaciones para iOS o Ruby, seguramente ya habrán oido hablar de Rubymotion, de lo contrario en este post conocerán qué es y por qué deberían tomarlo en cuenta.
Wow. @lrz announcing RubyMotion support for building Android apps. #inspect2014 pic.twitter.com/CmHPQ8HNxD
— Brian Morearty (@BMorearty) May 28, 2014
¿Qué es Rubymotion?
Rubymotion es una implementación del lenguaje Ruby, que está diseñado para programar aplicaciones para iOS, OS X y ahora Android. Estas aplicaciones no son interpretadas ni requieren de una máquina virtual, en cambio Rubymotion compila todo el código de Ruby a código máquina el cual es interpretado directamente por el dispositivo, siendo así posible el desarrollo de aplicaciones nativas a partir de código de Ruby.
Ventajas de Rubymotion
Lo importante es que nos permite utilizar Ruby en aplicaciones compiladas para móviles, esto nos da ventajas cómo programar en un lenguaje orientado a objetos puro en su totalidad, la sintaxis del código nos permite un mejor mantenimiento y entendimiento a futuro y poder ir homologando nuestro desarrollo de varios proyectos con un solo lenguaje, pues Rubymotion puede ser usado para crear aplicaciones para las plataformas OS X, iOS y Android con un mismo código base. Además, si ya eran usuarios de Rubymotion, la migración de sus proyectos a android promete ser de manera fácil pues simplemente se deben actualizar las APIs a la nueva plataforma.
¿Cómo está implementado en Android?
RubyMotion for Android is a new Ruby implementation. All core classes are based on the equivalent class in Java. pic.twitter.com/0eVJ5fbvyY — Brian Morearty (@BMorearty) May 28, 2014
Para poder hacer funcionar el código de ruby en android, el runtime de ruby que utilizan fue específicamente diseñada para android y el modelo de objetos de Rubymotion para Android está basado en Java. No se utiliza un puente para Ruby y Java, pues todas las clases, objetos y métodos de Ruby son convertidos a Java para poder utilizar las APIs nativas de Android
Finalmente, las aplicaciones son compiladas a código máquina de igual manera que se hace en iOS y OS X, con la excepción de que el compilador de Android entrega el código máquina ARM con una serie de funcones que se comunican con la interfaz de Java para poder ser integradas en el runtime de Java sin mayor problema.
Los archivos compilados (.apk) de esta manera pesan como mínimo 500 kb pero soportan todas las versiones de Android.
Finalmente, el siguiente código es una muestra de cómo se define e inicializa la actividad principal en Rubymotion para Android:
class MainActivity < Android::App::Activity def onCreate(savedInstanceState) super text = Android::Widget::TextView.new(self) text.text = 'Hello World!' self.contentView = text end end
Hello World for Android in Ruby pic.twitter.com/I2P0IDPR97
— Brian Morearty (@BMorearty) May 28, 2014
Un mundo de alternativas
Aunque Rubymotion es una excelente alternativa para desarrollar en Android sin necesidad de hacerlo con Java, no es la única opción. Los siguientes productos/frameworks son implementaciones de otros lenguajes que pueden ser utilizados en la plataforma de Google:
- Ruboto: Un framework de Ruby para Android, que utiliza jRuby.
- Phonegap: Desarrollo de apps moviles a partir de código para web.
- Apportable: Objective-C para Android, que transforma con LLVM a NDK.
- Xamarin: Desarrollo multiplataforma con C#.
Con este excelente anuncio, los desarrolladores de Android tendremos una alternativa más para poder crear nuestros proyectos, y qué mejor que con Ruby, uno de los lenguajes de programación más amigables para los desarrolladores. Tendremos que esperar a la liberación de Rubymotion 3.0 para poder empezar a utilizarlo, ya que aun no se anuncian fechas, pero esta noticia nos deja ver que sera muy pronto.