A empresa Xamarin conseguiu adaptar grande parte do sistema operativo Android da Google, Android, para o ambiente .NET e C#.
Após o problemas legais com patentes relacionadas com o Java, entre a Google e a Oracle, o XobotOS é mais um passo para a criação de um sistema operativo baseado em Android e que evita as complicações legais com a Oracle.
O principal ambiente aplicacional do Android é baseado em tecnologia Java, desenvolvida pela Sun que entretanto foi adquirida pela Oracle. A decisão da Google em adoptar o Java como ambiente resultou numa guerra de patentes e processos legais com a Oracle.
O Java não era a única opção da Google. Por momentos, a empresa chegou a considerar o ambiente .NET e a linguagem de programação C#. Tal como o Java, o .NET e C# providencia uma linguagem e API conveniente, moderna e orientada a objectos. Ao contrário do Java, a maior parte do C# e .NET estão cobertos por standards ISO, com compromissos juridicamente vinculativos da Microsoft que evitam que a empresa processe os implementadores de especificações por violações a patentes.
Embora a implementação .NET da Microsoft seja a mais conhecida e usada, existem outras implementações de grande qualidade como o Mono. Desde Maio do ano passado, o desenvolvimento e manutenção do Mono tem sido gerido pela Xamarin, uma startup criada pelos principais developers do Mono depois de uma história complicada com a Novell e Attachmate. A Xamarin tem dois importantes produtos: Mono for Android e MonoTouch, que possibilita o desenvolvimento Mono para Android e iOS, respectivamente.
Os developers da Xamarin começaram um projecto para adaptar as partes de Java do Android para utilizarem C# e .NET. O resultado foi o XobotOS.
Para criar o XobotOS a partir de mais de um milhão de linhas de código de Java, a Xamarin utilizou o Sharpen, uma ferramenta de conversão Java para C#. A empresa teve de desenvolver e melhorar o Sharpen para que pudesse lidar com a complexidade do código do Android. Uma pequena parte do código foi manualmente adaptada, como por exemplo as partes que lidam com a camada mais baixa do sistema operativo.
O Mono tem um bom desempenho e consegue correr programas .NET muito mais rapidamente do que os programas equivalentes em Java no Android. A máquina virtual o Mono é bem madura quando comparada com a máquina virtual Dalvik da Google, e é capaz de uma optimização mais profunda do que a Dalvik. A Microsoft também adicionou algumas funcionalidades que aumentam o desempenho, como os generics em tempo de execução e “value types” com baixo overhead para objectos pequenos. Tudo melhoramentos que o Java não tem.
A Xamarim apresenta o XobotOS como um “projecto de investigação” e afirma não ter intenção em mantê-lo como um só projecto. Pelo contrário, pretende criar o XobotOS para melhorar o seu produto “Mono for Android”.
O XobotOS aparece como uma boa forma de evitar a guerra de patentes que a Oracle trava com a Google. A patente 6,061,520, em particular, descreve uma forma de tratar algumas dificuldades da especificação Java. A outra patente, RE38,104, aplica-se potencialmente ao Mono, mas a validade desta patente é questionável já que foi preliminarmente rejeitada após re-exame pelo US Patent and Trademark Office.
E ainda há o problema dos direitos de autor, já que o código-fonte do Android implementa muitas das API do Java; a tradução automática do Sharpen não evitaria estas dificuldades. Limpar o código-fonte das 37 APIs requereria um esforço substancial, e é aqui que o .NET se torna útil, já que fornece alternativas a muitas dessas API e até torna algumas supérfluas.
Enquanto a Xamarin não deseja desenvolver mais o XobotOS, este é, tal como o Android, software de código aberto, publicado sob uma licença Apache. Com este trabalho de base, um developer farto de processos legais, ou mesmo a Google, poderão, quem sabe, construir um sistema operativo Android livre do Java [via].