O Android vem tomando espaço no coração dos desenvolvedores, e com uma mãozinha da Novell ele pode cair de vez nas graças da comunidade .NET.

A Novell já havia tentado em 2009 conquistar os desenvolvedores .NET lançando o Monotouch, uma ferramenta para desenvolvimento de aplicativos para IOS onde os desenvolvedores poderiam criar aplicativos em C# usando o Visual Studio ou o Monodevelop. Porém devido a uma série de restrições impostas pela Apple na ocasião, juntamente com o salgado valor de USD$ 399,00 para profissionais individuais e USD$ 999,00 para empresas, a ferramenta descrita pelo próprio vice-presidente de desenvolvimento da Novell como sendo “[…] basicamente uma extensão do Visual Studio” não convenceu a comunidade, que preferiu aprender a desenvolver em Objectve-C e ter a honra de ter um MacBook, mesmo que fosse da empresa (pelo menos foi o meu caso).

Porém no último trimestre a Novell lançou o Mono for Android, que apesar de também ser uma ferramenta comercial, vem agora em uma versão sem limites de utilização e totalmente compatível com .NET C# 4.0, e promete fornecer a melhor solução cross-plataform exitente entre Windows Phone 7, Android e IOs.

Aplicativos criados usando o Monodroid (como é mais conhecido) rodam sobre um ambiente de execução Mono que roda em paralelo à DVM (Dalvik Virual Machine) do Android. Ambas os ambientes de execução são executados sobre o Kernel do Linux, fornecendo API’s para os desenvolvedores criar seus aplicativos de forma mais fácil. E assim como o Mono faz com sua versão linux desktop, possibilitando que as DLL’s do .NET funcionem no linux tão bem quanto no Windows, o Monodroid permite que as chamadas aos recursos .NET sejam executadas na plataforma Android.

Como o .NET não foi criado para acessar diversos recursos do dispositivo, que apenas estariam disponíveis na DVM, o Monodroid fornece vários namespaces que permitem acesso aos recursos Java do Android, dando infinitas possibilidades.

Abaixo você pode dar uma espiada na arquitetura:

Arquitetura do Monodroid

Arquitetura do Monodroid - Fonte: Monodroid Architecture Documentation

Para ler mais a respeito do funcionamento da comunicação entre os ambientes de execução Mono e DVM, acesse a documentação oficial em “API Design“.

As restrições ficam por conta de limitações na utilização de Dynamic Languages (IronPyton, IronRuby, etc) , Java Generation e a não implementação nos namespaces Android.OS.IParcelable, Java.IO.ISerializable e bibliotecas java de terceiros.

Caso tenham se interessado no assunto acessem a página oficial do monodroid, baixem o trial and enjoy.