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


33

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

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

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

+19

Поскольку Mono имеет C# и C# не Java. 22 фев. 092009-02-22 00:11:56

+1

Просто любопытно, этот вопрос уже получил 2 downvotes, почему? 22 фев. 092009-02-22 00:29:04

  0

субъективный и аргументированный? ;) 22 фев. 092009-02-22 00:32:07

+4

Я не думаю, что это субъективно, мне просто нужны конкретные причины, по которым вы хотели бы «бороться» с .NET на Linux, вместо того, чтобы использовать язык, предназначенный для работы в Linux.:) 22 фев. 092009-02-22 00:40:18

+2

«Моно всегда будет следить за последними событиями в платформе .NET». Что вы имеете в виду? В некоторых случаях Mono уже быстрее, чем MS «официальная» среда исполнения. 22 фев. 092009-02-22 00:40:25

+2

Я больше говорю о языковых возможностях, таких как LINQ, WCF и т. Д. Когда MS выпускает новые функции, всегда будет отставание до того, как Mono их поддержит. 22 фев. 092009-02-22 00:42:03

  0

Кроме того, существуют определенные функции (такие как поддержка MSMQ в WCF), которые никогда не могут быть (чисто) поддерживаться в Mono. 22 фев. 092009-02-22 00:42:58

  0

Энди Уайт, пожалуйста, извините ответы на дерьмо, которые вы получаете здесь (мое включено, возможно): 1) правильные люди еще не видели этот Q, и 2) ваш вопрос может быть более ясным, чтобы люди знали ТОЧНО, НЕ спрашивайте. Удачи. 22 фев. 092009-02-22 05:50:30

  0

Ничего страшного, это был довольно дерьмовый вопрос. (Возможно, я могу аргументировать). Я должен был быть более конкретным. 23 фев. 092009-02-23 00:16:10

62

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

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

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

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

Одно из моих любимых приложений для Linux «Gnome-do» (похоже на Mac Quicksilver) написано в моно. http://do.davebsd.com/ 22 фев. 092009-02-22 01:02:45

+10

Просто для правильного использования «попросить вопрос»: http://begthequestion.info/. Джефф Этвуд делает все те же ошибки в подкастах ... 22 фев. 092009-02-22 02:29:28

+2

Да, я сделал вводную философию в uni, и это тоже появилось. Использование Джеффа, я и других, приписывающих этому термину, (как это или нет) становится принятым в современном народном языке. 22 фев. 092009-02-22 02:30:53

+3

Мне нравится, что вы просто попросили вопрос (правильное использование) в разговоре о вашем собственном неправильном использовании фразы. Хорошо сыграл, cletus, хорошо сыграл. 28 апр. 092009-04-28 17:06:47

  0

Aha! Клетус действительно должен быть просто секретным героем Джеффа! 26 мар. 102010-03-26 06:46:32

  0

Обратите внимание, что F # - это слегка модифицированная версия Objective Caml, которая * может * использоваться изначально в linux, без всего этого. 26 мар. 102010-03-26 06:54:07

  0

Работает ли F # в Linux? В MonoDevelop я не видел никаких вариантов. 10 май. 122012-05-10 05:05:41


1

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

+4

Java - это более надежный кросс-платформенный язык, который предоставляет Mono. 22 фев. 092009-02-22 00:16:32

+2

Yup, но если вы хотите код на C# из окон, вы можете :) 22 фев. 092009-02-22 00:17:59

+2

@fmsf: Тогда ваш ответ должен идти «Потому что вы хотите кодировать на C# в Linux», а не «Cross-paltform» 22 фев. 092009-02-22 03:28:45

  0

просто ради любопытства : p получил 4 upvotes и 5 downvotes с этим ответом, да, я знаю, но это должно было держать ответ простым :) 24 фев. 092009-02-24 22:34:21

+3

Cheater. Вы можете переложить что-нибудь и превратить его в одно слово. : p 24 фев. 092009-02-24 23:10:00


11

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


7

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


2

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


8

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


2

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


4

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

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


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-скомпилированный код с разных языков.

  0

FWIW, я думаю, что doco .Net отстойно рядом с Java. Странный. 22 фев. 092009-02-22 07:19:38

  0

Да, я подумал, что некоторые могут это почувствовать. Мы должны были бы провести какое-то сравнение или задать другой вопрос об этом :) 22 фев. 092009-02-22 12:45:51

  0

Я согласен с обезьяной ... Я прошу пропустить java doc. 24 фев. 092009-02-24 17:41:12

  0

Хммм ... может быть, что Java продвинулась вперед, и я все время наводил на другие языки :) Я просто помню, что Winforms очень хорошо документированы, а Swing Javadocs непонятны. Но мы говорим о 2004/5. 24 фев. 092009-02-24 22:23:33

  0

Обезьяна и Джо, исправили мой ответ, чтобы разместить данные :) 24 фев. 092009-02-24 22:25:15

  0

@yar: Я думаю, что ваша точка 1) неверна. Java также имеет централизованную документацию. И я согласен с другими сообщениями, что документация Microsoft .NET отстойна. 11 дек. 092009-12-11 23:45:17

+1

Кроме того, Java действительно является единственным языком, но JVM имеет много языков для этого: Clojure, Grooby Scala, чтобы назвать несколько. 11 дек. 092009-12-11 23:46:49


2

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


0

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

+1

Потому что это не имеет никакого отношения к вопросу. Вопрос не в том, почему вы должны использовать Mono, а не .NET, но почему вы используете Mono, а не что-то более родное для Linux. 04 ноя. 092009-11-04 20:41:38

  0

еще родной? ... 01 июн. 122012-06-01 12:26:42


0

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

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


1

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

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

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

Why free software shouldn't depend on Mono or C#