Гораздо важнее, будет ли Microsoft когда-либо переносить .NET на платформу, отличную от Windows?
Керри
Ответы:
325
Обновление : так как я написал этот ответ два года назад, мы создали Mono для работы на Android. Работа включала несколько шагов: портирование Mono на Android, интеграция его с Visual Studio, создание плагинов для MonoDevelop на Mac и Windows и предоставление API Java Android для языков .NET. Теперь это доступно на http://monodroid.net
Mono на Android основан на среде исполнения Mono 2.10 и по умолчанию использует профиль 4.0 с компилятором C # 4.0 и использует новый механизм сборки мусора SGen Mono, а также нашу новую систему распределенного сбора мусора, которая выполняет GC для Java и Mono.
Ссылки ниже отражают Mono на Android по состоянию на январь 2009 года, я сохранил их для исторического контекста
Mono теперь работает на Android благодаря работе Koushik Dutta и Marc Crichton.
Ну, я сказал, не MS, ни Google, но, вероятно, Мигель, и вот вы здесь (ну, я знаю, что это был не вы, но как-то близко) Великие ссылки Мигеля. Как вы думаете, Google когда-нибудь поддержит это? Я имею в виду, что они берут порт под капотом? :) Если бы я мог, я бы понизил свой собственный ответ :)
OscarRyz
6
Хм, это «только» работает в Debian на том же оборудовании. На мой взгляд, не совсем перенесено на "android", но звучит так, как будто это не большая проблема, чтобы портировать его полностью.
Sandos
1
Мне интересно, были ли какие-либо разговоры с Google, чтобы сделать это проще в установке? Возможно, выложить его для бесплатной загрузки с Маркета? Разрешить выпуск на рынок приложений .Net?
csauve
1
Жаль, что это не работает с Visual Studio Express ...
Rockcoder
1
Потрясающие. Рад видеть обновленный ответ. +1 Мигель
Стивен Эверс
78
Да, это будет возможно, и это не будет так сложно. Все, что нужно для начала - это какой-то конвертер, который превратит MSIL в байт-код Dalvik . Поскольку оба формата имеют открытый исходный код и хорошо документированы, с ним проблем не возникнет.
Таким образом, написание приложений Android на C # или VB.NET будет возможным, вопрос в том, сколько стандартных библиотек .NET Framework будет поддерживаться. Но это другая проблема.
Оскар Рейес написал:
Я почти уверен, что если бы Google проявил ЛЮБОЙ интерес к .net, они бы разработали что-то, пока Android был на первых этапах, а не сейчас, когда они находятся в стадии разработки. Я не имею в виду, что это невозможно, я говорю, что они не заинтересованы. Может быть, в мммм 10 лет.
На самом деле то, что они уже разработали, очень совместимо с Java и .NET
Они не могут сделать все сразу, но если вы посмотрите на Android SDK, есть инструмент под названием dx . Этот инструмент преобразует байт-код Java в байт-код Dalvik, иными словами, вы можете без труда запускать программы, написанные на Java на Android. Теперь тот же инструмент необходим для .NET.
Учитывая, насколько похожи .NET и Java, это действительно вопрос времени.
ддимитров написал (а):
Перевод .Net-> Java-> Dalvik может быть выполнен даже сейчас ( http://dev.mainsoft.com/ ), но я думаю, что вы недооцениваете отсутствие библиотек .Net. Конечно, кто-то может портировать Mono, но это определенно нетривиальное усилие.
Не нужно портить моно. В Android уже есть виртуальная машина и немного базового API. Все, что нужно, это конвертер CIL-> Dalvik и крошечная оболочка .NET для Android API (и, возможно, некоторая базовая реализация некоторых стандартных классов .NET). Вот и все.
Обновление: .NET уже работает на Android - вам потребуется продукт под названием Monodroid ( http://monodroid.net ), как указано выше.
Да, мы никогда не узнаем ... возможно, возможно ... Ну, сделайте это 4 года вместо 10 ...: P
OscarRyz
16
Я не согласна Все, что вы говорите, технически возможно, но я думаю, что вы недооцениваете работу, необходимую на порядок. За несколько часов всегда легко собрать доказательство концепции, такое как кросс-компилированное приветственное слово. Но настроить упаковщики для всех классов - МНОГО работы.
Лена Шиммель
4
@ Брайан, вы разместили видео о iPhone, а не Android.
Любос Хаско
14
Что ж, учитывая сходство Google с Java, неудивительно, что они не пошли на .NET с этим. Да, использование Mono может быть осуществимо, но я почти уверен, что Google избегает использования .NET с таким же рвением, как Microsoft избегает использования Linux.
Джои
2
«малые компании не собираются ставить на это свое будущее, если только некоторые крупные не придут к этому никакого веса». Novell уже спонсирует это. И Microsoft поддерживает производный проект Moonlight, предоставляя кодеки и тестовые наборы.
Сб
23
Мигель де Иказа объявил в своем блоге 17 февраля 2010 года, что они начинают работу над моно для Android, которое будет называться MonoDroid.
Это будет похоже на MonoTouch на iphone, но для Android вместо этого.
Это обеспечит привязку к пользовательскому интерфейсу Android, поэтому приложения будут выглядеть и чувствовать себя как живые нативные приложения для Android. Это потребует от вас написания пользовательского интерфейса для Android.
Однако вы сможете повторно использовать существующие библиотеки нижнего уровня без необходимости перекомпиляции.
Бета-версия Monodroid теперь доступна людям, которые подписались на бета-версию программы раньше.
Дамиан
да, это в настоящее время закрытая бета-версия, на которую я подписался, но пока что пропустил приглашение :(
trampster
9
Существует Mono для Android, платформа .NET, портированная для Android. И есть MonoDroid, стек разработки для использования C # и основных API .NET для разработки приложений на базе Android. MonoDroid Preview 1 был выпущен пару дней назад.
Так как это одна из первых ссылок в Google при поиске поддержки Android и .net, уместно опубликовать это здесь.
Моно-проект работает над SDK для разработки приложений Android с использованием языков CIL, таких как C #. Недостатком является то, что это будет коммерческий продукт. monodroid
MonoDroid доступен для предварительного просмотра. Я думаю, что это ликвидирует разрыв. Тем не менее, MonoDroid может быть дорогостоящим вариантом для разработки. Их другие средства разработки стоят где-то от 199 до 4000 долларов (инструмент для разработки MonoTouch для iPhone ... стоит от 399 до 3999 долларов). Если люди разрабатывают приложения с помощью этих инструментов, им нужна очень сильная бизнес-модель, чтобы увидеть некоторые результаты.
Мне нравятся эти ответы. Это показывает, что это возможно, но если вы посмотрите это видео, оно также покажет, сколько проблем еще предстоит решить и сколько работы стоит за всем этим.
@akdom, у вас есть опыт портирования программного обеспечения с настольной / серверной ОС на встроенную? У меня есть некоторый опыт разработки мобильных приложений (Java и Brew) и ИМХО, вы сильно недооцениваете усилия. Это может быть возможно, но определенно не в ближайшие 3 года.
Ддимитров
@ddmitrov: Вопрос заключался в том, будет ли платформа Android с НИКОГДА поддерживать .NET, а не будет ли она в ближайшие три года. Я просто утверждал, что, поскольку Mono является реализацией .NET с открытым исходным кодом, было бы легче создать версию Mono для Android, чем начинать с нуля.
akdom
2
Это не заняло три года в конце. И люди в Xamarin планируют сделать это снова менее чем через шесть месяцев.
Джастин
4
Компактная платформа .NET была перенесена на ОС Symbian ( http://www.redfivelabs.com/ ). Если .NET как «закрытую» платформу можно перенести на эту платформу, я не вижу причин, почему это нельзя сделать для Android.
Вы использовали компактный каркас? Я каждый день делаю на работе и моно порт в виде MonoDroid будет кучи лучше.
трампстер
4
.NET и Mono - отличная среда, с множеством инструментов и отличной базой знаний людей, которые знают, как ими пользоваться.
Я думаю, что у Mono есть возможность стать мобильной кроссплатформенной средой разработки, поскольку они являются единственной альтернативой Objective-C на iPhone и должны быть совместимы с Android, а .NET уже на Windows Mobile.
Я действительно надеюсь увидеть надежную реализацию Mono на Android с обертками для Android API, как с Monotouch, и был бы готов заплатить за это, так как я не в состоянии сделать это сам.
Скорее всего, вы увидите реализацию Silverlight для Android. Представитель Microsoft подтвердил, что это возможно, по сравнению с iPhone, где представитель сказал, что это проблематично.
Но возможна версия .Net Framework. Просто нужен кто-то, чтобы заботиться об этом так сильно :)
Но на самом деле, переход с C # на Java не так уж и сложен, и, учитывая резкие различия между двумя платформами (ПК и G1), кажется маловероятным, что вы сможете обойтись одной базой кода для любого приложения, которое ты хотел бежать на обоих.
По моему мнению, технически можно было бы преобразовать байт-код CLI в Dalvik и написать классы-обертки для некоторых основных функций, таких как коллекции, доступ к файлам и т. Д., Даже если это будет тяжелая работа.
Но настольное приложение .NET, работающее на Android, может показаться чуждым, поскольку оно будет иметь классический Windows-подобный графический интерфейс, который не очень удобен для сенсорных устройств. Если, с другой стороны, вам нужно было бы кодировать похожий на Android графический интерфейс в .NET, вам понадобится другой набор оберток (обратите внимание, что оборачивание - это наоборот, в отличие от оберток, упомянутых выше).
Я не уверен, что мобильное приложение .NET будет чувствовать себя нативным на Android, но я думаю, что это не так.
Возможно, вы заинтересованы в другом подходе: вы можете написать свое приложение на языке Java. Затем вы можете скомпилировать его в .NET через Microsoft J # (я знаю, что он больше не поддерживается, но вы все еще можете его скачать и использовать) и использовать тот же код Java на Android. Опять же, это для базовых классов, иначе говоря, бизнес-логики, и снова вам придется писать буксирный графический интерфейс. Возможно, вы также можете использовать J2ME, что вы не сможете сделать, если будете использовать .NET.
нет, это не означает, что вы предполагаете, что выигрышные формы будут портированы, что является очень плохой идеей, MonoDroid будет иметь привязки к виджетам пользовательского интерфейса Android, поэтому он будет выглядеть точно так же, как и собственное приложение для Android, пользователю даже не нужно об этом знать работает на MonoDroid
трампстер
Также байт-код CLI для Dalvik - плохая идея, моно среда выполнения и виртуальная машина уже работают на ARM, поэтому запуск на Android не будет проблемой. И учитывая, что моно скомпилировано в JIT, а Dalvik интерпретируется. Запуск в режиме моно будет намного быстрее.
трампстер
2
.NET для Android кажется реальной возможностью для меня. Есть новости о том, что Microsoft выпустит полноценный Silverlight для Android. Никогда не стоит недооценивать преимущества Microsoft для загрузки загрузки в Apple. Смартфон, работающий быстрее, с большим количеством функций, ускорением жизненного цикла разработки, впечатляющим оборудованием, Flash & Silverlight в стандартной комплектации.
Microsoft заинтересована в улучшении Android, и в то же время будут разработаны приложения для Silverlight на Android, а также будут работать на ОС Windows Phone 7 с поддержкой Multi-Touch, GPS и т. Д. И т. Д.
Ответы:
Обновление : так как я написал этот ответ два года назад, мы создали Mono для работы на Android. Работа включала несколько шагов: портирование Mono на Android, интеграция его с Visual Studio, создание плагинов для MonoDevelop на Mac и Windows и предоставление API Java Android для языков .NET. Теперь это доступно на http://monodroid.net
Mono на Android основан на среде исполнения Mono 2.10 и по умолчанию использует профиль 4.0 с компилятором C # 4.0 и использует новый механизм сборки мусора SGen Mono, а также нашу новую систему распределенного сбора мусора, которая выполняет GC для Java и Mono.
Ссылки ниже отражают Mono на Android по состоянию на январь 2009 года, я сохранил их для исторического контекста
Mono теперь работает на Android благодаря работе Koushik Dutta и Marc Crichton.
Вы можете посмотреть его видео здесь: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html
И вы можете получить инструкции по сборке Mono самостоятельно здесь: http://www.koushikdutta.com/2009/01/building-mono-for-android.html
Вы можете получить тест, сравнивающий JIT Mono с интерпретатором Dalvik здесь: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html
И, конечно же, вы можете получить предварительно сконфигурированный образ с Mono здесь (перейдите к нижней части поста для получения подробной информации по его использованию): http://www.koushikdutta.com/2009/01/building-mono-for- android.html
источник
Да, это будет возможно, и это не будет так сложно. Все, что нужно для начала - это какой-то конвертер, который превратит MSIL в байт-код Dalvik . Поскольку оба формата имеют открытый исходный код и хорошо документированы, с ним проблем не возникнет.
Таким образом, написание приложений Android на C # или VB.NET будет возможным, вопрос в том, сколько стандартных библиотек .NET Framework будет поддерживаться. Но это другая проблема.
На самом деле то, что они уже разработали, очень совместимо с Java и .NET
Они не могут сделать все сразу, но если вы посмотрите на Android SDK, есть инструмент под названием dx . Этот инструмент преобразует байт-код Java в байт-код Dalvik, иными словами, вы можете без труда запускать программы, написанные на Java на Android. Теперь тот же инструмент необходим для .NET.
Учитывая, насколько похожи .NET и Java, это действительно вопрос времени.
Не нужно портить моно. В Android уже есть виртуальная машина и немного базового API. Все, что нужно, это конвертер CIL-> Dalvik и крошечная оболочка .NET для Android API (и, возможно, некоторая базовая реализация некоторых стандартных классов .NET). Вот и все.
Обновление: .NET уже работает на Android - вам потребуется продукт под названием Monodroid ( http://monodroid.net ), как указано выше.
источник
Мигель де Иказа объявил в своем блоге 17 февраля 2010 года, что они начинают работу над моно для Android, которое будет называться MonoDroid.
Это будет похоже на MonoTouch на iphone, но для Android вместо этого.
Это обеспечит привязку к пользовательскому интерфейсу Android, поэтому приложения будут выглядеть и чувствовать себя как живые нативные приложения для Android. Это потребует от вас написания пользовательского интерфейса для Android.
Однако вы сможете повторно использовать существующие библиотеки нижнего уровня без необходимости перекомпиляции.
источник
Существует Mono для Android, платформа .NET, портированная для Android. И есть MonoDroid, стек разработки для использования C # и основных API .NET для разработки приложений на базе Android. MonoDroid Preview 1 был выпущен пару дней назад.
источник
Так как это одна из первых ссылок в Google при поиске поддержки Android и .net, уместно опубликовать это здесь.
Моно-проект работает над SDK для разработки приложений Android с использованием языков CIL, таких как C #. Недостатком является то, что это будет коммерческий продукт. monodroid
источник
MonoDroid доступен для предварительного просмотра. Я думаю, что это ликвидирует разрыв. Тем не менее, MonoDroid может быть дорогостоящим вариантом для разработки. Их другие средства разработки стоят где-то от 199 до 4000 долларов (инструмент для разработки MonoTouch для iPhone ... стоит от 399 до 3999 долларов). Если люди разрабатывают приложения с помощью этих инструментов, им нужна очень сильная бизнес-модель, чтобы увидеть некоторые результаты.
источник
Проверьте это xmlvm Я думаю, что это возможно. Может быть, можно также проверить это видео
источник
Модифицированный порт Mono также вполне возможен.
источник
Компактная платформа .NET была перенесена на ОС Symbian ( http://www.redfivelabs.com/ ). Если .NET как «закрытую» платформу можно перенести на эту платформу, я не вижу причин, почему это нельзя сделать для Android.
источник
.NET и Mono - отличная среда, с множеством инструментов и отличной базой знаний людей, которые знают, как ими пользоваться.
Я думаю, что у Mono есть возможность стать мобильной кроссплатформенной средой разработки, поскольку они являются единственной альтернативой Objective-C на iPhone и должны быть совместимы с Android, а .NET уже на Windows Mobile.
Я действительно надеюсь увидеть надежную реализацию Mono на Android с обертками для Android API, как с Monotouch, и был бы готов заплатить за это, так как я не в состоянии сделать это сам.
источник
Скорее всего, вы увидите реализацию Silverlight для Android. Представитель Microsoft подтвердил, что это возможно, по сравнению с iPhone, где представитель сказал, что это проблематично.
Но возможна версия .Net Framework. Просто нужен кто-то, чтобы заботиться об этом так сильно :)
Но на самом деле, переход с C # на Java не так уж и сложен, и, учитывая резкие различия между двумя платформами (ПК и G1), кажется маловероятным, что вы сможете обойтись одной базой кода для любого приложения, которое ты хотел бежать на обоих.
источник
По моему мнению, технически можно было бы преобразовать байт-код CLI в Dalvik и написать классы-обертки для некоторых основных функций, таких как коллекции, доступ к файлам и т. Д., Даже если это будет тяжелая работа.
Но настольное приложение .NET, работающее на Android, может показаться чуждым, поскольку оно будет иметь классический Windows-подобный графический интерфейс, который не очень удобен для сенсорных устройств. Если, с другой стороны, вам нужно было бы кодировать похожий на Android графический интерфейс в .NET, вам понадобится другой набор оберток (обратите внимание, что оборачивание - это наоборот, в отличие от оберток, упомянутых выше).
Я не уверен, что мобильное приложение .NET будет чувствовать себя нативным на Android, но я думаю, что это не так.
Возможно, вы заинтересованы в другом подходе: вы можете написать свое приложение на языке Java. Затем вы можете скомпилировать его в .NET через Microsoft J # (я знаю, что он больше не поддерживается, но вы все еще можете его скачать и использовать) и использовать тот же код Java на Android. Опять же, это для базовых классов, иначе говоря, бизнес-логики, и снова вам придется писать буксирный графический интерфейс. Возможно, вы также можете использовать J2ME, что вы не сможете сделать, если будете использовать .NET.
источник
.NET для Android кажется реальной возможностью для меня. Есть новости о том, что Microsoft выпустит полноценный Silverlight для Android. Никогда не стоит недооценивать преимущества Microsoft для загрузки загрузки в Apple. Смартфон, работающий быстрее, с большим количеством функций, ускорением жизненного цикла разработки, впечатляющим оборудованием, Flash & Silverlight в стандартной комплектации.
Microsoft заинтересована в улучшении Android, и в то же время будут разработаны приложения для Silverlight на Android, а также будут работать на ОС Windows Phone 7 с поддержкой Multi-Touch, GPS и т. Д. И т. Д.
источник