Google Android prendra-t-il jamais en charge .NET? [fermé]
253
Maintenant que le G1 avec le système d'exploitation Android de Google est maintenant disponible (bientôt), la plate-forme Android prendra-t-elle jamais en charge .Net?
plus important encore, Microsoft portera-t-il jamais .NET sur une plate-forme autre que Windows?
Kerry
Réponses:
325
Mise à jour : depuis que j'ai écrit cette réponse il y a deux ans, nous avons produit Mono pour fonctionner sur Android. Le travail comprenait quelques étapes: porter Mono sur Android, l'intégrer à Visual Studio, créer des plugins pour MonoDevelop sur Mac et Windows et exposer les API Java Android aux langages .NET. Ceci est maintenant disponible sur http://monodroid.net
Mono sur Android est basé sur le runtime Mono 2.10 et utilise par défaut le profil 4.0 avec le compilateur C # 4.0 et utilise le nouveau moteur de collecte de déchets SGen de Mono, ainsi que notre nouveau système de collecte de déchets distribué qui exécute le GC sur Java et Mono.
Les liens ci-dessous reflètent Mono sur Android depuis janvier 2009, je les ai conservés pour le contexte historique
Mono fonctionne désormais sur Android grâce au travail de Koushik Dutta et Marc Crichton.
Eh bien, j'ai dit, pas MS ni Google mais probablement Miguel et vous voilà (enfin je sais que ce n'était pas vous, mais en quelque sorte proche) Grands liens Miguel. Pensez-vous que Google soutiendrait jamais cela? Je veux dire qu'ils prennent le port sous leur capot? :) Si je pouvais, je voterais contre ma propre réponse :)
OscarRyz
6
Uhm, c'est "seulement" exécuté dans Debian fonctionnant sur le même matériel. Pas tout à fait porté sur "android" à mon avis, mais cela ne semble pas être un gros problème pour le porter complètement, il semble.
sandos
1
Je me demande, y a-t-il eu des discussions avec Google pour faciliter l'installation? Peut-être le mettre en téléchargement gratuit sur le marché? Autoriser la mise sur le marché d'applications .Net?
csauve
1
Dommage que cela ne fonctionne pas avec Visual Studio Express ...
Rockcoder
1
Impressionnant. Heureux de voir une réponse mise à jour. +1 Miguel
Steven Evers
78
Oui, ce sera possible et ce ne sera pas si difficile. Tout ce qui est nécessaire à ce stade pour commencer, c'est une sorte de convertisseur qui transformera MSIL en bytecode Dalvik . Étant donné que les deux formats sont open source et bien documentés, il n'y aura aucun problème avec lui.
Ainsi, l'écriture d'applications Android en C # ou VB.NET sera possible, la question est de savoir combien de bibliothèques standard du framework .NET seront prises en charge. Mais c'est un autre problème.
Oscar Reyes a écrit:
Je suis à peu près sûr que si Google avait un intérêt pour .net, il aurait conçu quelque chose pendant qu'Android en était aux premières étapes, pas maintenant quand ils sont en phase de production. Je ne veux pas dire que ce n'est pas possible, ce que je dis, c'est qu'ils ne sont pas intéressés. Peut-être en mmm hhhh 10 ans.
En fait, ce qu'ils ont déjà conçu est très compatible avec Java et .NET
Ils ne peuvent pas tout faire en même temps, mais si vous regardez dans le SDK Android, il existe un outil appelé dx . Cet outil convertit le bytecode Java en bytecode Dalvik, donc en d'autres termes, vous pouvez exécuter des programmes écrits en Java sur Android sans effort aujourd'hui. Maintenant, le même outil est nécessaire pour .NET.
Compte tenu de la similitude de .NET et Java, c'est vraiment une question de temps.
ddimitrov a écrit:
La traduction .Net-> Java-> Dalvik peut être effectuée même maintenant ( http://dev.mainsoft.com/ ), mais je pense que vous sous-estimez le manque de bibliothèques .Net. Bien sûr, quelqu'un peut porter Mono, mais c'est certainement un effort non trivial.
Pas besoin de porter Mono. Android a déjà une VM et une API de base. Tout ce dont vous avez besoin est un convertisseur CIL-> Dalvik et un minuscule wrapper .NET pour l'API Android (et peut-être une implémentation de base de certaines classes .NET standard). C'est tout.
Mise à jour: .NET fonctionne déjà sur Android - vous aurez besoin d'un produit appelé Monodroid ( http://monodroid.net ) comme indiqué ci-dessus.
Oui, nous ne savons jamais ... peut-être, peut-être ... Eh bien, faites-le 4 ans au lieu de 10 ...: P
OscarRyz
16
Je ne suis pas d'accord. Tout ce que vous dites EST techniquement possible, mais je pense que vous sous-estimez le travail requis par un ordre de grandeur. Il est toujours facile de rassembler une preuve de concept comme un mot bonjour compilé en quelques heures. Mais pour configurer des wrappers pour toutes les classes, c'est beaucoup de travail.
Lena Schimmel
4
@Brian, la vidéo que vous avez publiée concerne iPhone et non Android.
lubos hasko
14
Eh bien, étant donné l'affinité Java de Google, il n'est pas trop surprenant qu'ils n'aient pas opté pour .NET avec cela. Oui, l'utilisation de Mono pourrait être possible, mais je suis presque sûr que Google éviterait d'utiliser .NET avec un zèle similaire à celui de Microsoft pour éviter d'utiliser Linux.
Joey
2
"Les petites entreprises ne vont pas parier leur avenir à ce sujet, à moins que les plus grandes n'y mettent du poids." Novell le parraine déjà. Et Microsoft prend en charge le projet dérivé Moonlight à la fois en fournissant des codecs et des suites de tests.
sblom
23
Miguel de Icaza a annoncé sur son blog le 17 février 2010 qu'ils commencent à travailler sur mono pour Android qui s'appellera MonoDroid.
Ce sera similaire à MonoTouch sur l'iphone mais pour Android à la place.
Il fournira une liaison à l'interface utilisateur Android, de sorte que les applications regarderont et se sentiront les applications Android natives en direct. Cela vous obligera à écrire une interface utilisateur spécifique à Android.
Vous pourrez cependant réutiliser vos bibliothèques de niveau inférieur existantes sans avoir besoin de recompiler.
La version bêta de Monodroid est désormais disponible pour les personnes qui se sont inscrites tôt au programme bêta.
Damian
oui, il est actuellement en version bêta privée, pour laquelle je me suis inscrit mais jusqu'à présent, j'ai manqué une invitation :(
trampster
9
Il existe Mono pour Android, le framework .NET porté pour Android. Et il y a MonoDroid, une pile de développement pour utiliser C # et les principales API .NET pour développer des applications basées sur Android. MonoDroid Preview 1 est sorti il y a quelques jours.
Étant donné qu'il s'agit de l'un des premiers liens sur Google lors de la recherche de support pour Android et .net, il convient de le publier ici.
Le projet mono travaille sur un SDK pour développer des applications Android en utilisant des langages CIL tels que C #. L'inconvénient est que ce sera un produit commercial. monodroid
MonoDroid est disponible pour un aperçu. Je pense que cela comblera l'écart. Cependant, MonoDroid pourrait être une option coûteuse pour le développement. Leurs autres outils de développement coûtent entre 199 $ et 4000 $ (l'outil de développement iPhone MonoTouch .. est proposé entre 399 $ et 3999 $). Si les gens développent des applications avec ces outils, ils ont besoin d'un modèle commercial très solide pour voir des rendements.
J'aime que les réponses. Cela montre que c'est possible, mais si vous regardez cette vidéo, cela montre également combien de problèmes sont encore à résoudre et combien de travail est derrière tout cela.
Lena Schimmel
4
Un port modifié de Mono est également tout à fait possible.
@akdom, avez-vous de l'expérience avec le portage de logiciels d'un OS de bureau / serveur vers un système embarqué? J'ai une certaine expérience en développement mobile (Java et Brew) et à mon humble avis, vous sous-estimez considérablement l'effort. Cela pourrait être possible, mais certainement pas dans les 3 prochaines années.
ddimitrov
@ddmitrov: La question était de savoir si la plate-forme Android avec EVER prend en charge .NET, et non si elle le sera dans les trois prochaines années. Je posais simplement que puisque Mono est une implémentation open source de .NET, il serait plus facile de construire une version Android de Mono que de partir de zéro.
akdom
2
Cela n'a finalement pas pris trois ans. Et les gens de Xamarin prévoient de recommencer dans moins de six mois.
Justin
4
Le framework compact .NET a été porté sur Symbian OS ( http://www.redfivelabs.com/ ). Si .NET en tant que plate-forme «fermée» peut être porté sur cette plate-forme, je ne vois aucune raison pour laquelle cela ne peut pas être fait pour Android.
Avez-vous utilisé le cadre compact? Je fais tous les jours à mon travail et un port mono en forme de MonoDroid sera bien meilleur.
trampster
4
.NET et Mono sont d'excellents environnements, avec de nombreux outils et une excellente base de compétences de personnes qui savent les utiliser.
Je pense que Mono a la possibilité d'être l'environnement de développement multiplateforme mobile de choix, car ils sont la seule alternative à Objective-C sur iPhone et devraient être portables sur Android, et .NET est déjà sur Windows Mobile.
J'espère vraiment voir une implémentation solide de Mono sur Android, avec des wrappers pour l'API Android comme avec Monotouch, et je serais prêt à payer pour cela car je ne suis pas en mesure de le faire moi-même.
Vous êtes plus susceptible de voir une implémentation Android de Silverlight. Le représentant de Microsoft a confirmé que c'était possible, contre l'iPhone où le représentant a dit que c'était problématique.
Mais une version du framework .Net est possible. J'ai juste besoin que quelqu'un s'en soucie autant :)
Mais vraiment, passer de C # à Java n'est pas si grave et compte tenu des différences drastiques entre les deux plates-formes (PC vs G1), il semble peu probable que vous puissiez vous débrouiller avec une seule base de code pour une application qui vous vouliez courir sur les deux.
À mon avis, il serait techniquement possible de convertir le Bytecode CLI en Dalvik, et d'écrire des classes wrapper pour certaines fonctionnalités de base telles que les collections, l'accès aux fichiers, etc., même ce serait un travail difficile.
Mais une application de bureau .NET exécutée sur Android se sentirait étrangère, car elle aurait une interface graphique similaire à Windows qui n'est pas très utilisable sur un appareil tactile. Si, d'autre part, vous deviez coder une interface graphique de type Android dans .NET, vous auriez besoin d'un autre ensemble de wrappers (notez que le wrapping est juste l'inverse des wrappers mentionnés ci-dessus).
Je ne sais pas si une application mobile .NET se sentirait native sur Android, mais je suppose que non.
Peut-être que vous êtes intéressé par une autre approche: vous pouvez écrire votre application en langage Java. Vous pouvez ensuite le compiler en .NET via Microsoft J # (je sais qu'il est interrompu mais vous pouvez toujours le télécharger et l'utiliser) et utiliser le même code Java sur Android. Encore une fois, c'est pour les classes de base aka la logique métier et encore une fois, vous devrez écrire des interfaces graphiques de remorquage. Peut-être que vous pouvez également utiliser J2ME, ce que vous ne pourrez pas faire si vous utilisez .NET.
non, vous ne supposeriez pas que les formulaires de gain seraient portés, ce qui est une très mauvaise idée, MonoDroid aura des liaisons avec les widgets de l'interface utilisateur Android, de sorte qu'il ressemblera exactement à une application Android native, l'utilisateur n'a même pas besoin de le savoir fonctionne sur MonoDroid
trampster
Un Bytecode CLI pour Dalvik est également une mauvaise idée, le runtime mono et la VM fonctionnent déjà sur ARM, ce qui le fera fonctionner sur Android ne sera pas un problème. Et comme mono est compilé JIT et Dalvik est interprété. L'exécution sur le mono runtime sera beaucoup plus rapide.
trampster
2
.NET pour Android me semble une réelle possibilité. Il y a des nouvelles que Microsoft publiera la bonne Silverlight pour Android - Ne sous-estimez jamais les avantages pour Microsoft de mettre le démarrage dans Apple. Un smartphone plus rapide, plus riche en fonctionnalités, un cycle de vie de développement plus rapide, un matériel impressionnant, Flash et Silverlight en tant qu'installable standard.
Microsoft a tout intérêt à améliorer Android, et en même temps, les applications seront développées pour Silverlight sur Android fonctionnera également sur Windows Phone 7 OS avec multi-touch, GPS, etc., etc.
Réponses:
Mise à jour : depuis que j'ai écrit cette réponse il y a deux ans, nous avons produit Mono pour fonctionner sur Android. Le travail comprenait quelques étapes: porter Mono sur Android, l'intégrer à Visual Studio, créer des plugins pour MonoDevelop sur Mac et Windows et exposer les API Java Android aux langages .NET. Ceci est maintenant disponible sur http://monodroid.net
Mono sur Android est basé sur le runtime Mono 2.10 et utilise par défaut le profil 4.0 avec le compilateur C # 4.0 et utilise le nouveau moteur de collecte de déchets SGen de Mono, ainsi que notre nouveau système de collecte de déchets distribué qui exécute le GC sur Java et Mono.
Les liens ci-dessous reflètent Mono sur Android depuis janvier 2009, je les ai conservés pour le contexte historique
Mono fonctionne désormais sur Android grâce au travail de Koushik Dutta et Marc Crichton.
Vous pouvez voir une vidéo de celui-ci en cours d'exécution ici: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
Et vous pouvez obtenir les instructions pour construire Mono vous-même ici: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Vous pouvez obtenir une référence comparant le JIT de Mono à l'interprète de Dalvik ici: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
Et bien sûr, vous pouvez obtenir une image préconfigurée avec Mono ici (allez au bas de l'article pour plus de détails sur son utilisation): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
la source
Oui, ce sera possible et ce ne sera pas si difficile. Tout ce qui est nécessaire à ce stade pour commencer, c'est une sorte de convertisseur qui transformera MSIL en bytecode Dalvik . Étant donné que les deux formats sont open source et bien documentés, il n'y aura aucun problème avec lui.
Ainsi, l'écriture d'applications Android en C # ou VB.NET sera possible, la question est de savoir combien de bibliothèques standard du framework .NET seront prises en charge. Mais c'est un autre problème.
En fait, ce qu'ils ont déjà conçu est très compatible avec Java et .NET
Ils ne peuvent pas tout faire en même temps, mais si vous regardez dans le SDK Android, il existe un outil appelé dx . Cet outil convertit le bytecode Java en bytecode Dalvik, donc en d'autres termes, vous pouvez exécuter des programmes écrits en Java sur Android sans effort aujourd'hui. Maintenant, le même outil est nécessaire pour .NET.
Compte tenu de la similitude de .NET et Java, c'est vraiment une question de temps.
Pas besoin de porter Mono. Android a déjà une VM et une API de base. Tout ce dont vous avez besoin est un convertisseur CIL-> Dalvik et un minuscule wrapper .NET pour l'API Android (et peut-être une implémentation de base de certaines classes .NET standard). C'est tout.
Mise à jour: .NET fonctionne déjà sur Android - vous aurez besoin d'un produit appelé Monodroid ( http://monodroid.net ) comme indiqué ci-dessus.
la source
Miguel de Icaza a annoncé sur son blog le 17 février 2010 qu'ils commencent à travailler sur mono pour Android qui s'appellera MonoDroid.
Ce sera similaire à MonoTouch sur l'iphone mais pour Android à la place.
Il fournira une liaison à l'interface utilisateur Android, de sorte que les applications regarderont et se sentiront les applications Android natives en direct. Cela vous obligera à écrire une interface utilisateur spécifique à Android.
Vous pourrez cependant réutiliser vos bibliothèques de niveau inférieur existantes sans avoir besoin de recompiler.
la source
Il existe Mono pour Android, le framework .NET porté pour Android. Et il y a MonoDroid, une pile de développement pour utiliser C # et les principales API .NET pour développer des applications basées sur Android. MonoDroid Preview 1 est sorti il y a quelques jours.
la source
Étant donné qu'il s'agit de l'un des premiers liens sur Google lors de la recherche de support pour Android et .net, il convient de le publier ici.
Le projet mono travaille sur un SDK pour développer des applications Android en utilisant des langages CIL tels que C #. L'inconvénient est que ce sera un produit commercial. monodroid
la source
MonoDroid est disponible pour un aperçu. Je pense que cela comblera l'écart. Cependant, MonoDroid pourrait être une option coûteuse pour le développement. Leurs autres outils de développement coûtent entre 199 $ et 4000 $ (l'outil de développement iPhone MonoTouch .. est proposé entre 399 $ et 3999 $). Si les gens développent des applications avec ces outils, ils ont besoin d'un modèle commercial très solide pour voir des rendements.
la source
Check this out xmlvm Je pense que c'est possible. Peut-être peut également consulter cette vidéo
la source
Un port modifié de Mono est également tout à fait possible.
la source
Le framework compact .NET a été porté sur Symbian OS ( http://www.redfivelabs.com/ ). Si .NET en tant que plate-forme «fermée» peut être porté sur cette plate-forme, je ne vois aucune raison pour laquelle cela ne peut pas être fait pour Android.
la source
.NET et Mono sont d'excellents environnements, avec de nombreux outils et une excellente base de compétences de personnes qui savent les utiliser.
Je pense que Mono a la possibilité d'être l'environnement de développement multiplateforme mobile de choix, car ils sont la seule alternative à Objective-C sur iPhone et devraient être portables sur Android, et .NET est déjà sur Windows Mobile.
J'espère vraiment voir une implémentation solide de Mono sur Android, avec des wrappers pour l'API Android comme avec Monotouch, et je serais prêt à payer pour cela car je ne suis pas en mesure de le faire moi-même.
la source
Vous êtes plus susceptible de voir une implémentation Android de Silverlight. Le représentant de Microsoft a confirmé que c'était possible, contre l'iPhone où le représentant a dit que c'était problématique.
Mais une version du framework .Net est possible. J'ai juste besoin que quelqu'un s'en soucie autant :)
Mais vraiment, passer de C # à Java n'est pas si grave et compte tenu des différences drastiques entre les deux plates-formes (PC vs G1), il semble peu probable que vous puissiez vous débrouiller avec une seule base de code pour une application qui vous vouliez courir sur les deux.
la source
À mon avis, il serait techniquement possible de convertir le Bytecode CLI en Dalvik, et d'écrire des classes wrapper pour certaines fonctionnalités de base telles que les collections, l'accès aux fichiers, etc., même ce serait un travail difficile.
Mais une application de bureau .NET exécutée sur Android se sentirait étrangère, car elle aurait une interface graphique similaire à Windows qui n'est pas très utilisable sur un appareil tactile. Si, d'autre part, vous deviez coder une interface graphique de type Android dans .NET, vous auriez besoin d'un autre ensemble de wrappers (notez que le wrapping est juste l'inverse des wrappers mentionnés ci-dessus).
Je ne sais pas si une application mobile .NET se sentirait native sur Android, mais je suppose que non.
Peut-être que vous êtes intéressé par une autre approche: vous pouvez écrire votre application en langage Java. Vous pouvez ensuite le compiler en .NET via Microsoft J # (je sais qu'il est interrompu mais vous pouvez toujours le télécharger et l'utiliser) et utiliser le même code Java sur Android. Encore une fois, c'est pour les classes de base aka la logique métier et encore une fois, vous devrez écrire des interfaces graphiques de remorquage. Peut-être que vous pouvez également utiliser J2ME, ce que vous ne pourrez pas faire si vous utilisez .NET.
la source
.NET pour Android me semble une réelle possibilité. Il y a des nouvelles que Microsoft publiera la bonne Silverlight pour Android - Ne sous-estimez jamais les avantages pour Microsoft de mettre le démarrage dans Apple. Un smartphone plus rapide, plus riche en fonctionnalités, un cycle de vie de développement plus rapide, un matériel impressionnant, Flash et Silverlight en tant qu'installable standard.
Microsoft a tout intérêt à améliorer Android, et en même temps, les applications seront développées pour Silverlight sur Android fonctionnera également sur Windows Phone 7 OS avec multi-touch, GPS, etc., etc.
la source