Mientras Oracle sigue presionando a Google para que pase por caja por el uso de Java en Android, una startup ofrece una alternativa menos problemática: el uso de C#. Xamarin es una empresa de Boston que ofrece herramientas para crear aplicaciones móviles multiplataforma usando dicho lenguage, y de ahí que pensaran en cómo sería Android si se prescindiera de su máquina virtual de Java.

Java y C# son parte de la gran familia de lenguajes de programación interpretados, esto es, que el código es ejecutado en un interprete o 'máquina virtual'. La principal ventaja del uso de la máquina virtual es que permite que el lenguaje sea indepediente del sistema operativo o el hardware, ya que lidiar con esto es trabajo del intérprete. Por lo tanto, esto abre un gran abanico de posibilidades al programador ya que, aunque haga un programa para una plataforma, será compatible en todos aquellos en los que la máquina virtual esté disponible.

Por lo que volviendo al tema que nos ocupa, Android es básicamente un sistema Linux sobre el que funciona el interprete 'Dalvik' que ejecuta todo el sistema operativo. Y Dalvik, es una máquina virtual de Java, por mucho que Google lo niegue para evitar su certificación por parte de Oracle (Android se creó cuando Java pertenecía a Sun, que era bastante más permisiva con las certificaciones). Obviamente Dalvik está muy modificado de cara a funcionar mejor en dispositivos móviles que la implementación original de Java, pero aún le queda bastante recorrido en cuanto a su optimización. Este es uno de los puntos que resalta la gente de Xamarin como principal ventaja de uso de C# ya que Mono, su intérprete para Linux, lleva cerca de 10 años siendo desarrollado, por lo que está muy pulido.

mono_vs_dalvik

Además, C#, a pesar de ser un lenguaje creado por Microsoft, se presentó desde el principio como un estándar, por lo que las implementaciones del intérprete no están sujetas a derechos de autor. Luego Xamarin, como empresa altamente implicada también en el desarrollo de Mono y herramientas asociadas a C#, ha liberado el sistema operativo XobotOS que mantiene la filosofía de Android pero usando este lenguaje, a modo de prueba de concepto. Descartan por completo el portado de Android a C#, por ser una tarea titánica, aunque trabajan en una herramienta que lo traduzca automáticamente desde Java llamada Sharpen.

Por lo que la pelota está en el tejado de Google aunque, siendo realistas, es bastante complicado que esta cambie por completo la infraestructura de Android por mucho que sea acosada por Oracle. Principalmente por lo que caracteriza a los sistemas operativos móviles actuales: las aplicaciones de terceros. Perder toda la base creada hasta el momento sería una auténtica catástrofe, por lo que no creo que veamos a Android prescindir de java. Pero viniendo de Google, tampoco me sorprendería.