Sicherlich noch wichtiger: Wird Microsoft .NET jemals auf eine andere Plattform als Windows portieren?
Kerry
Antworten:
325
Update : Seit ich diese Antwort vor zwei Jahren geschrieben habe, haben wir Mono für Android entwickelt. Die Arbeit umfasste einige Schritte: Portieren von Mono auf Android, Integrieren in Visual Studio, Erstellen von Plugins für MonoDevelop auf Mac und Windows und Bereitstellen der Java Android-APIs für .NET-Sprachen. Dies ist jetzt unter http://monodroid.net verfügbar
Mono auf Android basiert auf der Laufzeit von Mono 2.10 und verwendet standardmäßig das 4.0-Profil mit dem C # 4.0-Compiler. Es verwendet die neue SGen-Garbage-Collection-Engine von Mono sowie unser neues verteiltes Garbage-Collection-System, das GC für Java und Mono ausführt.
Die folgenden Links spiegeln Mono auf Android ab Januar 2009 wider. Ich habe sie für den historischen Kontext aufbewahrt
Dank der Arbeit von Koushik Dutta und Marc Crichton funktioniert Mono jetzt auf Android.
Nun, ich sagte, nicht MS oder Google, sondern wahrscheinlich Miguel und hier bist du (nun, ich weiß, dass du es nicht warst, aber irgendwie nah dran) Tolle Links Miguel. Glauben Sie, dass Google dies jemals unterstützen würde? Ich meine, sie nehmen den Hafen unter die Haube? :) Wenn ich könnte, würde ich meine eigene Antwort
ablehnen
6
Ähm, das läuft "nur" in Debian auf derselben Hardware. Meiner Meinung nach nicht ganz auf "Android" portiert, aber es scheint kein großes Problem zu sein, es komplett zu portieren, wie es scheint.
Sandos
1
Ich frage mich, ob es Gespräche mit Google gegeben hat, um die Installation zu vereinfachen. Vielleicht als kostenlosen Download vom Markt anbieten? Zulassen, dass .Net-Apps auf den Markt gebracht werden?
Csauve
1
Schade, dass es mit Visual Studio Express nicht funktioniert ...
Rockcoder
1
Genial. Freut mich, eine aktualisierte Antwort zu sehen. +1 Miguel
Steven Evers
78
Ja, es wird möglich sein und es wird nicht so schwierig sein. Alles, was an dieser Stelle benötigt wird, ist eine Art Konverter, der MSIL in Dalvik-Bytecode umwandelt . Da beide Formate Open Source sind und gut dokumentiert sind, gibt es kein Problem damit.
Das Schreiben von Android-Anwendungen in C # oder VB.NET ist also möglich. Die Frage ist, wie viele .NET Framework-Standardbibliotheken unterstützt werden. Aber das ist ein anderes Problem.
Oscar Reyes schrieb:
Ich bin mir ziemlich sicher, wenn Google Hand irgendein Interesse an .net hat, hätten sie etwas entworfen, während Android in den ersten Phasen war, nicht jetzt, wenn sie sich in der Produktionsphase befinden. Ich meine nicht, dass es nicht möglich ist. Ich sage, sie sind nicht interessiert. Vielleicht in mmm hhhh 10 Jahre.
Tatsächlich ist das, was sie bereits entworfen haben, sehr kompatibel mit Java und .NET
Sie können nicht alles auf einmal tun, aber wenn Sie sich das Android SDK ansehen, gibt es ein Tool namens dx . Dieses Tool konvertiert Java-Bytecode in Dalvik-Bytecode. Mit anderen Worten, Sie können heute ohne Aufwand in Java geschriebene Programme auf Android ausführen. Jetzt wird das gleiche Tool für .NET benötigt.
Angesichts der Ähnlichkeit von .NET und Java ist es wirklich eine Frage der Zeit.
ddimitrov schrieb:
Die .Net-> Java-> Dalvik-Übersetzung kann bereits jetzt durchgeführt werden ( http://dev.mainsoft.com/ ), aber ich denke, Sie unterschätzen den Mangel an .Net-Bibliotheken. Natürlich kann jemand Mono portieren, aber es ist definitiv eine nicht triviale Anstrengung.
Mono muss nicht portiert werden. Android hat bereits VM und einige grundlegende API. Alles, was benötigt wird, ist CIL-> Dalvik-Konverter und winziger .NET-Wrapper für die Android-API (und möglicherweise eine grundlegende Implementierung einiger Standard-.NET-Klassen). Das ist es.
Update: .NET funktioniert bereits unter Android - Sie benötigen das Produkt Monodroid ( http://monodroid.net ) wie oben angegeben.
Ja, wir wissen es nie ... vielleicht, vielleicht ... Nun, machen Sie es 4 statt 10 Jahre ...: P
OscarRyz
16
Ich stimme nicht zu Alles, was Sie sagen, ist technisch möglich, aber ich denke, Sie unterschätzen den Arbeitsaufwand um eine Größenordnung. Es ist immer einfach, in wenigen Stunden einen Proof-of-Concept wie ein überkreuztes Hallo-Wort zusammenzustellen. Das Einrichten von Wrappern für alle Klassen ist jedoch eine Menge Arbeit.
Lena Schimmel
4
@ Brian, das von Ihnen gepostete Video handelt vom iPhone, nicht von Android.
Lubos Hasko
14
Angesichts der Java-Affinität von Google ist es nicht verwunderlich, dass sie sich nicht für .NET entschieden haben. Ja, die Verwendung von Mono ist möglicherweise machbar, aber ich bin mir fast sicher, dass Google die Verwendung von .NET mit ähnlichem Eifer vermeiden würde wie Microsoft die Verwendung von Linux.
Joey
2
"Kleine Unternehmen werden ihre Zukunft nicht darauf setzen, es sei denn, einige größere Unternehmen legen etwas Gewicht dahinter." Novell sponsert es bereits. Microsoft unterstützt das abgeleitete Projekt Moonlight sowohl mit Codecs als auch mit Testsuiten.
sblom
23
Miguel de Icaza hat am 17. Februar 2010 in seinem Blog angekündigt, dass sie mit der Arbeit an Mono für Android beginnen, das MonoDroid heißen wird.
Dies wird ähnlich wie MonoTouch auf dem iPhone sein, aber stattdessen für Android.
Es bietet eine Bindung an die Android-Benutzeroberfläche, sodass Apps native Android-Apps live aussehen und sich anfühlen. Dazu müssen Sie eine androidspezifische Benutzeroberfläche schreiben.
Sie können jedoch vorhandene Bibliotheken niedrigerer Ebenen wiederverwenden, ohne sie neu kompilieren zu müssen.
Die Monodroid-Beta ist jetzt für Personen verfügbar, die sich frühzeitig für das Beta-Programm angemeldet haben.
Damian
Ja, es ist derzeit in der privaten Beta, für die ich mich
angemeldet habe,
9
Es gibt Mono für Android, das für Android portierte .NET Framework. Und es gibt MonoDroid, einen Entwicklungsstapel für die Verwendung von C # und den .NET-Kern-APIs zur Entwicklung von Android-basierten Anwendungen. MonoDroid Preview 1 wurde vor ein paar Tagen veröffentlicht.
Da dies einer der ersten Links bei Google ist, wenn nach Android- und .net-Unterstützung gesucht wird, ist es nur angebracht, dies hier zu posten.
Das Mono-Projekt arbeitet an einem SDK, um Android-Anwendungen mit CIL-Sprachen wie C # zu entwickeln. Der Nachteil ist, dass es sich um ein kommerzielles Produkt handelt. Monodroid
MonoDroid ist für die Vorschau verfügbar. Ich denke, das wird die Lücke schließen. MonoDroid könnte jedoch eine kostspielige Option für die Entwicklung sein. Die anderen Entwicklungstools kosten zwischen 199 und 4000 US-Dollar (das MonoTouch .. iPhone-Entwicklertool ... kostet zwischen 399 und 3999 US-Dollar). Wenn Benutzer Apps mit diesen Tools entwickeln, benötigen sie ein sehr starkes Geschäftsmodell, um einige Renditen zu erzielen.
Ich mag diese Antworten. Es zeigt, dass es möglich ist, aber wenn Sie sich dieses Video ansehen, zeigt es auch, wie viele Probleme noch zu lösen sind und wie viel Arbeit dahinter steckt.
Lena Schimmel
4
Ein modifizierter Hafen von Mono ist ebenfalls durchaus möglich.
@akdom, haben Sie Erfahrung mit der Portierung von Software vom Desktop / Server-Betriebssystem nach Embedded? Ich habe einige Erfahrungen in der mobilen Entwicklung (Java und Brew) und IMHO, Sie unterschätzen den Aufwand stark. Es könnte möglich sein, aber definitiv nicht in den nächsten 3 Jahren.
ddimitrov
@ddmitrov: Die Frage war, ob die Android-Plattform mit EVER .NET unterstützt, nicht, ob dies innerhalb der nächsten drei Jahre der Fall sein wird. Ich habe lediglich davon ausgegangen, dass es einfacher ist, eine Android-Version von Mono zu erstellen, als von vorne zu beginnen, da Mono eine Open-Source-Implementierung von .NET ist.
Akdom
2
Am Ende dauerte es nicht drei Jahre. Und die Leute bei Xamarin planen, es in weniger als sechs Monaten wieder zu tun.
Justin
4
Das .NET Compact Framework wurde auf Symbian OS ( http://www.redfivelabs.com/ ) portiert . Wenn .NET als "geschlossene" Plattform auf diese Plattform portiert werden kann, kann ich keinen Grund erkennen, warum dies für Android nicht möglich ist.
Haben Sie das kompakte Framework verwendet? Ich mache jeden Tag bei meiner Arbeit und ein Mono-Port in Form von MonoDroid wird viel besser.
Trampster
4
.NET und Mono sind großartige Umgebungen mit vielen Tools und einer hervorragenden Kompetenzbasis von Menschen, die wissen, wie man sie verwendet.
Ich denke, Mono hat die Möglichkeit, die mobile plattformübergreifende Entwicklungsumgebung der Wahl zu sein, da sie die einzige Alternative zu Objective-C auf dem iPhone darstellen und auf Android portierbar sein sollten und .NET bereits auf Windows Mobile läuft.
Ich hoffe wirklich auf eine solide Implementierung von Mono auf Android mit Wrappern für die Android-API wie bei Monotouch und wäre bereit, dafür zu zahlen, da ich nicht in der Lage bin, dies selbst zu tun.
Es ist wahrscheinlicher, dass Sie eine Android-Implementierung von Silverlight sehen. Microsoft-Mitarbeiter haben bestätigt, dass dies möglich ist, im Vergleich zum iPhone, auf dem der Mitarbeiter angegeben hat, dass dies problematisch ist.
Eine Version des .Net-Frameworks ist jedoch möglich. Brauche nur jemanden, der sich so sehr darum kümmert :)
Aber wirklich, der Wechsel von C # zu Java ist keine große Sache, und angesichts der drastischen Unterschiede zwischen den beiden Plattformen (PC vs. G1) ist es unwahrscheinlich, dass Sie mit einer Codebasis für eine App auskommen, die dies tut du wolltest auf beiden laufen.
Meiner Meinung nach wäre es technisch möglich, den CLI-Bytecode in Dalvik zu konvertieren und Wrapper-Klassen für einige Kernfunktionen wie Sammlungen, Dateizugriff usw. zu schreiben, selbst wenn dies harte Arbeit wäre.
Aber eine .NET-Desktopanwendung, die auf Android ausgeführt wird, würde sich fremd anfühlen, da sie eine klassische Windows-ähnliche Benutzeroberfläche hätte, die auf einem Touch-Gerät nicht sehr benutzerfreundlich ist. Wenn Sie andererseits eine Android-ähnliche Benutzeroberfläche in .NET codieren würden, würden Sie einen anderen Satz von Wrappern benötigen (beachten Sie, dass das Umschließen im Gegensatz zu den oben genannten Wrappern genau umgekehrt ist).
Ich bin mir nicht sicher, ob sich eine mobile .NET-Anwendung auf Android nativ anfühlt, aber ich würde vermuten, dass dies nicht der Fall ist.
Vielleicht interessieren Sie sich für einen anderen Ansatz: Sie können Ihre Anwendung in der Java-Sprache schreiben. Sie können es dann über Microsoft J # in .NET kompilieren (ich weiß, dass es nicht mehr angeboten wird, aber Sie können es trotzdem herunterladen und verwenden) und denselben Java-Code auf Android verwenden. Wieder ist das für die Kernklassen, auch bekannt als Geschäftslogik, und wieder müssten Sie zwei GUIs schreiben. Möglicherweise können Sie auch J2ME testen, was Sie mit .NET nicht tun können.
Nein, Sie würden nicht davon ausgehen, dass Win-Formulare portiert werden. Dies ist eine wirklich schlechte Idee. MonoDroid verfügt über Bindungen zu den Widgets der Android-Benutzeroberfläche, sodass es genau wie eine native Android-App aussieht. Der Benutzer muss es nicht einmal wissen läuft auf MonoDroid
Trampster
Auch ein CLI-Bytecode für Dalvik ist eine schlechte Idee. Die Mono-Laufzeit und die VM funktionieren bereits auf ARM, sodass es kein Problem ist, sie auf Android auszuführen. Und als Mono wird JIT kompiliert und Dalvik interpretiert. Das Ausführen auf der Mono-Laufzeit ist viel schneller.
Trampster
2
.NET für Android scheint mir eine echte Möglichkeit zu sein. Es gibt Neuigkeiten, dass Microsoft Silverlight für Android veröffentlichen wird. Unterschätzen Sie niemals die Vorteile, die Microsoft für den Start von Apple bietet. Ein Smartphone, das schneller und funktionsreicher ist, einen schnelleren Entwicklungslebenszyklus, beeindruckende Hardware, Flash & Silverlight als Standardinstallation.
Microsoft hat ein begründetes Interesse an der Verbesserung von Android. Gleichzeitig werden Anwendungen für Silverlight unter Android entwickelt, die auch unter Windows Phone 7 mit Multitouch, GPS usw. usw. funktionieren.
Antworten:
Update : Seit ich diese Antwort vor zwei Jahren geschrieben habe, haben wir Mono für Android entwickelt. Die Arbeit umfasste einige Schritte: Portieren von Mono auf Android, Integrieren in Visual Studio, Erstellen von Plugins für MonoDevelop auf Mac und Windows und Bereitstellen der Java Android-APIs für .NET-Sprachen. Dies ist jetzt unter http://monodroid.net verfügbar
Mono auf Android basiert auf der Laufzeit von Mono 2.10 und verwendet standardmäßig das 4.0-Profil mit dem C # 4.0-Compiler. Es verwendet die neue SGen-Garbage-Collection-Engine von Mono sowie unser neues verteiltes Garbage-Collection-System, das GC für Java und Mono ausführt.
Die folgenden Links spiegeln Mono auf Android ab Januar 2009 wider. Ich habe sie für den historischen Kontext aufbewahrt
Dank der Arbeit von Koushik Dutta und Marc Crichton funktioniert Mono jetzt auf Android.
Sie können ein Video davon hier sehen: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
Die Anleitung zum Erstellen von Mono erhalten Sie hier: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Einen Benchmark zum Vergleich von Monos JIT mit Dalviks Interpreter finden Sie hier: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
Und natürlich können Sie hier ein vorkonfiguriertes Image mit Mono erhalten (Einzelheiten zur Verwendung finden Sie am Ende des Beitrags): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
quelle
Ja, es wird möglich sein und es wird nicht so schwierig sein. Alles, was an dieser Stelle benötigt wird, ist eine Art Konverter, der MSIL in Dalvik-Bytecode umwandelt . Da beide Formate Open Source sind und gut dokumentiert sind, gibt es kein Problem damit.
Das Schreiben von Android-Anwendungen in C # oder VB.NET ist also möglich. Die Frage ist, wie viele .NET Framework-Standardbibliotheken unterstützt werden. Aber das ist ein anderes Problem.
Tatsächlich ist das, was sie bereits entworfen haben, sehr kompatibel mit Java und .NET
Sie können nicht alles auf einmal tun, aber wenn Sie sich das Android SDK ansehen, gibt es ein Tool namens dx . Dieses Tool konvertiert Java-Bytecode in Dalvik-Bytecode. Mit anderen Worten, Sie können heute ohne Aufwand in Java geschriebene Programme auf Android ausführen. Jetzt wird das gleiche Tool für .NET benötigt.
Angesichts der Ähnlichkeit von .NET und Java ist es wirklich eine Frage der Zeit.
Mono muss nicht portiert werden. Android hat bereits VM und einige grundlegende API. Alles, was benötigt wird, ist CIL-> Dalvik-Konverter und winziger .NET-Wrapper für die Android-API (und möglicherweise eine grundlegende Implementierung einiger Standard-.NET-Klassen). Das ist es.
Update: .NET funktioniert bereits unter Android - Sie benötigen das Produkt Monodroid ( http://monodroid.net ) wie oben angegeben.
quelle
Miguel de Icaza hat am 17. Februar 2010 in seinem Blog angekündigt, dass sie mit der Arbeit an Mono für Android beginnen, das MonoDroid heißen wird.
Dies wird ähnlich wie MonoTouch auf dem iPhone sein, aber stattdessen für Android.
Es bietet eine Bindung an die Android-Benutzeroberfläche, sodass Apps native Android-Apps live aussehen und sich anfühlen. Dazu müssen Sie eine androidspezifische Benutzeroberfläche schreiben.
Sie können jedoch vorhandene Bibliotheken niedrigerer Ebenen wiederverwenden, ohne sie neu kompilieren zu müssen.
quelle
Es gibt Mono für Android, das für Android portierte .NET Framework. Und es gibt MonoDroid, einen Entwicklungsstapel für die Verwendung von C # und den .NET-Kern-APIs zur Entwicklung von Android-basierten Anwendungen. MonoDroid Preview 1 wurde vor ein paar Tagen veröffentlicht.
quelle
Da dies einer der ersten Links bei Google ist, wenn nach Android- und .net-Unterstützung gesucht wird, ist es nur angebracht, dies hier zu posten.
Das Mono-Projekt arbeitet an einem SDK, um Android-Anwendungen mit CIL-Sprachen wie C # zu entwickeln. Der Nachteil ist, dass es sich um ein kommerzielles Produkt handelt. Monodroid
quelle
MonoDroid ist für die Vorschau verfügbar. Ich denke, das wird die Lücke schließen. MonoDroid könnte jedoch eine kostspielige Option für die Entwicklung sein. Die anderen Entwicklungstools kosten zwischen 199 und 4000 US-Dollar (das MonoTouch .. iPhone-Entwicklertool ... kostet zwischen 399 und 3999 US-Dollar). Wenn Benutzer Apps mit diesen Tools entwickeln, benötigen sie ein sehr starkes Geschäftsmodell, um einige Renditen zu erzielen.
quelle
Check this out xmlvm Ich denke, das ist möglich. Möglicherweise kann auch dieses Video überprüft werden
quelle
Ein modifizierter Hafen von Mono ist ebenfalls durchaus möglich.
quelle
Das .NET Compact Framework wurde auf Symbian OS ( http://www.redfivelabs.com/ ) portiert . Wenn .NET als "geschlossene" Plattform auf diese Plattform portiert werden kann, kann ich keinen Grund erkennen, warum dies für Android nicht möglich ist.
quelle
.NET und Mono sind großartige Umgebungen mit vielen Tools und einer hervorragenden Kompetenzbasis von Menschen, die wissen, wie man sie verwendet.
Ich denke, Mono hat die Möglichkeit, die mobile plattformübergreifende Entwicklungsumgebung der Wahl zu sein, da sie die einzige Alternative zu Objective-C auf dem iPhone darstellen und auf Android portierbar sein sollten und .NET bereits auf Windows Mobile läuft.
Ich hoffe wirklich auf eine solide Implementierung von Mono auf Android mit Wrappern für die Android-API wie bei Monotouch und wäre bereit, dafür zu zahlen, da ich nicht in der Lage bin, dies selbst zu tun.
quelle
Es ist wahrscheinlicher, dass Sie eine Android-Implementierung von Silverlight sehen. Microsoft-Mitarbeiter haben bestätigt, dass dies möglich ist, im Vergleich zum iPhone, auf dem der Mitarbeiter angegeben hat, dass dies problematisch ist.
Eine Version des .Net-Frameworks ist jedoch möglich. Brauche nur jemanden, der sich so sehr darum kümmert :)
Aber wirklich, der Wechsel von C # zu Java ist keine große Sache, und angesichts der drastischen Unterschiede zwischen den beiden Plattformen (PC vs. G1) ist es unwahrscheinlich, dass Sie mit einer Codebasis für eine App auskommen, die dies tut du wolltest auf beiden laufen.
quelle
Meiner Meinung nach wäre es technisch möglich, den CLI-Bytecode in Dalvik zu konvertieren und Wrapper-Klassen für einige Kernfunktionen wie Sammlungen, Dateizugriff usw. zu schreiben, selbst wenn dies harte Arbeit wäre.
Aber eine .NET-Desktopanwendung, die auf Android ausgeführt wird, würde sich fremd anfühlen, da sie eine klassische Windows-ähnliche Benutzeroberfläche hätte, die auf einem Touch-Gerät nicht sehr benutzerfreundlich ist. Wenn Sie andererseits eine Android-ähnliche Benutzeroberfläche in .NET codieren würden, würden Sie einen anderen Satz von Wrappern benötigen (beachten Sie, dass das Umschließen im Gegensatz zu den oben genannten Wrappern genau umgekehrt ist).
Ich bin mir nicht sicher, ob sich eine mobile .NET-Anwendung auf Android nativ anfühlt, aber ich würde vermuten, dass dies nicht der Fall ist.
Vielleicht interessieren Sie sich für einen anderen Ansatz: Sie können Ihre Anwendung in der Java-Sprache schreiben. Sie können es dann über Microsoft J # in .NET kompilieren (ich weiß, dass es nicht mehr angeboten wird, aber Sie können es trotzdem herunterladen und verwenden) und denselben Java-Code auf Android verwenden. Wieder ist das für die Kernklassen, auch bekannt als Geschäftslogik, und wieder müssten Sie zwei GUIs schreiben. Möglicherweise können Sie auch J2ME testen, was Sie mit .NET nicht tun können.
quelle
.NET für Android scheint mir eine echte Möglichkeit zu sein. Es gibt Neuigkeiten, dass Microsoft Silverlight für Android veröffentlichen wird. Unterschätzen Sie niemals die Vorteile, die Microsoft für den Start von Apple bietet. Ein Smartphone, das schneller und funktionsreicher ist, einen schnelleren Entwicklungslebenszyklus, beeindruckende Hardware, Flash & Silverlight als Standardinstallation.
Microsoft hat ein begründetes Interesse an der Verbesserung von Android. Gleichzeitig werden Anwendungen für Silverlight unter Android entwickelt, die auch unter Windows Phone 7 mit Multitouch, GPS usw. usw. funktionieren.
quelle