Ya han salido paralelamente la nueva versión de MonoTouch 4.0 para iPhone y la tan esperada primera versión de Mono Android 1.0. Ambos productos permite desarrollar aplicaciones .NET 4.0 con C# 4.0 tanto para iOS como para Android, respectivamente, y ambos estan basados la útlima versión del core de Mono 2.10 con lo que permiten hacer uso del Parallel Framework para aprovechar las capacidades multi-thread tanto en iPad 2 como en dispositivos Xoom.
El equipo de Mono ha estado cerca de 1 año dedicado al desarrollo de Mono Android 1.0 y junto con los binarios han proporcionado todos los recursos necesarios para los desarroladores, desde los tutoriales "Hello World", referencias a las API o guias HowTo hasta aplicaciones de ejemplo y documentación sobre el uso de Marketplace ya que las aplicaciones desarrolladas con Mono Android se distribuiran con el runtime de Mono que gestionará Mono Linker.
API's
Como entornos de desarrollo podemos utilizar tanto Visual Studio .NET 2010 como MonoDevelop para desarrolar aplicaciones Mono Android. El código de Mono Android se ejecuta lado a lado con la maquina virtual de Android, Dalvik, en el mismo proceso. Dentro de las API's encontramos los siguientes componentes:
Core .NET APIs
Android.* APIs
OpenGL APIs
Java bridge APIs.
Core .NET APIs
A nivel del Core Mono Android tiene alguna diferencias a destactar debido a la naturaleza por propio dispositivo. Mientras en Android se soporta la compilación JIT (Just In Time), en el caso de iOS esto no es posible puesto que lo bloqueo a nivel de kernel. Windows Phone 7, por su parte, tiene algunas limitaciones en el acceso a System.Reflection.Emit, que Android, por su parte no tiene. Esto significa que puede soportar F# y se habilita el DLR (Dynamic Language Runtime) con lo que podemos utilizar, además, IronPython, IronRuby e IronJS.
Sin embargo, pese a que estos lenguajes estan soportados por Mono Android, no se proporcionan plantillas para el entorno de desarrollo. En el caso de Ruby y Phyton su soporte estan limitado debido a limitaciones del propio Android, mas concretamente por la maquina virtual Dalvik. La limitación de los lenguajes IronPython, IronRuby e IronJS se encuentra en que no pueden heredar de las clases de Android.
Android.* APIs
Las librerias Android.* son básicamente un mapeo 1:1 con las librerias nativas de Java para Android pero con sintaxis 100% C#, es decir con propiedades por clases en lugar del get / set o el uso de eventos incluyendo las expresiones lambda. En cuanto a las API's de la UI se proporcionan 57 librerias para utilizar características del dispositivo Android desde el soporte para telefonia, base de datos o reconocimiento de voz, entre otras.
OpenGL APIs
OpenGL se expone a través de la libreria OpenTK lo cual permite intellisense tanto desde Visual Studio .NET como de MonoDevelop. Para los que no lo conozcáis, OpenTK es una libreria a bajo nivel escrita en C# para el uso de OpenGL, OpenCL y OpenAL diseñada para juegos y aplicaciones científicas o de cualquier otro tipo que hagan un uso extensivo de audio, video y 3D y que se ha convertido en la libreria estándard en el mundo Android.
Java bridge APIs.
Por último, se exponen aproximadamente unas 31 librerias Java.* para la interoperabilidad con librerias de terceros que requieran instancias de los tipos de datos de Java.
Más información | Documentación, Guía de instalación de Mono Android, Hello World Otros tutoriales, How-To, Sample Programs, Mono for Android API Xataka | Xataka Android Libros | Mono for Android