Mono linux что это

Обновлено: 25.06.2024

Основной разработчик проекта Mono — корпорация Xamarin, ранее Novell. Проект возглавляет Мигель де Икаса, известный разработчик, основатель проекта GNOME. Реализации Mono существуют для следующих операционных систем: Windows, Linux, BSD (FreeBSD, OpenBSD, NetBSD), Solaris, Mac OS X, Apple iOS, Wii. Поддерживаются платформы: s390, SPARC, PowerPC, x86/x86-64, IA-64, ARM, Alpha, MIPS, HP PA. [Источник 2]

Содержание

История

После трех лет работы, 30 июня 2004 года был выпущен Mono 1.0. Моно развился из платформы для настольных приложений Linux в приложение, способное осуществлять поддержку широкого спектра архитектур и операционных систем, включая встроенные системы.

Novell приобрела Ximian в 2003 году. После того, как Novell была приобретена Attachmate в апреле 2011 года, Attachmate объявила о сотнях увольнений работников Novell, ставя под сомнение будущее Mono.

Текущее состояние и функциональность

Moonlight

Внедрение Microsoft Silverlight с открытым исходным кодом, называемое Moonlight, было включено после Mono 1.9. Moonlight 1.0, поддерживающий API Silverlight 1.0, был выпущен 20 января 2009 года. Moonlight 2.0 поддерживает Silverlight 2.0 и некоторые особенности Silverlight 3.0. Предварительный выпуск Moonlight 3.0 был анонсирован в феврале 2010 года и содержит обновления для поддержки Silverlight 3.

Проект Moonlight был оставлен 29 мая 2012 года. По словам Мигеля, два фактора предрешили судьбу проекта: Microsoft добавила «искусственные ограничения», которые «. сделали бесполезным для программирования на рабочем столе . », и технология не получила достаточного сцепления с Интернетом.

Компоненты Mono

Моно состоит из трех групп компонентов:

  1. Основные компоненты
  2. Моно / Linux / GNOME стек разработки
  3. Стек совместимости с Microsoft

Архитектура Framework

Основные компоненты Mono включают:

Механизм выполнения кода

Время выполнения содержит механизм выполнения кода, который преобразует коды байтов ECMA CIL в собственный код и поддерживает несколько процессоров: ARM, MIPS (только в 32-разрядном режиме), SPARC, PowerPC, S390 (в режиме 64 бит), x86 , x86-64 и IA-64 для 64-битных режимов.


Генератор кода отображается в трех режимах:

  • Компиляция «точно в срок» (JIT): время выполнения превратит байты ECMA CIL в собственный код при запуске кода.
  • Компиляция Ahead (Ahead): этот код включает коды байтов ECMA CIL (обычно они находятся в файле .exe или .dll) и генерирует собственный код, хранящийся в операционной системе, архитектуре и конкретном файле CPU (для foo. exe, он будет производить foo.exe.so в Linux). Этот режим работы компилирует большую часть кода, который обычно выполняется во время выполнения. Существуют некоторые исключения, такие как батуты и другой административный код, которые все еще требуют, чтобы JIT функционировал, поэтому изображения AOT не полностью автономны.
  • Полная статическая компиляция: этот режим поддерживается только на нескольких платформах и выполняет процесс компиляции Ahead-of-Time на один шаг дальше и генерирует все батуты, функции обертки и прокси, которые требуются для статического файла, который может быть статически связан и полностью исключает необходимость использования JIT во время выполнения. Это используется на iOS от Apple, в PlayStation 3 от Sony и операционных системах Microsoft Xbox 360.

Начиная с Mono 2.6, стало возможным настроить Mono на использование LLVM в качестве механизма генерации кода вместо собственного механизма генерации кода Mono. Это полезно для высокопроизводительных вычислительных нагрузок и других ситуаций, когда производительность исполнения важнее производительности запуска.

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

Сборщик мусора

Начиная с Mono 2.8, Mono время выполнения осуществляется двумя сборщиками мусора: generational collector (коллектором поколений) и Boehm conservative collector (консервативным коллектором Бемом).

По состоянию на октябрь 2010 года новый коллектор поколений, называемый Simple Generational GC (SGen-GC), стал доступен как часть Mono. Начиная с Mono 3.1.1 это значение по умолчанию. Для версий Mono от 2.8 до 3.1.0 пользователи могут выбрать использование сборщика мусора SGen, передав при запуске ключ -gc = sgen во время выполнения Mono. Этот новый сборщик мусора имеет много преимуществ перед традиционным консервативным сканером. Он использует коллекцию мусора для генерации, в которой новые объекты выделяются из детской, во время цикла сбора мусора все оставшиеся объекты переносятся в пул памяти старшего поколения. Идея состоит в том, что многие объекты являются временными и могут быть быстро собраны, и только несколько объектов - долгосрочные объекты, которые живут на протяжении всей жизни приложения. Чтобы повысить производительность, этот коллекционер назначает пулы памяти для каждого потока, чтобы потоки выделяли новые блоки памяти без необходимости координировать их с другими потоками. Миграция объектов из детского сада в старое поколение осуществляется путем копирования данных из детской в ​​пул старого поколения и обновления любых указателей в реальном времени, указывающих на данные, характеризующие новое местоположение. Это может быть дорогостоящим для больших объектов, поэтому SGen Mono использует отдельный пул памяти для больших объектов (Large Object Section) и использует алгоритм mark-and-sweep для этих объектов.

В настоящее время SGen рассматривает стек и регистрирует консервативным способом и связывает любые объекты, на которые может ссылаться любой из этих корней. Будущая версия Mono точно проверяет управляемый стек, уменьшая количество закрепленных объектов.

Библиотека классов

Пространства имен и сборки

Сборка - физическая упаковка библиотек классов. Это DLL-файлы, как (но не путать с) разделяемые библиотеки Win32. Примерами узлов являются mscorlib.dll, System.dll, System.Data.dll и Accessibility.dll. Пространства имен часто распределяются между несколькими сборками, и одна сборка может состоять из нескольких файлов.

Общая языковая инфраструктура и общая языковая спецификация

Спецификация общего языка (CLS) описана в главе 6 ECMA-335 и определяет интерфейс для CLI, например соглашения, подобные базовым типам для Enum. Компилятор Mono генерирует изображение, соответствующее CLS. Это общий промежуточный язык. Время выполнения Mono берет это изображение и запускает его. Стандарт ECMA формально определяет библиотеку, которая соответствует CLS в качестве основы.

Управляемый и неуправляемый код

Кроме того, Mono доступен в различных операционных системах и архитектурах.

Системные требования

Связанные проекты

Несколько проектов расширяют Mono и позволяют разработчикам использовать его в своей среде разработки. Эти проекты включают:

    - обертки вокруг встроенного инструментария macOS (Cocoa) (устарело). - набор привязок для программирования macOS. - новые привязки для программирования macOS, основанные на дизайне API MonoTouch.
    . Моно для операционной системы Android. С привязками для API Android.
  • MonoTouch. Моно для iPhone, iPad и iPod Touches. С привязками к API iOS.
    для Visual Studio. Плагин Visual Studio, который позволяет разработчикам Windows ориентироваться на Linux и macOS прямо из Visual Studio и интегрируется с SUSE Studio.

Другие реализации

MonoDevelop

Браузер MonoDoc обеспечивает доступ к документации API и образцам кода. В браузере документации используется управление контентом в стиле wiki, что позволяет разработчикам редактировать и улучшать документацию.

Xamarin.iOS and Xamarin.Android

Xamarin.iOS и Xamarin.Android, разработанные Xamarin, являются реализациями Mono для iPhone и смартфонов на базе Android. Ранее доступный только для коммерческого лицензирования, после приобретения Microsoft Xamarin в 2016 году, сама среда исполнения Mono была переведена в соответствии с лицензией MIT, и Xamarin.iOS и Xamarin.Android стали бесплатными и открытыми.

Xamarin.iOS

Стек Xamarin.iOS состоит из:

  • Разработка SDK: - используется для связывания кода, используемого в окончательном приложении; - собственный компилятор и инструмент, используемый для развертывания на целевом устройстве;
  • Инструменты интеграции интерфейса Builder;
  • Библиотеки, которые связывают родные API CocoaTouch;
  • Xamarin Studio IDE.

Xamarin Studio используется в качестве основной IDE, однако были добавлены дополнительные ссылки на Xcode и iOS-симулятор.

С апреля по начало сентября 2010 года будущее MonoTouch было поставлено под сомнение, поскольку Apple представила новые условия для разработчиков iPhone, которые, по-видимому, запрещают им развиваться на языках, отличных от C, C ++ и Objective-C, и использование среднего уровня между iOS и приложениями для iPhone. Из-за этого будущее MonoTouch и других технологий, таких как Unity, было неопределенным. Затем, в сентябре 2010 года, Apple отменила это ограничение, заявив, что они ослабляют языковые ограничения, которые они установили в начале этого года.

Xamarin.Android

Xamarin.Android (ранее известный как Mono для Android), первоначально разработанный Novell и продолжаемый Xamarin, является частной версией Mono для смартфонов на базе Android. Он был впервые выпущен 6 апреля 2011 года. Mono для Android был разработан, чтобы позволить разработчикам легко писать кросс-платформенные приложения, которые будут работать на всех мобильных платформах. В интервью H-Online Мигель де Иказа заявил: «Наше видение заключается в том, чтобы позволить разработчикам повторно использовать свой код движка и бизнес-логики на всех мобильных платформах и заменять код пользовательского интерфейса для API-интерфейса, специфичного для платформы».

Стек Xamarin.Android состоит из следующих компонентов:

Лицензии

Патенты Mono и Microsoft

Выполнение Mono компонентов, не представленных в ECMA для стандартизации, стало источником проблем, связанных с нарушением патентных прав на протяжении большей части существования проекта. В частности, состоялось обсуждение вопроса о том, может ли Microsoft уничтожить проект Mono с помощью патентных заявок. Это обсуждение стало спорным после того, как Microsoft приобрела Xamarin - основных разработчиков Mono. В июне 2009 года Техническая комиссия Ubuntu заявила, что не видит причин исключать Mono или приложения на основе него из архива или из установочного набора по умолчанию.

Если патентные вопросы когда-либо возникнут, стратегия проекта Mono для решения этих проблем выглядит следующим образом:

  • Работайте над патентом, используя другую технику реализации, которая сохраняет API, но меняет механизм;
  • Удалите фрагменты кода, которые были охвачены этими патентами;
  • Найдите известный уровень техники, который сделает патент бесполезным.

Кроме того, Mono также входит в список программного обеспечения, которое Open Invention Network обязуется защищать.

Руководитель проекта Fedora Пол Фриелдс заявил: «У нас есть серьезные опасения по поводу Mono, и мы продолжим рассматривать его с нашим юрисконсультом, чтобы узнать, нужны ли с нашей стороны какие-либо шаги», но «Мы не пришли к юридическому заключению, которое достаточно для того, чтобы мы решили принять Mono».

В ноябре 2011 года на саммите разработчиков Ubuntu разработчики проголосовали за удаление медиа-проигрывателя Banshee на основе Mono из установки по умолчанию Ubuntu, начиная с Ubuntu 12.04; хотя сообщаемые рассуждения включали проблемы производительности в архитектуре ARM, блокирующие проблемы в ее версии GTK + 3, и, по их мнению, «не поддерживаемая». На решение также повлияло желание удалить Mono из базы распределение, так как остальные программы, зависящие от Mono, gbrainy и Tomboy, также должны были быть удалены. Mono-разработчик Джозеф Майкл Шилдс защищал работу Banshee на ARM, а также утверждения о том, что Banshee не поддерживался в качестве «целенаправленное личное оскорбление» одному из его основных участников.




Программное обеспечение, разработанное с помощью Mono


Ряд видеоигр, таких как The Sims 3 и Second Life для своих языков сценариев, сервер виртуального мира OpenSimulator или игры, созданные с помощью движков Unity или MonoGame, также используют Mono.

Знакомство с ОС МСВС

Итак, википедия говорит, что ОС МСВС — это Мобильная Система Вооруженных Сил. А именно, защищенная операционная система общего назначения. Разработала ее организация ВНИИНС. Система создана на базе Linux в соответствии с требованиями Министерства Обороны РФ.

  • МСВС 3.0 — 32х разрядная версия с ядром 2.4;
  • МСВС 5.0 — 64-х разрядная версия с ядром 2.6.
  • ОС МСВС 3.0 ФЛИР.80001-12 изм. №6;
  • ОС МСВС 5.0 ЦАВМ.11004-01 изм. №7.

В постановке задачи не была указана конкретная версия системы, поэтому, посоветовавшись с техподдержкой ВНИИНС, была выбрана наиболее актуальная на сегодняшний день ОС МСВС 5.0 ЦАВМ.11004-01 изм. №7.

Примерно месяц ушел на покупку официальной версии и еще несколько дней на подбор “железа” и установку системы. Однозначно можно сказать что ОС МСВС 5.0 не ставится на процессоры х86 и ноутбуки с 2-мя видеокартами.

Так выглядит графическая оболочка МС ОСВС:


  • Дата сборки по команде «uname -a»: 01 февраля 2013;
  • Ядро: 2.6.32;
  • QT: 3.3.8b, 4.8.5;
  • gcc: 4.1.2, 4.4.7;
  • glibc: 2.5;
  • KDE: 3.5.
  • ОС МСВС 5.0 создана на основе Red Hat Enterprice Linux или его производных;
  • Судя по версии ядра и дате сборки это RHEL 6.3;
  • Библиотеки glibc очень старые: от сентября 2006 года;
  • Для разработки рекомендуется использовать QT тоже не самой первой свежести.

Можно предположить, что такое состояние дел вызвано трудностями с сертификацией составных частей системы.

  • переписывать все под QT либо под glibc;
  • попробовать запустить то, что есть, с помощью Mono.

Установка Mono

Реализации Mono существуют для следующих операционных систем: Windows, Linux, BSD (FreeBSD, OpenBSD, NetBSD), Solaris, Mac OS X, Apple iOS, Wii. Поддерживаются платформы: s390, SPARC, PowerPC, x86/x86-64, IA64, ARM, Alpha, MIPS, HPPA.

Идем на сайт проекта и видим там, что для установки нужно выполнить всего лишь 3 команды:

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

Программное обеспечение устанавливается в ОС МСВС (как в наследнике RHEL) в виде RPM пакетов. Для удобства этого процесса часто используется менеджер пакетов YUM. В состав ОС МСВС входит графическая оболочка менеджера пакетов, но я пользовался консольной версией. Пакеты находятся в репозиториях, которые могут находиться как на локальной машине, так и где-то в сети. Добавив ссылки на репозитории в менеджер пакетов YUM, можно довольно удобно обновлять систему. Как правило, в RHEL и его наследниках репозитории уже добавлены и настроены, однако в ОС МСВС имеется только один репозиторий, расположенный на установочном компакт-диске.


Проблемы начались уже на второй команде. Оказалось, что yum-config-manager отсутствует в системе:

Значит, репозиторий нужно добавить вручную. Они находятся в каталоге /etc/yum.repos.d . Там нужно создать файл <reponame>.repo . Например, mono.repo . В этот файл нужно добавить следующее:

После сохранения файла проверяю, что репозиторий добавлен, выполнив команду yum repolist . При этом диск с дистрибутивом должен быть вставлен и смонтирован. Либо должен быть отключен репозиторий на диске: enabled = 0 в файле server.repo .


Однако и теперь ничего не получилось:

Ошибка [Errno -3] Error performing checksum говорит о том, что YUM не может посчитать контрольную сумму. Как выяснилось, репозиторий использует хэш-функцию sha256 , которую и не может посчитать YUM. Опытные люди пишут, что в данном случае нужно поставить библиотеку python-hashlib . Так как репозитории не настроены, я вручную установил вот эту версию.


После этого репозитории заработали, как нужно:


Но выполнить инсталляцию Mono все равно не получается.:

При установке проверяются зависимости пакетов. Оказалось, что инсталляция Mono из данного репозитория требует, чтобы в системе были версии библиотек не ниже:

  • GLIBC_2.16
  • PNG15_0
  • LIBTIFF_4.0
  • LIBJPEG_6.2

Можно было бы попробовать обновить все эти библиотеки, однако это может привести к проблемам в работе другого ПО, использующего их.

StackOverFlow подсказал мне другое решение: нужно попробовать поставить более раннюю версию Mono. Оказывается, существует архив версий. Опытным путем удалось определить, что самой свежей версией Mono, которая нормально ставится на ОС МСВС 5.0 ЦАВМ.11004-01 изм. №7 является версия 2.10.2. Репозиторий находится тут.

В итоге, чтобы все установить, нужно сделать следующее:

2. Выполнить команду yum install monotools-addon-server для установки основных библиотек.
3. Выполнить команду yum install mono-addon-winforms-2.10.2-5.1.x86_64 для установки библиотек winforms.
4. Выполнить команду yum install mono-addon-libgdiplus0.x86_64 0:2.10-6.2 для установки реализации GDI+.

  1. настроить окружение командой source /opt/novell/mono/bin/mono-addon-environment.sh
  2. узнать версию командой mono --version


В результате должно получиться так:

Кроме того, можно проверить работоспособность, запустив пару программ.

Проблемы портирования

Чтобы работать в привычной среде, я установил ту же версию Mono для Windows.

Для отладки удобно пользоваться выводом в консоль. Чтобы он отображался, нужно запускать приложение с параметром --debug . Например, mono --debug helloworld.exe .


Чтобы изолировать код, предназначенный только для Mono, я создал в VisualStudio две новые конфигурации MonoRelease и MonoDebug .


В каждой из них я добавил опцию компилятора /define MONO

Теперь можно использовать такую вот конструкцию:

С первого раза, конечно же, ничего не заработало. В первую очередь — получение имени процессов:


Этот код возвращает количество таких же запущенных в системе процессов. Проблема решилась, путем игнорирования исключений от не нужных нам процессов.


При этом код продолжил выполнять свою функцию.


Затем на форме “уехали” кнопки. Должно быть так:


А получилось так:

Это решилось небольшим изменением расположения элементов на форме:

Также были проблемы с путями. В Linux используется символ ‘/’ для разделения директорий, а в Windows ‘\’ . Проблема решается использованием System.IO.Path.DirectorySeparatorChar . Это статическое поле всегда имеет правильное значение на любой операционной системе.

В итоге пришлось переписывать весьма внушительную часть кода, заменяя автоматическую сериалиацию на “ручную” сборку класса из массива.

Результат

В результате задача была решена. Непосредственно на портирование ушло около 2-х недель. Еще где-то неделю заняли исследования процесса установки Mono. И месяц заняла покупка операционной системы.

Что дальше?

А дальше нужно формировать собственный репозиторий, который автоматически будет устанавливать Mono и само ПО. После этого должна быть сертификация…

Но, как обычно, все поменялось на самом интересном месте. В самом разгаре работы оказалось, что ОС МСВС уже не актуальна. Нужно все делать на AstraLinux… А это уже немного другая история.



Я участник Debian Mono Group, Debian CLI Applications Team, и Debian CLI Libraries Team. И уже в течении года работаю над сопровождением пакетов проекта Mono и программ, которые используют его в ОС Ubuntu (и Debian). Мне хорошо известны горячие споры, угрозы и последующие переходы на личности, и сейчас я принимаю ваш «вызов». В этой статье я говорю от себя лично — не от проекта Debian, не от Ubuntu, не от Mono, и не потому, что меня попросил мой начальник.

Почему Mono хорош?

Почему Mono не опасен?

Почему Mono должен быть включен в Ubuntu по-умолчанию?

Мы не хотим, чтобы Mono был установлен по-умолчанию во всех дистрибутивах. Mono — это программная платформа, а значит он не должен быть установлен у всех пользователей. Ubuntu не поставляется по-умолчанию с Java, Scheme, Assemby, LISP и различными фреймворками, просто потому, что они не интересны большинству пользователей.
Мы хотим, чтобы по-умолчанию были хорошие программы. После загрузки Ubuntu, Kubuntu, Xubuntu или другого дистрибутива пользователь должен сказать «Ух ты, Свободное ПО настолько хорошо, что я больше не нуждаюсь в Windows». Все дистрибутивы СПО, стремящиеся обрести фанатов, должны выбирать лучшие приложения. В случае с Ubuntu, командой Desktop Team было принято решение включить в дистрибутив лучшее приложение для работы с заметками и лучший фото менеджер.

Desktop Team решила, что наилучшем приложением для работы с заметками является Tomboy. Приложение Tomboy гораздо функциональнее, чем апплеты «Sticky Notes» («Липучие заметки») как и от GNOME, так и от Windows Vista. Также Tomboy можно рассматривать как бесплатную замену проприетарному Microsoft OneNote стоимостью ?80. Единственное аналогичное по возможностям приложение является Zim «Desktop Wiki».

Zim — высококачественный продукт, но Desktop Team решила использовать Tomboy, поскольку это приложение удобнее для многих пользователей (и сейчас Tomboy используется как стандартное приложение в этом классе)
Также Desktop Team решила, что лучшим фото-менеджером является программа F-Spot. Приложение F-Spot можно сравнить по возможностям с проприетарными приложениями iPhoto компании Apple и Picasa от Google Inc. F-Spot нельзя сравнивать с приложениями типа файл-менеджер как gThumb, поскольку одной из ключевых особенностей является возможность прикреплять к фотографии важные метаданные, но gThumb работает для каждого каталога отдельно, а не для всех фото сразу, как F-Spot.

Пост размещенный в Linux Today

«Есть множество приложений и получше, которые можно включить в дистрибутив» — Пожалуйста, назовите такие приложения.

«проталкивание технологий Microsoft» — Помогите! Помогите! Нас угнетают! Нет, давайте серьёзно. Хорошая технология — это хорошая технология, а не изобретение велосипеда, который никому никогда не помогал. Среди участников Desktop Team нет профессионалов в Mono (большинство из них фанаты Python) и односторонних решений связанных с включением программ в дистрибутив не было, нету и не будет. Никто ничего не проталкивает! Ни один из пакетов связанных с Mono не был помечен как «важный» (Essential:yes).

«Включение этих програм оскверняет Ubuntu» — Демагогия. Microsoft — обычная корпорация, а не нечто сверхъестественное. Обвинение Microsoft в нечестивости и проталкивании продуктов делает им слишком много чести. Они — корпорация с огромным количеством глупых менеджеров и с редкими просветами в виде компетентных разработчиков. И ничего больше.

«Не могли бы вы сказать, почему Mono был удален из установочного дистрибутива Ubuntu?» — Предлагаю вашему вниманию цитату Томаса Джефферсона — «Насмешка — его единственное оружие против непонятных суждений. Мысли должны быть отчетливыми прежде чем разум сможет с ними что-либо сделать». Требования удалить Mono из дистрибутива Ubuntu беспричинны — в Ubuntu нету других пакетов, которые могли бы стать лучшей заменой, но сообщество требует удалить Mono. Это, проще говоря, «программный терроризм» — требование сменить политику и утверждение того что Desktop Team не свободны в выборе, основанном на собственной политике. Многие люди могут возразить в этом вопросе, но пока у них не будет адекватной замены для «приложений Mono», их выбор прост — делать Linux хуже и хуже, двигаясь к базовому набору приложений или всё-таки смириться с существованием Mono. Стоит заметить что такие люди — гораздо большая потеря нежели различные пользователи форумов, например, Mark Shuttleworth, который не один раз заявлял, что не разделяет страхов сообщества по поводу Mono. Я лично поддержал бы переход с Mono-приложений на другие, не основанные на Mono, но гораздо лучшими в своем классе.

«Просто включить его в стандартный репозиторий не приемлемо.» — Это абсолютно приемлемо, хотя это не единственное выдвинутое предложение — они варьируются от реклассификации Mono в non-Free репозиторий, до его полного удаления из Debian и Ubuntu. Свободные программы должны быть в стандартном репозитории, независимо от их реализации — но если реализация какого-то приложения является лучшей, то она должна быть включена по умолчанию.

«Неспособность фанатов Mono ответить на те простые вопросы меня немного беспокоит, такое впечатление, что есть куда более важные вопросы.» — Если вы обвиняете кого-то, тогда объясните суть обвинений. Если у вас есть конкретные обвинения к людям, которые не противостоят Mono, тогда напишите их или же не распространяйте мифы.

Движение против Mono

Есть люди, которые «за» какие-то вещи. Они за свободу, или за техническое превосходство, или за спортивную команду, или за что-то другое. Есть люди, которые «против». Они против некоторых политиков, или людей определенной национальности, или чего-то другого. Некоторые люди определяют себя сторонниками чего-то, а другие противниками. Mono вызывает огромный гнев среди второй группы; в частности, люди, которые используют GNU/Linux не потому, что они «за» что-либо, а потому, что они «против» Microsoft. Это можно хорошо разглядеть в использовании слов «Microshaft» или «Micro$oft» или других детских попытках определить «их» и «нас», чтобы высмеять «их». Для них все символично: если Mono — свободное ПО, то они «за», но если оно безвозмездно получено из рук Великого Сатаны, то это непростительно.

Большинство противников Mono не являются даже создателями сборок, а не то что разработчиками ПО. Они заявляют, что программисты (которые действительно тратят время на разработку СПО) должны использовать те платформы, которые нравятся им, а не самим разработчикам. Это другая причина, почему аргументы противников Mono не получают должного внимания — предположение о том, что кто-то может решать за разработчиков очень раздражает. СПО основывается на меритократии — более способные получают больше уважения. Пока противники Mono не будут вносить свой вклад в СПО они будут выглядеть чудаковато и их вопросы останутся без ответа.

В конце концов, не найдется ничего, что заставит исчезнуть споры вокруг Mono, до тех пор, пока расплывчатые угрозы юридической атаки распространяются и подпитываются некоторыми членами сообщества. Практически ничто не сможет успокоить тех, кто уже составил свое собственное мнение без какой-либо озабоченности о реальных основаниях или фактах. Аргументы против Mono основанные на реальности или фактах я считаю хорошими и приветствую их, но встречаться с ними мне приходилось очень редко. И даже если они приводятся, то тонущими в настолько густом соусе демагогии, страха, неуверенности и сомнения, что действительно важная информация попросту невидна.

Итак, я считаю эта статья то, что вы искали. Вы можете перепечатывать её или нет. Она создана как новая глава в ежедневных личных нападках на меня со стороны уж очень искушенных противников Mono.

The Components

There are several components that make up Mono:

Mono Runtime - The runtime implements the ECMA Common Language Infrastructure (CLI). The runtime provides a Just-in-Time (JIT) compiler, an Ahead-of-Time compiler (AOT), a library loader, the garbage collector, a threading system and interoperability functionality.

Mono Class Library - Mono also provides many classes that go above and beyond the Base Class Library provided by Microsoft. These provide additional functionality that are useful, especially in building Linux applications. Some examples are classes for Gtk+, Zip files, LDAP, OpenGL, Cairo, POSIX, etc.

Mono Feature Highlights

Open Source, Free Software
Mono’s runtime, compilers, and libraries are distributed using the MIT license.

Comprehensive Technology Coverage
Bindings and managed implementations of many popular libraries and protocols

The Benefits

There are many benefits to choosing Mono for application development:

Higher-Level Programming - All Mono languages benefit from many features of the runtime, like automatic memory management, reflection, generics, and threading. These features allow you to concentrate on writing your application instead of writing system infrastructure code.

Base Class Library - Having a comprehensive class library provides thousands of built in classes to increase productivity. Need socket code or a hashtable? There’s no need to write your own as it’s built into the platform.

Cross Platform - Mono is built to be cross platform. Mono runs on Linux, Microsoft Windows, macOS, BSD, and Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone and Android. It also runs on x86, x86-64, IA64, PowerPC, SPARC (32), ARM, Alpha, s390, s390x (32 and 64 bits) and more. Developing your application with Mono allows you to run on nearly any computer in existence.

Other Uses

Scripting and Embedding - The Mono runtime can also be used to script your applications by embedding it inside other applications, to allow managed code and scripts to run in a native application.

See Embedding Mono for details on how to embed Mono.

See Scripting With Mono for strategies on how to script your application using the Mono runtime.

Читайте также: