En:

Últimamente estamos hablando bastante sobre programación nativa (Aprende Android en 20 conceptos) o alternativas a ésta, tales como Xamarin, opción para programar en C#/.NET recientemente actualizada a su versión 3.

Hoy es el turno del lenguaje de programación Ruby, y es que RubyMotion ha anunciado que en su próxima versión 3.0 habrá soporte para Android por primera vez. Hasta ahora consistía en una plataforma para desarrollar aplicaciones en Ruby para iOS y OS X. Dicha actualización estará disponible a lo largo del presente año.

Pero, ¿qué nos ofrecerá esta versión de RubyMotion? Básicamente la oportunidad de escribir aplicaciones Android completamente en Ruby en lugar de Java.  Además, prometen que habrá código reutilizable al portar una aplicación que ya tuviéramos hecha con RubyMotion para iOS o OS X. De nuevo, como ocurría en otras como Xamarin, habrá lógica de código que podremos dejar común, pero otra que será específica de la plataforma para la que estemos haciendo la aplicación.

Fase de creación de un proyecto para Android con RubyMotion

La gestión de proyectos Android será igual a la que se sigue para proyectos para iOS/OS X: bastará utilizar el argumento -template=android para crear el nuevo proyecto para Android, tal como en el ejemplo a continuación:

rubymotion ejemplo

La plataforma nos proveerá un sistema de construcción basado en tareas Rake (recayendo la configuración del proyecto sobre Rakefile, en el cual se basará la creación del archivo AndroidManifest), similar a las otras plataformas.  Además, podremos ejecutar aplicaciones en el emulador de Android, en nuestro dispositivo Android conectado por USB, así como firmar la aplicación para su publicación en Google Play. Y todo ello, sin la necesidad de pasar ni por eclipse ni por Android Studio.

En cuanto a la generación del fichero Rdonde localizamos todos nuestros recursos en Android, el sistema se encargará de generar dicho fichero incluyendo todo lo que tengamos en los directorios resources assets.

En el caso de que necesitemos utilizar librerías de terceros, podremos hacerlo igual que se hace para iOS/OS X, mediante librerías vendor. Por ejemplo, para utilizar un MapView necesitaremos la librería de Google Play Services (mediante app.vendor_project). 

Fase de compilación

La compilación se basa en un compilador estático basado en LLVM, el cual transformará los ficheros Ruby en código de máquina ARM. Este código generado utilizará JNI para poder ser insertado en el código de ejecución de Java. El compilador además emitirá:

  • Código DEX Byte para las interfaces de clases, ya que Android no permite que las clases sean creadas en tiempo de ejecución
  • Metadatos DWARF, que nos ayuda en temas de excepciones simbólicas y en el caso de que queramos depurar el código

Todos los ficheros generados se generarán en una librería compartida NDK.

Finalmente, todo deriva un fichero .APK, del mismo modo que cuando lo hacemos de forma nativa. El peso de la aplicación será de 500KB por defecto y la velocidad al abrir esta aplicación será equivalente a las aplicaciones nativas, ya que el código no tiene que ser reinterpretado.

rubymotion compilacion

Fase de ejecución

rubymotion ejecucion

Cuando vamos a ejecutar la aplicación para Android que hemos construido con RubyMotion, dispondremos de una máquina especialmente diseñada para Android, la cual, entre otras cosas, ignorará el código Ruby para la máquina de ejecución de Objective-C (iOS/OS X). Este modelo nos permitirá que las clases, objetos, métodos y excepciones de Ruby se conviertan en equivalentes en Java y viceversa. Por ejemplo:

  • Fixnum en Ruby será java.lang.Integer en Java
  • String en Ruby será java.lang.CharSequence en Java

Esto deriva en un buen rendimiento, ya que el código no necesita intermediarios. La gestión de memoria es delegada en el colector de basura Dalvik, el cual es bastante eficiente.

Para la ejecución, se utilizará el proyecto RubySpec para asegurarse que la ejecución es como se espera:

rubymotion ejemplo ejecucion

Ejemplos

Como el soporte para Android de RubyMotion es nuevo, se han preocupado de facilitarnos código de ejemplo, así como de una aplicación que está en Google Play, la cual será utilizada en conferencias y cuyo código estará disponible en GitHub.

Código de ejemplo en GitHub

Fase beta

Desde RubyMotion confirman que al ser tan nuevo el soporte para Android, la versión 3.0 no está totalmente depurada, por lo que nos incitan a que ayudemos a hacerla lo más estable posible. Para ello, necesitan tanto las pruebas internas que ellos han realizado como nuestra propia opinión y experiencia, como desarrolladores. Para ello, RubyMotion va a abrir a principios de Julio una versión beta cerrada para todo aquel que esté interesado. Si estás interesado, deberás rellenar el siguiente formulario.

Y tú, ¿estás interesado?

Mostrar comentarios
Vídeos El Androide Libre
Controla tu móvil SIN TOCARLO – SÓLO CON LA VOZ!
Cómo AHORRAR DATOS en INSTAGRAM
Análisis Xiaomi Mi 9T
Análisis Xiaomi Mi True Wireless
Análisis Amazon Kindle Fire 7 2019
TRUCAZO: Acelera los audios de WHATSAPP #STOPTURRAS
Cómo pasar de audio a texto automáticamente
Análisis OPPO Reno 10x Zoom
Samsung Galaxy M20 vs Xiaomi Redmi Note 7
¿Sin ESPACIO en Android? Cómo LIMPIAR tu móvil
Análisis Huawei P30 Lite
Google ROMPE con Huawei: cómo te afecta
Cómo crear tu propio ROBOT
Cómo ver HISTORIAS de Instagram SIN SER VISTO
Análisis Black Shark 2
Cajón de Sastre XIX: AirSong, NavigationLayer, Dungeon Pets y CF.lumen
Evita que tu Android llame a números de pago con CONAN Mobile