co ważniejsze, czy Microsoft kiedykolwiek przeniesie platformę .NET na platformę inną niż Windows?
Kerry
Odpowiedzi:
325
Aktualizacja : odkąd napisałem tę odpowiedź dwa lata temu, wyprodukowaliśmy Mono do uruchamiania na Androidzie. Praca obejmowała kilka kroków: przeniesienie Mono na Androida, integrację z Visual Studio, budowanie wtyczek dla MonoDevelop na Macu i Windows oraz udostępnienie interfejsów API Java Androida na języki .NET. Jest to teraz dostępne na stronie http://monodroid.net
Mono na Androidzie jest oparte na środowisku wykonawczym Mono 2.10 i domyślnie ma profil 4.0 z kompilatorem C # 4.0 i korzysta z nowego silnika śmieciarza SGen Mono, a także naszego nowego rozproszonego systemu śmieciowego, który wykonuje GC w Javie i Mono.
Poniższe linki odzwierciedlają Mono na Androidzie w styczniu 2009 roku. Zachowałem je w kontekście historycznym
Mono działa teraz na Androidzie dzięki pracy Koushika Dutty i Marca Crichtona.
Cóż, powiedziałem, nie stwardnienie rozsiane ani Google, ale prawdopodobnie Miguel i oto jesteś (wiem, że to nie byłeś ty, ale jakoś blisko) Świetne linki Miguel. Czy myślisz, że Google kiedykolwiek by to obsługiwał? Mam na myśli, że biorą port pod maską? :) Gdybym mógł, głosowałbym własną odpowiedź :)
OscarRyz
6
Uhm, to „tylko” działa w debianie działającym na tym samym sprzęcie. Moim zdaniem nie do końca przeniesiony do „Androida”, ale wydaje się, że nie jest to duży problem z całkowitym przeniesieniem go.
sandos
1
Zastanawiam się, czy była jakaś rozmowa z Google, aby ułatwić instalację? Być może umieścić go jako bezpłatne pobieranie z usługi Market? Zezwolić na wprowadzanie aplikacji .Net na rynek?
csauve
1
Szkoda, że nie działa z Visual Studio Express ...
Rockcoder
1
Niesamowite. Cieszę się, że widzę zaktualizowaną odpowiedź. +1 Miguel
Steven Evers
78
Tak, będzie to możliwe i nie będzie takie trudne. W tym momencie wszystko, czego potrzeba, to jakiś konwerter, który zmieni MSIL w kod bajtowy Dalvik . Ponieważ oba formaty są otwarte i dobrze udokumentowane, nie będzie z tym żadnego problemu.
Tak więc pisanie aplikacji na Androida w C # lub VB.NET będzie możliwe, pytanie dotyczy tego, ile standardowych bibliotek .NET Framework będzie obsługiwanych. Ale to kolejny problem.
Oscar Reyes napisał:
Jestem prawie pewien, że jeśli Google przejmie JAKIEKOLWIEK zainteresowanie domeną .net, zaprojektowaliby coś, gdy Android był na pierwszych etapach, a nie teraz na etapie produkcji. Nie mam na myśli, że to niemożliwe, mówię, że nie są zainteresowani. Może w mmm hhhh 10 lat.
W rzeczywistości to, co już zaprojektowali, jest bardzo kompatybilne z Javą i .NET
Nie mogą zrobić wszystkiego naraz, ale jeśli spojrzysz na zestaw SDK systemu Android, istnieje narzędzie o nazwie dx . To narzędzie konwertuje kod bajtowy Java na kod bajtowy Dalvik, więc innymi słowy, możesz dziś uruchamiać programy napisane w Javie na Androida. Teraz to samo narzędzie jest potrzebne do .NET.
Biorąc pod uwagę, jak podobne są .NET i Java, to naprawdę kwestia czasu.
ddimitrov napisał:
Tłumaczenie .Net-> Java-> Dalvik można wykonać nawet teraz ( http://dev.mainsoft.com/ ), ale myślę, że nie doceniasz braku bibliotek .Net. Oczywiście ktoś może przenieść Mono, ale z pewnością nie jest to trywialny wysiłek.
Nie trzeba przenosić Mono. Android ma już maszynę wirtualną i podstawowe API. Wszystko, czego potrzeba, to konwerter CIL-> Dalvik i małe opakowanie .NET dla interfejsu API Androida (i może podstawowa implementacja niektórych standardowych klas .NET). Otóż to.
Aktualizacja: .NET działa już na Androidzie - potrzebujesz produktu o nazwie Monodroid ( http://monodroid.net ), jak wspomniano powyżej.
Tak, nigdy nie wiemy ... może, może ... Cóż, niech to będzie 4 lata zamiast 10 ...: P
OscarRyz
16
Nie zgadzam się Wszystko, co mówisz, jest technicznie możliwe, ale myślę, że nie doceniasz pracy wymaganej o rząd wielkości. W ciągu kilku godzin zawsze łatwo jest przygotować dowód poprawności koncepcji, taki jak krzyżowe słowo powitalne. Ale skonfigurowanie opakowań dla wszystkich klas to DUŻO pracy.
Lena Schimmel
4
@Brian, opublikowany przez ciebie film dotyczy iPhone'a, a nie Androida.
lubos hasko
14
Cóż, biorąc pod uwagę powinowactwo Google'a do języka Java, nie jest zaskakujące, że nie wybrali .NET z tym. Tak, używanie Mono może być wykonalne, ale jestem prawie pewien, że Google uniknie .NET z podobną gorliwością, jak Microsoft uniknie Linuxa.
Joey,
2
„małe firmy nie zamierzają się na to opierać, chyba że większe dadzą temu więcej”. Novell już to sponsoruje. Microsoft wspiera projekt pochodny Moonlight, dostarczając kodeki i zestawy testowe.
sblom
23
Miguel de Icaza ogłosił na swoim blogu 17 lutego 2010 r., Że rozpoczynają pracę nad mono dla Androida, który będzie nazywał się MonoDroid.
Będzie to podobne do MonoTouch na iPhonie, ale dla Androida.
Zapewni to powiązanie z interfejsem Android, dzięki czemu aplikacje będą wyglądały i działały na żywo natywne aplikacje na Androida. Będzie to wymagało napisania interfejsu użytkownika przeznaczonego dla systemu Android.
Będziesz jednak mógł ponownie wykorzystać istniejące biblioteki niższego poziomu bez konieczności ponownej kompilacji.
Wersja beta Monodroid jest teraz dostępna dla osób, które wcześniej zapisały się na wersję beta.
Damian
tak, obecnie jest w prywatnej wersji beta, na którą się
zapisałem,
9
Istnieje Mono dla Androida, platforma .NET przeniesiona na Androida. Jest też MonoDroid, pakiet programistyczny do używania C # i podstawowych interfejsów API .NET do tworzenia aplikacji opartych na systemie Android. Wersja MonoDroid Preview 1 została wydana kilka dni temu.
Ponieważ jest to jeden z pierwszych linków w Google podczas wyszukiwania wsparcia dla Androida i .net, wystarczy opublikować to tutaj.
Projekt mono pracuje nad pakietem SDK do opracowywania aplikacji na Androida przy użyciu języków CIL, takich jak C #. Minusem jest to, że będzie to produkt komercyjny. monodroid
MonoDroid jest niedostępny do podglądu. Myślę, że to wypełni lukę. Jednak MonoDroid może być kosztowną opcją rozwoju. Ich inne narzędzia programistyczne kosztują od 199 USD do 4000 USD (narzędzie deweloperskie MonoTouch ... iPhone ... kosztuje od 399 USD do 3999 USD). Jeśli ludzie opracowują aplikacje za pomocą tych narzędzi, potrzebują bardzo silnego modelu biznesowego, aby uzyskać zwroty.
Lubię te odpowiedzi. Pokazuje, że jest to możliwe, ale jeśli obejrzysz ten film, pokaże także, ile problemów można jeszcze rozwiązać i ile pracy stoi za tym wszystkim.
Lena Schimmel
4
Zmodyfikowany port Mono jest również całkowicie możliwy.
@akdom, czy masz doświadczenie w przenoszeniu oprogramowania z komputera stacjonarnego / serwera na system wbudowany? Mam trochę doświadczenia w tworzeniu aplikacji mobilnych (Java i Brew) i IMHO, nie doceniasz tego wysiłku. Może to być możliwe, ale na pewno nie w ciągu najbliższych 3 lat.
ddimitrov
@ddmitrov: Pytanie brzmiało, czy platforma Android z EVER obsługuje platformę .NET, a nie czy w ciągu najbliższych trzech lat. Po prostu zakładałem, że skoro Mono jest implementacją .NET typu open source, łatwiej byłoby zbudować wersję Mono na Androida niż zacząć od zera.
akdom
2
Ostatecznie nie zajęło to trzech lat. A ludzie z Xamarin planują zrobić to ponownie za mniej niż sześć miesięcy.
Justin
4
.NET Compact Framework został przeniesiony do Symbian OS ( http://www.redfivelabs.com/ ). Jeśli .NET jako „zamknięta” platforma może być przeniesiona na tę platformę, nie widzę żadnego powodu, dla którego nie można tego zrobić dla Androida.
Czy używałeś kompaktowego frameworka? Robię to każdego dnia w pracy, a port mono w postaci MonoDroid będzie o wiele lepszy.
trampster
4
.NET i Mono to świetne środowiska z wieloma narzędziami i doskonałą bazą umiejętności osób, które potrafią z nich korzystać.
Myślę, że Mono ma możliwość stać się wybranym mobilnym międzyplatformowym środowiskiem programistycznym, ponieważ jest to jedyna alternatywa dla Objective-C na iPhonie i powinna być przenośna na Androida, a .NET jest już na Windows Mobile.
Naprawdę mam nadzieję, że zobaczę solidną implementację Mono na Androidzie, z opakowaniami dla interfejsu API Androida jak w Monotouch, i byłbym gotowy za to zapłacić, ponieważ nie jestem w stanie zrobić tego sam.
Bardziej prawdopodobne jest, że zobaczysz implementację Silverlight na Androida. Przedstawiciel firmy Microsoft potwierdził, że jest to możliwe, w przeciwieństwie do iPhone'a, w którym przedstawiciel stwierdził, że jest to problematyczne.
Ale możliwa jest wersja .NET Framework. Po prostu potrzebuję kogoś, kto się tym tak przejmuje :)
Ale tak naprawdę przejście z C # na Javę nie jest wielkim problemem, a biorąc pod uwagę drastyczne różnice między dwiema platformami (PC vs. G1), wydaje się mało prawdopodobne, abyś był w stanie poradzić sobie z jedną bazą kodu dla dowolnej aplikacji, która chciałeś uruchomić oba.
Moim zdaniem technicznie możliwe byłoby przekonwertowanie kodu bajtowego CLI na Dalvik i napisanie klas opakowań dla niektórych podstawowych funkcji, takich jak kolekcje, dostęp do plików itp., Nawet to byłoby ciężką pracą.
Ale aplikacja komputerowa .NET uruchomiona na Androidzie wydawałaby się obca, ponieważ miałaby klasyczny GUI podobny do Windows, który nie jest zbyt użyteczny na urządzeniu dotykowym. Z drugiej strony, jeśli miałbyś kodować GUI podobny do Androida w .NET, potrzebowałbyś innego zestawu opakowań (zauważ, że zawijanie jest odwrotnie niż w przypadku wspomnianych wyżej opakowań).
Nie jestem pewien, czy aplikacja mobilna .NET byłaby natywna na Androidzie, ale sądzę, że nie.
Może interesuje Cię inne podejście: możesz napisać swoją aplikację w języku Java. Następnie możesz go skompilować do platformy .NET za pomocą Microsoft J # (wiem, że został wycofany, ale nadal możesz go pobrać i używać) i używać tego samego kodu Java na Androidzie. Ponownie, dotyczy to podstawowych klas, czyli logiki biznesowej, i znowu musielibyście pisać ciągłe GUI. Może możesz także przetłumaczyć J2ME, czego nie będziesz w stanie zrobić, jeśli używasz platformy .NET.
nie, nie zakładasz, że wygrane zostaną przeniesione, co jest naprawdę złym pomysłem, MonoDroid będzie miał powiązania z widgetami interfejsu użytkownika Androida, więc będzie wyglądać dokładnie jak natywna aplikacja na Androida, użytkownik nie musi nawet tego wiedzieć działa na MonoDroid
trampster
Również kod bajtowy CLI dla Dalvik jest złym pomysłem, środowisko uruchomieniowe mono i VM już działają na ARM, więc uruchomienie go na Androidzie nie będzie problemem. A postrzeganie jako mono jest kompilowane JIT, a Dalvik jest interpretowany. Uruchamianie w trybie mono będzie znacznie szybsze.
trampster
2
.NET dla Androida wydaje mi się prawdziwą możliwością. Są wiadomości, że Microsoft wyda odpowiednie Silverlight dla Androida - Nigdy nie lekceważ korzyści dla Microsoft za wprowadzenie bootowania w Apple. Smartfon, który jest szybszy, bogatszy w funkcje, szybszy cykl rozwoju, imponujący sprzęt, Flash i Silverlight w standardzie do zainstalowania.
Microsoft jest bardzo zainteresowany ulepszeniem Androida, a jednocześnie aplikacje zostaną opracowane dla Silverlight na Androida będzie działał również na Windows Phone 7 OS z funkcją Multi-Touch, GPS itp.
Odpowiedzi:
Aktualizacja : odkąd napisałem tę odpowiedź dwa lata temu, wyprodukowaliśmy Mono do uruchamiania na Androidzie. Praca obejmowała kilka kroków: przeniesienie Mono na Androida, integrację z Visual Studio, budowanie wtyczek dla MonoDevelop na Macu i Windows oraz udostępnienie interfejsów API Java Androida na języki .NET. Jest to teraz dostępne na stronie http://monodroid.net
Mono na Androidzie jest oparte na środowisku wykonawczym Mono 2.10 i domyślnie ma profil 4.0 z kompilatorem C # 4.0 i korzysta z nowego silnika śmieciarza SGen Mono, a także naszego nowego rozproszonego systemu śmieciowego, który wykonuje GC w Javie i Mono.
Poniższe linki odzwierciedlają Mono na Androidzie w styczniu 2009 roku. Zachowałem je w kontekście historycznym
Mono działa teraz na Androidzie dzięki pracy Koushika Dutty i Marca Crichtona.
Możesz zobaczyć wideo z tego uruchomionego tutaj: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
Instrukcje dotyczące samodzielnego budowania Mono można znaleźć tutaj: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Możesz porównać test porównawczy JIT Mono z tłumaczem Dalvika tutaj: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
I oczywiście możesz uzyskać wstępnie skonfigurowany obraz z Mono tutaj (przejdź do dolnej części postu, aby uzyskać szczegółowe informacje na temat korzystania z tego): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
źródło
Tak, będzie to możliwe i nie będzie takie trudne. W tym momencie wszystko, czego potrzeba, to jakiś konwerter, który zmieni MSIL w kod bajtowy Dalvik . Ponieważ oba formaty są otwarte i dobrze udokumentowane, nie będzie z tym żadnego problemu.
Tak więc pisanie aplikacji na Androida w C # lub VB.NET będzie możliwe, pytanie dotyczy tego, ile standardowych bibliotek .NET Framework będzie obsługiwanych. Ale to kolejny problem.
W rzeczywistości to, co już zaprojektowali, jest bardzo kompatybilne z Javą i .NET
Nie mogą zrobić wszystkiego naraz, ale jeśli spojrzysz na zestaw SDK systemu Android, istnieje narzędzie o nazwie dx . To narzędzie konwertuje kod bajtowy Java na kod bajtowy Dalvik, więc innymi słowy, możesz dziś uruchamiać programy napisane w Javie na Androida. Teraz to samo narzędzie jest potrzebne do .NET.
Biorąc pod uwagę, jak podobne są .NET i Java, to naprawdę kwestia czasu.
Nie trzeba przenosić Mono. Android ma już maszynę wirtualną i podstawowe API. Wszystko, czego potrzeba, to konwerter CIL-> Dalvik i małe opakowanie .NET dla interfejsu API Androida (i może podstawowa implementacja niektórych standardowych klas .NET). Otóż to.
Aktualizacja: .NET działa już na Androidzie - potrzebujesz produktu o nazwie Monodroid ( http://monodroid.net ), jak wspomniano powyżej.
źródło
Miguel de Icaza ogłosił na swoim blogu 17 lutego 2010 r., Że rozpoczynają pracę nad mono dla Androida, który będzie nazywał się MonoDroid.
Będzie to podobne do MonoTouch na iPhonie, ale dla Androida.
Zapewni to powiązanie z interfejsem Android, dzięki czemu aplikacje będą wyglądały i działały na żywo natywne aplikacje na Androida. Będzie to wymagało napisania interfejsu użytkownika przeznaczonego dla systemu Android.
Będziesz jednak mógł ponownie wykorzystać istniejące biblioteki niższego poziomu bez konieczności ponownej kompilacji.
źródło
Istnieje Mono dla Androida, platforma .NET przeniesiona na Androida. Jest też MonoDroid, pakiet programistyczny do używania C # i podstawowych interfejsów API .NET do tworzenia aplikacji opartych na systemie Android. Wersja MonoDroid Preview 1 została wydana kilka dni temu.
źródło
Ponieważ jest to jeden z pierwszych linków w Google podczas wyszukiwania wsparcia dla Androida i .net, wystarczy opublikować to tutaj.
Projekt mono pracuje nad pakietem SDK do opracowywania aplikacji na Androida przy użyciu języków CIL, takich jak C #. Minusem jest to, że będzie to produkt komercyjny. monodroid
źródło
MonoDroid jest niedostępny do podglądu. Myślę, że to wypełni lukę. Jednak MonoDroid może być kosztowną opcją rozwoju. Ich inne narzędzia programistyczne kosztują od 199 USD do 4000 USD (narzędzie deweloperskie MonoTouch ... iPhone ... kosztuje od 399 USD do 3999 USD). Jeśli ludzie opracowują aplikacje za pomocą tych narzędzi, potrzebują bardzo silnego modelu biznesowego, aby uzyskać zwroty.
źródło
Sprawdź to xmlvm Myślę, że jest to możliwe. Może być również można sprawdzić ten film
źródło
Zmodyfikowany port Mono jest również całkowicie możliwy.
źródło
.NET Compact Framework został przeniesiony do Symbian OS ( http://www.redfivelabs.com/ ). Jeśli .NET jako „zamknięta” platforma może być przeniesiona na tę platformę, nie widzę żadnego powodu, dla którego nie można tego zrobić dla Androida.
źródło
.NET i Mono to świetne środowiska z wieloma narzędziami i doskonałą bazą umiejętności osób, które potrafią z nich korzystać.
Myślę, że Mono ma możliwość stać się wybranym mobilnym międzyplatformowym środowiskiem programistycznym, ponieważ jest to jedyna alternatywa dla Objective-C na iPhonie i powinna być przenośna na Androida, a .NET jest już na Windows Mobile.
Naprawdę mam nadzieję, że zobaczę solidną implementację Mono na Androidzie, z opakowaniami dla interfejsu API Androida jak w Monotouch, i byłbym gotowy za to zapłacić, ponieważ nie jestem w stanie zrobić tego sam.
źródło
Bardziej prawdopodobne jest, że zobaczysz implementację Silverlight na Androida. Przedstawiciel firmy Microsoft potwierdził, że jest to możliwe, w przeciwieństwie do iPhone'a, w którym przedstawiciel stwierdził, że jest to problematyczne.
Ale możliwa jest wersja .NET Framework. Po prostu potrzebuję kogoś, kto się tym tak przejmuje :)
Ale tak naprawdę przejście z C # na Javę nie jest wielkim problemem, a biorąc pod uwagę drastyczne różnice między dwiema platformami (PC vs. G1), wydaje się mało prawdopodobne, abyś był w stanie poradzić sobie z jedną bazą kodu dla dowolnej aplikacji, która chciałeś uruchomić oba.
źródło
Moim zdaniem technicznie możliwe byłoby przekonwertowanie kodu bajtowego CLI na Dalvik i napisanie klas opakowań dla niektórych podstawowych funkcji, takich jak kolekcje, dostęp do plików itp., Nawet to byłoby ciężką pracą.
Ale aplikacja komputerowa .NET uruchomiona na Androidzie wydawałaby się obca, ponieważ miałaby klasyczny GUI podobny do Windows, który nie jest zbyt użyteczny na urządzeniu dotykowym. Z drugiej strony, jeśli miałbyś kodować GUI podobny do Androida w .NET, potrzebowałbyś innego zestawu opakowań (zauważ, że zawijanie jest odwrotnie niż w przypadku wspomnianych wyżej opakowań).
Nie jestem pewien, czy aplikacja mobilna .NET byłaby natywna na Androidzie, ale sądzę, że nie.
Może interesuje Cię inne podejście: możesz napisać swoją aplikację w języku Java. Następnie możesz go skompilować do platformy .NET za pomocą Microsoft J # (wiem, że został wycofany, ale nadal możesz go pobrać i używać) i używać tego samego kodu Java na Androidzie. Ponownie, dotyczy to podstawowych klas, czyli logiki biznesowej, i znowu musielibyście pisać ciągłe GUI. Może możesz także przetłumaczyć J2ME, czego nie będziesz w stanie zrobić, jeśli używasz platformy .NET.
źródło
.NET dla Androida wydaje mi się prawdziwą możliwością. Są wiadomości, że Microsoft wyda odpowiednie Silverlight dla Androida - Nigdy nie lekceważ korzyści dla Microsoft za wprowadzenie bootowania w Apple. Smartfon, który jest szybszy, bogatszy w funkcje, szybszy cykl rozwoju, imponujący sprzęt, Flash i Silverlight w standardzie do zainstalowania.
Microsoft jest bardzo zainteresowany ulepszeniem Androida, a jednocześnie aplikacje zostaną opracowane dla Silverlight na Androida będzie działał również na Windows Phone 7 OS z funkcją Multi-Touch, GPS itp.
źródło