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

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

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

EDIT:
Как и кто-то, упомянутый ниже, я полагаю, что главный вопрос: зачем вы хотите использовать .NET на платформе Linux?

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

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

Много причин:

* общий код между сервером и, скажем, WPF или Winforms приложения;
* Использование определенного .Net-языка, такого как F #;
* Функции языка, которые не находятся на Java (замыкания, перегрузка операторов, частичные классы, генераторы среды выполнения, индексы, делегаты, типы LINQ, var и т. Д. И т. Д.);
* Ваши навыки или навыки вашей команды уже находятся на C#;
* т.д.


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



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



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



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



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



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



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

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



Как все говорят, «запустить 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? + ось)
3. Другие вещи я забываю

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



Моно стоит на некоторых вещах, но впереди других. Например, Mono поддерживает [SSE](https://stackoverflow.com/questions/415375/using-sse-in-c-is-it-possible) и полную компиляцию по времени - встроенный. С другой стороны ... это займет Mono, чтобы реализовать все новые предстоящие вещи в предстоящем выпуске .net ... например ... довольно обширные параллельные библиотеки.



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



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

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



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

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

Миграция в Моно только имеет смысл, если вы уже застряли в Windows и хотите сбежать.

[Why free software shouldn't depend on Mono or C#](https://www.fsf.org/news/dont-depend-on-mono)