mais importante ainda, a Microsoft alguma vez portará o .NET para uma plataforma diferente do Windows?
Kerry
Respostas:
325
Atualização : desde que escrevi esta resposta há dois anos, nós produzimos o Mono para rodar no Android. O trabalho incluiu algumas etapas: transportar o Mono para o Android, integrá-lo ao Visual Studio, criar plugins para o MonoDevelop no Mac e Windows e expor as APIs do Java Android para as linguagens .NET. Já está disponível em http://monodroid.net
O Mono no Android é baseado no tempo de execução do Mono 2.10 e o padrão é o perfil 4.0 com o compilador C # 4.0 e usa o novo mecanismo de coleta de lixo SGen da Mono, bem como nosso novo sistema de coleta de lixo distribuído que executa GC em Java e Mono.
Os links abaixo refletem o Mono no Android em janeiro de 2009, eu os guardei para o contexto histórico
O Mono agora funciona no Android, graças ao trabalho de Koushik Dutta e Marc Crichton.
Bem, eu disse, não MS nem Google, mas provavelmente Miguel e aqui está você (bem, eu sei que não era você, mas de alguma forma próxima) Ótimos links Miguel. Você acha que o Google alguma vez apoiaria isso? Quero dizer, eles estão pegando o porto sob o capô? :) Se eu pudesse eu downvote minha própria resposta :)
OscarRyz
6
Uhm, isso é "apenas" rodando no debian rodando no mesmo hardware. Não é totalmente portado para "android" na minha opinião, mas parece que não é um grande problema portá-lo completamente, parece.
Sandos
1
Gostaria de saber, houve alguma conversa com o Google para facilitar a instalação? Talvez colocá-lo como um download gratuito do mercado? Permitir que aplicativos .Net sejam colocados no mercado?
csauve
1
Pena que não funciona com o Visual Studio Express ...
Rockcoder
1
Impressionante. Fico feliz em ver uma resposta atualizada. 1 Miguel
Steven Evers
78
Sim, será possível e não será tão difícil. Para começar, tudo o que é necessário neste momento é algum tipo de conversor que transformará o MSIL em bytecode Dalvik . Como os dois formatos são de código aberto e bem documentados, não haverá nenhum problema.
Portanto, é possível escrever aplicativos Android em C # ou VB.NET; a questão é quanto das bibliotecas padrão do .NET Framework serão suportadas. Mas isso é outra questão.
Oscar Reyes escreveu:
Tenho certeza de que, se o Google entregar QUALQUER interesse em .net, eles projetariam algo enquanto o Android estivesse nos primeiros estágios, não agora quando estão em estágios de produção. Não quero dizer que não seja possível, o que estou dizendo é que eles não estão interessados. Talvez em mmm hhhh 10 anos.
Na verdade, o que eles já criaram é muito compatível com Java e .NET
Eles não podem fazer tudo de uma vez, mas se você procurar no Android SDK, existe uma ferramenta chamada dx . Essa ferramenta converte o bytecode Java no bytecode Dalvik; portanto, em outras palavras, você pode executar programas escritos em Java no Android sem nenhum esforço hoje. Agora, a mesma ferramenta é necessária para o .NET.
Considerando como .NET e Java são semelhantes, é realmente uma questão de tempo.
ddimitrov escreveu:
A tradução .Net-> Java-> Dalvik pode ser feita ainda agora ( http://dev.mainsoft.com/ ), mas acho que você subestima a falta de bibliotecas .Net. É claro que alguém pode portar Mono, mas é definitivamente um esforço não trivial.
Não há necessidade de portar Mono. O Android já possui VM e alguma API básica. Tudo o que é necessário é o conversor CIL-> Dalvik e o minúsculo wrapper .NET para API do Android (e talvez alguma implementação básica de algumas classes .NET padrão). É isso aí.
Atualização: o .NET já funciona no Android - você precisará do produto Monodroid ( http://monodroid.net ), conforme indicado acima.
Sim, nunca sabemos ... talvez, talvez ... Bem, faça 4 anos em vez de 10 ...: P
OscarRyz 24/10/2008
16
Eu não concordo Tudo o que você diz é tecnicamente possível, mas acho que você subestima o trabalho necessário por uma ordem de magnitude. É sempre fácil reunir uma prova de conceito, como uma palavra de alô compilada em poucas horas. Mas configurar wrappers para todas as classes é muito trabalho.
Lena Schimmel
4
@Brian, o vídeo que você postou é sobre o iPhone e não o Android.
Lubos Hasko
14
Bem, dada a afinidade Java do Google, não é de surpreender que eles não tenham optado pelo .NET com isso. Sim, o uso do Mono pode ser viável, mas tenho quase certeza de que o Google evitaria o .NET com zelo semelhante ao da Microsoft.
9119 Joey
2
"as pequenas empresas não vão apostar seu futuro, a menos que algumas maiores tenham algum peso por trás disso". A Novell já a patrocina. E a Microsoft suporta o projeto derivado Moonlight, fornecendo codecs e suítes de teste.
sblom 27/12/2009
23
Miguel de Icaza anunciou em seu blog no dia 17 de fevereiro de 2010 que eles estão começando a trabalhar em mono para android, que será chamado MonoDroid.
Isso será semelhante ao MonoTouch no iPhone, mas no Android.
Ele fornecerá ligação à interface do usuário do Android, para que os aplicativos tenham a aparência de aplicativos Android nativos ao vivo. Isso exigirá que você escreva uma interface do usuário específica do Android.
No entanto, você poderá reutilizar as bibliotecas existentes de nível inferior sem a necessidade de recompilar.
A versão beta do Monodroid já está disponível para as pessoas que se inscreveram no programa beta mais cedo.
Damian
sim, ele está atualmente na versão beta privada, pela qual me
inscrevi
9
Existe o Mono para Android, o framework .NET portado para Android. E existe o MonoDroid, uma pilha de desenvolvimento para usar C # e as principais APIs .NET para desenvolver aplicativos baseados no Android. O MonoDroid Preview 1 foi lançado há alguns dias.
Como esse é um dos primeiros links no Google ao procurar suporte para Android e .net, é apropriado postar aqui.
O projeto mono está trabalhando em um SDK para desenvolver aplicativos Android usando idiomas CIL, como C #. O lado negativo é que será um produto comercial. monodroid
O MonoDroid está disponível para visualização. Eu acho que isso preencherá a lacuna. No entanto, o MonoDroid pode ser uma opção dispendiosa para o desenvolvimento. Suas outras ferramentas de desenvolvimento custam entre US $ 199 e US $ 4000 (a ferramenta de desenvolvimento para iPhone do MonoTouch .. custa entre US $ 399 e US $ 3999). Se as pessoas desenvolvem aplicativos com essas ferramentas, precisam de um modelo de negócios muito forte para obter retornos.
Eu gosto das respostas. Isso mostra que é possível, mas se você assistir a esse vídeo, também mostra quantos problemas ainda estão abertos para serem resolvidos e quanto trabalho está por trás de tudo isso.
Lena Schimmel
4
Uma porta modificada do Mono também é totalmente possível.
@akdom, você tem experiência com portabilidade de software do sistema operacional / desktop para servidor incorporado? Eu tenho alguma experiência em desenvolvimento móvel (Java e Brew) e IMHO, você está subestimando o esforço. Pode ser possível, mas definitivamente não nos próximos 3 anos.
Ddimitrov 18/10/08
@ddmitrov: A questão era se a plataforma Android com EVER suporta .NET, e não nos próximos três anos. Eu estava apenas afirmando que, como o Mono é uma implementação de código aberto do .NET, seria mais fácil construir uma versão Android do Mono do que começar do zero.
akdom 18/10/08
2
Não demorou três anos no final. E o pessoal da Xamarin planeja fazer isso novamente em menos de seis meses.
Justin
4
A estrutura compacta do .NET foi portada para o Symbian OS ( http://www.redfivelabs.com/ ). Se o .NET como plataforma 'fechada' puder ser portado para essa plataforma, não vejo motivo para que isso não possa ser feito para o Android.
Você já usou a estrutura compacta? Eu faço todos os dias no meu trabalho e uma porta mono na forma de MonoDroid será muito melhor.
precisa saber é o seguinte
4
.NET e Mono são ótimos ambientes, com muitas ferramentas e uma excelente base de habilidades de pessoas que sabem usá-las.
Acho que o Mono tem a oportunidade de ser o ambiente de desenvolvimento de plataforma cruzada preferido, visto que eles são a única alternativa ao Objective-C no iPhone e devem ser portáteis para o Android, e o .NET já está no Windows Mobile.
Espero realmente ver uma implementação sólida do Mono no Android, com invólucros para a API do Android e com o Monotouch, e estaria preparado para pagar por isso, já que não estou em condições de fazer isso sozinho.
É mais provável que você veja uma implementação Android do Silverlight. O representante da Microsoft confirmou que é possível, contra o iPhone, onde o representante disse que era problemático.
Mas uma versão da estrutura .Net é possível. Só preciso de alguém para se preocupar tanto com isso :)
Mas, realmente, migrar de C # para Java não é um problema e, considerando as diferenças drásticas entre as duas plataformas (PC vs. G1), parece improvável que você consiga se familiarizar com uma base de código para qualquer aplicativo que você queria rodar em ambos.
Na minha opinião, seria tecnicamente possível converter o Bytecode da CLI em Dalvik e escrever classes de wrapper para alguns recursos principais, como coleções, acesso a arquivos, etc., mesmo que fosse um trabalho árduo.
Mas um aplicativo de desktop .NET executado no Android pareceria estranho, pois teria uma GUI clássica do tipo Windows, que não é muito utilizável em um dispositivo de toque. Se, por outro lado, você codificasse uma GUI semelhante ao Android no .NET, seria necessário outro conjunto de wrappers (observe que o empacotamento é exatamente o contrário dos invólucros mencionados acima).
Não tenho certeza se um aplicativo móvel .NET pareceria nativo no Android, mas acho que não.
Talvez você esteja interessado em outra abordagem: você pode escrever seu aplicativo na linguagem Java. Em seguida, você pode compilá-lo no .NET via Microsoft J # (eu sei que ele foi descontinuado, mas você ainda pode fazer o download e usá-lo) e usar o mesmo código Java no Android. Novamente, isso é para as classes principais, também conhecidas como lógica de negócios, e novamente você precisa escrever GUIs de reboque. Talvez você também possa usar o J2ME, o que você não poderá fazer se usar o .NET.
não, você não deveria estar assumindo que os formulários de vitória seriam portados, o que é uma péssima ideia, o MonoDroid terá ligações aos widgets da interface do usuário do Android, por isso será exatamente como um aplicativo Android nativo, o usuário não precisa nem saber está sendo executado no MonoDroid
trampster
Também é um péssimo CLI Bytecode para Dalvik, o tempo de execução mono e a VM já funcionam no ARM, sendo executado no Android não será um problema. E vendo como mono o JIT é compilado e o Dalvik é interpretado. A execução no tempo de execução mono será muito mais rápida.
trampster
2
O .NET para Android parece uma possibilidade real para mim. Há notícias de que a Microsoft lançará o Silverlight adequado para Android - nunca subestime as vantagens da Microsoft para colocar a inicialização na Apple. Um smartphone que é mais rápido, mais rico em recursos, ciclo de vida de desenvolvimento mais rápido, hardware impressionante, Flash e Silverlight como instalável padrão.
A Microsoft tem um grande interesse em melhorar o Android e, ao mesmo tempo, os aplicativos serão redirecionados para o Silverlight no Android e também funcionarão no sistema operacional Windows Phone 7 com multi-touch, GPS, etc., etc.
Respostas:
Atualização : desde que escrevi esta resposta há dois anos, nós produzimos o Mono para rodar no Android. O trabalho incluiu algumas etapas: transportar o Mono para o Android, integrá-lo ao Visual Studio, criar plugins para o MonoDevelop no Mac e Windows e expor as APIs do Java Android para as linguagens .NET. Já está disponível em http://monodroid.net
O Mono no Android é baseado no tempo de execução do Mono 2.10 e o padrão é o perfil 4.0 com o compilador C # 4.0 e usa o novo mecanismo de coleta de lixo SGen da Mono, bem como nosso novo sistema de coleta de lixo distribuído que executa GC em Java e Mono.
Os links abaixo refletem o Mono no Android em janeiro de 2009, eu os guardei para o contexto histórico
O Mono agora funciona no Android, graças ao trabalho de Koushik Dutta e Marc Crichton.
Você pode ver um vídeo dele sendo executado aqui: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
E você pode obter as instruções para criar o Mono você mesmo aqui: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Você pode obter uma referência comparando o JIT da Mono contra o intérprete Dalvik aqui: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
E, é claro, você pode obter uma imagem pré-configurada com Mono aqui (consulte a parte inferior da postagem para obter detalhes sobre como usá-la): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
fonte
Sim, será possível e não será tão difícil. Para começar, tudo o que é necessário neste momento é algum tipo de conversor que transformará o MSIL em bytecode Dalvik . Como os dois formatos são de código aberto e bem documentados, não haverá nenhum problema.
Portanto, é possível escrever aplicativos Android em C # ou VB.NET; a questão é quanto das bibliotecas padrão do .NET Framework serão suportadas. Mas isso é outra questão.
Na verdade, o que eles já criaram é muito compatível com Java e .NET
Eles não podem fazer tudo de uma vez, mas se você procurar no Android SDK, existe uma ferramenta chamada dx . Essa ferramenta converte o bytecode Java no bytecode Dalvik; portanto, em outras palavras, você pode executar programas escritos em Java no Android sem nenhum esforço hoje. Agora, a mesma ferramenta é necessária para o .NET.
Considerando como .NET e Java são semelhantes, é realmente uma questão de tempo.
Não há necessidade de portar Mono. O Android já possui VM e alguma API básica. Tudo o que é necessário é o conversor CIL-> Dalvik e o minúsculo wrapper .NET para API do Android (e talvez alguma implementação básica de algumas classes .NET padrão). É isso aí.
Atualização: o .NET já funciona no Android - você precisará do produto Monodroid ( http://monodroid.net ), conforme indicado acima.
fonte
Miguel de Icaza anunciou em seu blog no dia 17 de fevereiro de 2010 que eles estão começando a trabalhar em mono para android, que será chamado MonoDroid.
Isso será semelhante ao MonoTouch no iPhone, mas no Android.
Ele fornecerá ligação à interface do usuário do Android, para que os aplicativos tenham a aparência de aplicativos Android nativos ao vivo. Isso exigirá que você escreva uma interface do usuário específica do Android.
No entanto, você poderá reutilizar as bibliotecas existentes de nível inferior sem a necessidade de recompilar.
fonte
Existe o Mono para Android, o framework .NET portado para Android. E existe o MonoDroid, uma pilha de desenvolvimento para usar C # e as principais APIs .NET para desenvolver aplicativos baseados no Android. O MonoDroid Preview 1 foi lançado há alguns dias.
fonte
Como esse é um dos primeiros links no Google ao procurar suporte para Android e .net, é apropriado postar aqui.
O projeto mono está trabalhando em um SDK para desenvolver aplicativos Android usando idiomas CIL, como C #. O lado negativo é que será um produto comercial. monodroid
fonte
O MonoDroid está disponível para visualização. Eu acho que isso preencherá a lacuna. No entanto, o MonoDroid pode ser uma opção dispendiosa para o desenvolvimento. Suas outras ferramentas de desenvolvimento custam entre US $ 199 e US $ 4000 (a ferramenta de desenvolvimento para iPhone do MonoTouch .. custa entre US $ 399 e US $ 3999). Se as pessoas desenvolvem aplicativos com essas ferramentas, precisam de um modelo de negócios muito forte para obter retornos.
fonte
Verifique isso xmlvm Eu acho que isso é possível. Pode ser também pode conferir este vídeo
fonte
Uma porta modificada do Mono também é totalmente possível.
fonte
A estrutura compacta do .NET foi portada para o Symbian OS ( http://www.redfivelabs.com/ ). Se o .NET como plataforma 'fechada' puder ser portado para essa plataforma, não vejo motivo para que isso não possa ser feito para o Android.
fonte
.NET e Mono são ótimos ambientes, com muitas ferramentas e uma excelente base de habilidades de pessoas que sabem usá-las.
Acho que o Mono tem a oportunidade de ser o ambiente de desenvolvimento de plataforma cruzada preferido, visto que eles são a única alternativa ao Objective-C no iPhone e devem ser portáteis para o Android, e o .NET já está no Windows Mobile.
Espero realmente ver uma implementação sólida do Mono no Android, com invólucros para a API do Android e com o Monotouch, e estaria preparado para pagar por isso, já que não estou em condições de fazer isso sozinho.
fonte
É mais provável que você veja uma implementação Android do Silverlight. O representante da Microsoft confirmou que é possível, contra o iPhone, onde o representante disse que era problemático.
Mas uma versão da estrutura .Net é possível. Só preciso de alguém para se preocupar tanto com isso :)
Mas, realmente, migrar de C # para Java não é um problema e, considerando as diferenças drásticas entre as duas plataformas (PC vs. G1), parece improvável que você consiga se familiarizar com uma base de código para qualquer aplicativo que você queria rodar em ambos.
fonte
Na minha opinião, seria tecnicamente possível converter o Bytecode da CLI em Dalvik e escrever classes de wrapper para alguns recursos principais, como coleções, acesso a arquivos, etc., mesmo que fosse um trabalho árduo.
Mas um aplicativo de desktop .NET executado no Android pareceria estranho, pois teria uma GUI clássica do tipo Windows, que não é muito utilizável em um dispositivo de toque. Se, por outro lado, você codificasse uma GUI semelhante ao Android no .NET, seria necessário outro conjunto de wrappers (observe que o empacotamento é exatamente o contrário dos invólucros mencionados acima).
Não tenho certeza se um aplicativo móvel .NET pareceria nativo no Android, mas acho que não.
Talvez você esteja interessado em outra abordagem: você pode escrever seu aplicativo na linguagem Java. Em seguida, você pode compilá-lo no .NET via Microsoft J # (eu sei que ele foi descontinuado, mas você ainda pode fazer o download e usá-lo) e usar o mesmo código Java no Android. Novamente, isso é para as classes principais, também conhecidas como lógica de negócios, e novamente você precisa escrever GUIs de reboque. Talvez você também possa usar o J2ME, o que você não poderá fazer se usar o .NET.
fonte
O .NET para Android parece uma possibilidade real para mim. Há notícias de que a Microsoft lançará o Silverlight adequado para Android - nunca subestime as vantagens da Microsoft para colocar a inicialização na Apple. Um smartphone que é mais rápido, mais rico em recursos, ciclo de vida de desenvolvimento mais rápido, hardware impressionante, Flash e Silverlight como instalável padrão.
A Microsoft tem um grande interesse em melhorar o Android e, ao mesmo tempo, os aplicativos serão redirecionados para o Silverlight no Android e também funcionarão no sistema operacional Windows Phone 7 com multi-touch, GPS, etc., etc.
fonte