XobotOS: O Android baseado em .NET e C#
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].
Este artigo tem mais de um ano
Interessante 🙂
que medooooo!!!!!!!
deixo aqui este link que é o codigo do projecto
https://github.com/xamarin/XobotOS
Thanks Carlos
Adicionei ao artigo para quem quiser descarregar. Obrigada.
Obrigado Nós.
;))
a seguir com interesse!!!
Android com C# era genial, realmente ´s uma linguagem bastante poderosa. Ainda por cima facilitaria a programaçao memso para iniciantes, uma vez que o visual C# facilita muita coisa.
Realmente seria bom… pelo menos o Android seria mais rápido, pelo que percebi, a comunicação com o hardware seria mais curta e por isso mais rápida. Mas seria possível fazer uma actualização tão profunda sem ser necessário alterar o Hardware ja existente? já agora as chamadas “Custom ROM’s” poderão vir a fazer alterações desse estilo devido ao facto do Android ser código aberto?
Bom artigo
Não irá levar muito tempo até que comessem a aparecer custom roms feitas com esta nova linguagem e até pode haver uma mudança por parte da google e adapte esta nova linguagem, é só uma questão de tempo!
Custom roms sim, agora nao espere que o o Google faça ou ajude, os gerentes e principais engenheiros do Google sempre tiveram o sonho de de fazer um sistema operacional Java (por mais idiota que pareça é verdade) eles não vão largar o osso a não ser que recebam uma ordem vinda de muito acima.
Se não houver complicações entre Software e Hardware, as custom roms poderão vir desenvolvidas em C#…
Contudo, duvido que os equipamentos Android consigam correr Android.NET, mas acredito que será uma futura experiência, e se realmente o Android fica muito mais poderoso e rápido, a Google não vai deixar isto ficar por aqui e ainda vamos ver a Google comprar este Android.NET xD
o Android deveria ter sido “feito” com C# desde o início. E assim talvez o MS Mango nunca tivesse visto a luz do dia. C# ftw, já agora, aqui o pplware não quer fazer outro passatempo para ganhar um curso, ou material didáctico sobre C#, ou até mesmo mais uns tutoriais?
+1 😀
Quem sabe a google não pega nos milhões que anda a gastar nos tribunais e dá um chuto no Java. Ou melhor ainda, desenvolve a sua própria linguagem e deixava-os todos a falar sozinhos…. Conhecendo a google, não poderíamos espera uma linguagem nada abaixo de excelente….
A google já tem a sua liguagem
A Google tem o Go, mas não me parece uma linguagem muito indicada para o efeito. Parece mais desenhada para aplicações server-side e clusters que para desenvolvimento de aplicações com interacção directa com o utilizador. Para isso mais valia dizerem que o desenvolvimento é nativo em C/C++ do que adoptar uma linguagem sem grande difusão.
Sendo eu um àvido programador Java e .NET (entre outros) tenho a perfeita noção do quão mais simples é programar em C#. Apesar de ser possivel, de forma geral, efectuar as mesmas acções em ambos os ambientes nota-se bastante o amadurecimento da linguagem .NET que, de versão para versão, aumenta o seu desempenho e facilita considerávelmente a vida aos programadores com keywords tão simples quanto delegate, event e que futuramente trará novidades que só podem estar a alegrar vai acompanhando as novidades da versão 4.0.
Ainda assim nunca imaginei que a linguagem Java oferecesse maior problema à Google do que .NET. Como Java é open-source (admito que não estou muito informado sobre licenças), sempre pensei que fosse muito mais dificil adquirir licenciamento .NET ao invés de Java e nunca estranhei a opção da Google. Afinal, estava enganado…
Se o aumento de desempenho é significativo, uma mudança de linguagem em futuras implementações (se possivel, o suporte de ambas mantendo compatibilidade) certamente que ajudaria a balança a pender para o lado dos Androids no mercado dos smartphones e tablets.
Atenção que o Java não é open-source. Prova disso são os processos da Sun contra a Microsoft e agora os da Oracle contra a Google.
Esta é das não-verdades que mais corre mundo!
É verdade o que dizes e foi algo que me apercebi recentemente com estes filmes entre a Oracle e a Google.
É uma falha comum, uma vez que Java está bastante relacionado com aplicações e bibliotecas open-source, então foi algo que eu sempre fui associando. Como nunca me dei ao trabalho de verificar as condições da licença, pensei sempre que fosse open-source.
Cada vez mais acredito que se a Microsoft suportasse melhor .NET em ambientes não Windows (todos nós sabemos as razões de não o fazer), Java não duraria muito.
Enfim… a Oracle que não mude rapidamente de atitude e para além de estar a começar a ter problemas na venda dos seus servidores e BDs (fazer negócio baseando-se em legacy para depois chular forte e feio numa crise destas não dura muito) ainda se arrisca a que a sua linguagem entre em declineo. Antes tinhamos Java nativo em quase todos os telemóveis, entretanto chegou a Apple e o seu Objective-C que, tal como sabemos, o iPhone e iPad têm uma cota gigantesca de mercado. Se entretanto a Google deixar de utilizar Java e uma vez que Windows Phone utiliza .NET, com o desaparecimento dos “Dumbphones” Java arrisca-se a desaparecer do mapa.
Hummmm…. qual java é que tás a falar? 😉
http://openjdk.java.net/
Esta é uma notícia interessante e que pode mesmo mudar um pouco este paradigma!
Vou estar atento!
Interessante sem dúvida , não tarda vamos ter distros em Android como temos actualmente em Linux , o código aberto tem estes benefícios .
Cumprimentos
Serva
Esta nova ideia ou re-ideia do Android em .NET C#, pode levar o Android a um patamar que há muito se espera deste sistema operativo: estabilidade, uma grande fluidez, desempenho, adaptabilidade total ao hardware, melhor segurança, maior facilidade no desenvolvimento de custom e stock ROMs, etc.
E certamente, irá cativar muito mais os programadores a desenvolverem aplicações baseadas em C# (.NET) do que em Java.
Esperar e ver…
Agora o que falta saber é se os actuais equipamentos podem correr este Android.NET ou não…
Porque se for concluído que podem correr, basta que as conhecidas equipas de desenvolvimento de ROMs ponham mãos ao “tradutor” de Java para C#, e vão por o tradicional Android de lado e adoptar o Android.NET.
Agora falta é a Google pensar neste assunto e tomar uma medida.
E quanto ao VB.NET, por utilizar a mesma plataforma .NET será que também os utizadores de VB.NET vão poder programar para android?
O VB .Net está a cair em desuso.
Felizmente 🙂
Onde leste que o VB.NET cair em desuso?
A Google usa Java não é nem nunca foi pela licença do mesmo. Java é uma linguagem orientada a ter uma máquina virtual, e o Android iniciou-se com o conceito de abstracção de processos através da Dalvik VM. C# e Java são apenas linguagens, e uma linguagem X não é mais rápido do que Y só porque sim, está em causa q qualidade do código gerado pelo compilador, a forma de execução das aplicações no sistema operativo entre muitos outros factores.
O Java no Android não tem nada a ver como Java do computador, o bytecode é diferente, as optimizações são diferentes, e a DalvikVM comunica directamente com o kernel ao contrário de que no computador de desktop ainda está por cima de um sistema operativo. A mudança para .NET não iria aumentar a performance ou estabilidade de Android, até porque essas questões prendem-se mais com coisas de tão baixo nível que não têm nada a ver com a linguagem utilizada. O Kernel de Android assim como muitas das suas componentes são escritas em C, compiladas para a arquitectura de destino e dessa forma optimizadas e a Dalvik VM juntamente com o BIONIC tratam da execução de aplicações.
É giro este projecto existir do ponto de vista conceptual, e mesmo para manter uma possibilidade aberta para programadores .NET, mas não irá mudar a forma como o sistema operativo é gerido pela Google ou pela Open Handset Alliance.
Haverá compatibilidade com as actuais aplicações? Se não houver tenho algumas duvidas que a google re-faça o seu SO
Fantástico 😉