Зачем использовать Mono?

Каковы основные преимущества использования Mono по сравнению с Java (или любым другим «бесплатным» или дружественным к Linux языком / средой выполнения)?

Mono всегда будет отставать от последних разработок в .NET framework, зачем вам использовать Mono вместо другого традиционного языка / фреймворка с открытым исходным кодом (Java)?

РЕДАКТИРОВАТЬ: Как и кто-то, упомянутый ниже, я предполагаю, что основной вопрос заключается в том, почему вы хотите использовать .NET на платформе Linux?


person Andy White    schedule 22.02.2009    source источник
comment
Потому что в Mono есть C #, а C # - это не Java.   -  person Rayne    schedule 22.02.2009
comment
Просто любопытно, этот вопрос уже получил 2 отрицательных голоса, почему?   -  person fmsf    schedule 22.02.2009
comment
субъективный и аргументированный? ;)   -  person Erik Funkenbusch    schedule 22.02.2009
comment
Я не думаю, что это субъективно, мне просто нужны конкретные причины, по которым вы хотели бы бороться с .NET в Linux, а не использовать язык, предназначенный для работы в Linux. :)   -  person Andy White    schedule 22.02.2009
comment
Mono всегда будет отставать от последних разработок в .NET framework. Что вы имеете в виду? В некоторых случаях Mono уже быстрее, чем официальная среда выполнения MS.   -  person jrockway    schedule 22.02.2009
comment
Я больше говорю о языковых функциях, таких как LINQ, WCF и т. Д. Когда MS выпускает новые функции, всегда будет задержка, прежде чем Mono их поддержит.   -  person Andy White    schedule 22.02.2009
comment
Кроме того, существуют определенные функции (например, поддержка MSMQ в WCF), которые могут никогда (чисто) не поддерживаться в Mono.   -  person Andy White    schedule 22.02.2009
comment
Энди Уайт, извините, пожалуйста, за дерьмовые ответы, которые вы здесь получаете (возможно, и мой): 1) нужные люди еще не видели этот вопрос и 2) ваш вопрос мог бы быть в 20 раз яснее, чтобы люди ТОЧНО знали, что вы НЕ спрашивать. Удачи.   -  person Dan Rosenstark    schedule 22.02.2009
comment
Нет, все в порядке, это был довольно дерьмовый вопрос. (Думаю, это может быть аргумент). Я должен был быть более конкретным.   -  person Andy White    schedule 23.02.2009


Ответы (13)


Ответ довольно очевиден: потому что вы хотите использовать .Net в Linux.

Это, конечно, вызывает вопрос (который, я думаю, действительно то, что вы имеете в виду): зачем вам использовать .Net в Linux (поверх Java)?

Причин много:

  • Общий код между вашим сервером и, скажем, приложением WPF или Winforms;
  • Использование определенного языка .Net, например F #;
  • Языковые функции, которых нет в Java (замыкания, перегрузка операторов, частичные классы, универсальные шаблоны времени выполнения, индексаторы, делегаты, LINQ, типы var и т.д. и т.п.);
  • Ваши навыки или навыки вашей команды уже написаны на C #;
  • и Т. Д.
person cletus    schedule 22.02.2009
comment
Одно из моих любимых приложений для Linux Gnome-do (похожее на Mac Quicksilver) написано в моно. do.davebsd.com - person mmcdole; 22.02.2009
comment
Просто чтобы придираться к правильному использованию слова «напрашивайтесь»: Begthequestion.info. Джефф Этвуд все время делает одни и те же ошибки в подкастах ... - person Renaud Bompuis; 22.02.2009
comment
Да, я изучал вводную философию в университете, и тогда это тоже возникло. Использование, которое Джефф, я и другие приписывают этому термину, (нравится вам это или нет) стало общепринятым в современном языке. - person cletus; 22.02.2009
comment
Мне нравится, что вы просто задавали вопрос (правильное использование) в разговоре о собственном неправильном использовании фразы. Хорошо сыграно, cletus, хорошо сыграно. - person Kevin; 28.04.2009
comment
Ага! Клетус, должно быть, действительно просто сверхсекретный альт Джеффса! - person Bryan Legend; 26.03.2010
comment
Обратите внимание, что F # - это слегка измененная версия Objective Caml, которую можно использовать изначально в Linux, без всего этого дерьма .NET. - person slacker; 26.03.2010
comment
Работает ли F # в Linux? Я не видел для этого никакой возможности в MonoDevelop. - person NoBugs; 10.05.2012

Лично я больше доверяю платформе Linux как серверу, но хочу использовать C # как язык программирования.

person Avram    schedule 22.02.2009

В будущем вы захотите использовать C # на iPhone, Wii и, возможно, на Android. См. Эту ссылку. http://arstechnica.com/open-source/news/2009/01/open-source-mono-framework-brings-c-to-iphone-and-wii.ars

person Jared    schedule 22.02.2009

Некоторым нравится C # больше, чем Java. Также учтите, что C # является стандартным языком ISO, а Java - нет. Может быть, вы хотите запустить код ASP.NET на сервере Linux? На самом деле есть много причин.

person Erik Funkenbusch    schedule 22.02.2009

Думаю, дело в личных предпочтениях. Мне нравится C #, и я хочу разрабатывать приложения, которые можно запускать на моем ноутбуке Ubuntu или Vista. Поэтому использую моно. Если бы мне было удобнее работать с Java, то, вероятно, я бы использовал ее.

Только мои 2 цента.

person Krakerjak    schedule 22.02.2009

Однажды я работал в компании, основной продукт которой был написан на ASP.NET. Они поняли, что, вероятно, смогут увеличить свою долю на рынке, если смогут запустить свой продукт на серверах Linux. Конечно, это было бы довольно сложно, если бы не Mono. Мне было поручено потратить некоторое время на то, чтобы посмотреть, сколько (если вообще есть) их кода будет работать под Mono. Это было около 2 лет назад - большая часть была скомпилирована, но поддержка дженериков Mono в то время оставляла желать лучшего. Я думаю, что с тех пор он повзрослел, но часть кода даже не разбиралась. Код также немного использовал p / invoke для вызова машинного кода, так что это тоже делало вещи немного интересными. Хотя, конечно, было весело пытаться запустить его.

person Jeff Barger    schedule 22.02.2009

Поскольку Microsoft представляет изменения в стандарте C # ISO до их внесения, теоретически Mono НЕ ДОЛЖЕН идти вслед за .NET. На самом деле, большой старый бюджет MS приходит к финишу первым.

person Beep beep    schedule 22.02.2009

Mono отстает в одних вещах, но намного впереди по другим. Например, Mono поддерживает SSE и полную предварительную компиляцию - встроенный in. С другой стороны ... Моно когда-нибудь понадобится, чтобы реализовать все новые вещи в предстоящем выпуске .net ... например ... довольно обширные параллельные библиотеки.

person Amir    schedule 22.02.2009

Как все говорят, «запускать C # в Linux» или «быть кроссплатформенным» или что-то еще.

Причина, по которой меня интересует Mono - а я еще не был убежден, что прикоснусь к нему, - это возможность воспользоваться всеми преимуществами, которые .Net может предложить, чего нет в Java. По сути, ваш вопрос сводится к сравнению Java и .Net, и я не собираюсь начинать анализировать миллион точек сравнения между ними (в Google вы найдете множество сравнений J2EE и ASP.NET, это одна часть, а Java против C # - другая).

Но в чем большая разница между .Net и Java? Это связано с монолитной силой, стоящей за .Net (Microsoft и Novell пытаются перевести это на другие платформы) или мультивендорным подходом Java. Некоторым людям может быть достаточно просто выбрать сервер приложений, чтобы выбрать Mono.

Что дает вам один крупный монолитный поставщик, такой как Microsoft, чего, похоже, нет в Java:

  1. Централизованная документация (была «Удивительно хорошая документация, все в одном месте», но несколько человек сказали мне, что я ошибаюсь)
  2. Нет необходимости делать индивидуальный выбор платформы (например, ASP.NET или ASP.NET, а не сервлеты + JSP + JSTL? + Axis)
  3. Прочие вещи, которые я забываю

Кроме того, есть и другие существенные различия: Java - это единый язык, а Mono (я думаю) может запускать код, скомпилированный с помощью CLR, с разных языков.

person Dan Rosenstark    schedule 22.02.2009
comment
FWIW, я думаю, что .Net doco - отстой рядом с Java. Странный. - person Lawrence Dol; 22.02.2009
comment
Да, я подумал, что некоторые могут так думать. Придется провести какое-то сравнение или задать еще один вопрос по этому поводу :) - person Dan Rosenstark; 22.02.2009
comment
Я согласен с обезьяной ... Я так скучаю по java doc. - person dotjoe; 24.02.2009
comment
Хммм ... может быть, Java продвинулась вперед, и я все это время возился с другими языками :) Я просто помню, что Winforms очень хорошо документированы, а Swing Javadocs непонятны. Но мы говорим о 2004/5 году. - person Dan Rosenstark; 25.02.2009
comment
Обезьяна и Джо, исправили мой ответ, чтобы разместить данные :) - person Dan Rosenstark; 25.02.2009
comment
@yar: Я думаю, что ваш пункт 1) неверен. У Java тоже есть централизованная документация. И я согласен с другими сообщениями, что документация Microsoft .NET - отстой. - person sivabudh; 12.12.2009
comment
Кроме того, Java действительно является единым языком, но в JVM есть много языков, подходящих для этого: Clojure, Grooby Scala и многие другие. - person sivabudh; 12.12.2009

одним словом? Кроссплатформенность

person fmsf    schedule 22.02.2009
comment
Java - более надежный кроссплатформенный язык, чем все, что есть в Mono. - person ng.; 22.02.2009
comment
Да, но если вы хотите писать код на C # из окон, вы можете :) - person fmsf; 22.02.2009
comment
@fmsf: Тогда ваш ответ должен идти, потому что вы хотите писать код на C # в Linux, а не на Cross-paltform - person OscarRyz; 22.02.2009
comment
просто из любопытства: p получил 4 положительных и 5 отрицательных голосов с этим ответом, да, я знаю, но это было сделано для простоты ответа :) - person fmsf; 25.02.2009
comment
Читер. Вы можете расставить все через дефис и превратить это в одно слово. :п - person Bernard; 25.02.2009

Любой, кто использует Mono, сталкивается с опасностью патентования программного обеспечения со стороны Microsoft.

Вот почему для новых приложений следует избегать не только Mono, но и C # в первую очередь.

Переход на Mono имеет смысл только в том случае, если вы уже застряли в Windows и хотите уйти.

Почему бесплатное программное обеспечение не должно зависеть от Mono или C #

person Onlyjob    schedule 30.06.2011

Почему никто не упомянул, что Linux бесплатен?

person Community    schedule 10.03.2009
comment
Потому что это не имеет ничего общего с вопросом. Вопрос не в том, почему вы должны использовать Mono вместо .NET, а в том, почему вы должны использовать Mono, а не что-то более родное для Linux. - person David Thornley; 04.11.2009

По сути, я использовал моно как кросс-компилятор. Я добавил несколько строк "exec" в существующий файл сборки java / ant для вызова mono в качестве компилятора, так что был единый, полный процесс сборки из командной строки.

Мне пришлось написать слой-оболочку C # вокруг некоторого кода ПК, который должна была использовать наша база кода java-on-linux, но я не мог заставить себя требовать запуска Visual Studio (на отдельном компьютере) просто для проверки - из и построить процесс.

person Roboprog    schedule 04.11.2009