Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Mono - это бесплатная программная среда с открытым исходным кодом, совместимая с .NET Framework . Первоначально компания принадлежала Ximian , позже она была приобретена Novell , а теперь ее возглавляет Xamarin , дочерняя компания Microsoft [5] и .NET Foundation . Mono можно запустить во многих программных системах .

История [ править ]

Моноблок на OSCON 2009 в Сан-Хосе, Калифорния

Когда Microsoft впервые анонсировала свою .NET Framework в июне 2000 года, она была описана как «новая платформа, основанная на интернет-стандартах» [38], а в декабре того же года была опубликована основная инфраструктура общего языка как открытый стандарт «ECMA-335. ", [39] открывая потенциал для независимых реализаций. [40] Мигель де Иказа из Ximian полагал, что .NET обладает потенциалом для повышения производительности программистов, и начал исследовать, возможна ли версия для Linux. [41] Осознавая, что их небольшая команда не может рассчитывать на создание и поддержку полного продукта, они запустили проект с открытым исходным кодом Mono 19 июля 2001 г.Конференция О'Рейли .

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

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

16 мая Мигель де Икаса объявил в своем блоге, что Mono по-прежнему будет поддерживаться Xamarin , компанией, которую он основал после увольнения из Novell. Первоначальная команда Mono также переехала в новую компанию. Xamarin планировал продолжить работу над Mono и планировал переписать проприетарные стеки .NET для iOS и Android с нуля, поскольку Novell в то время все еще владела MonoTouch и Mono для Android. [47] После этого объявления будущее проекта было поставлено под сомнение, поскольку MonoTouch и Mono для Android находятся в прямой конкуренции с существующими коммерческими предложениями, которые теперь принадлежат Attachmate., и учитывая, что группе Xamarin было бы трудно доказать, что они не использовали технологии, которые они ранее разработали, когда были наняты Novell для той же работы. [48] Однако в июле 2011 года Novell, ныне дочерняя компания Attachmate и Xamarin, объявила о предоставлении бессрочной лицензии Xamarin для Mono, MonoTouch и Mono для Android, которые официально взяли на себя руководство проектом. [49] [50]

Текущий статус и дорожная карта [ править ]

Текущая версия Mono - 6.0.0 (по состоянию на август 2019 года ). Эта версия обеспечивает базовый API в .NET Framework и поддержка Visual Basic.NET и C # 7.0. LINQ to Objects , XML и SQL являются частью дистрибутива. Windows Forms 2.0 также поддерживается, но активно не развивается, и поэтому ее поддержка в Mono является неполной. [51] Версия 4.0 была первой версией, включающей исходный код Microsoft, выпущенный Microsoft как часть проекта .NET Core .

По состоянию на 14 января 2021 г. Mono имеет полную поддержку всех функций .NET 4.7, кроме Windows Presentation Foundation (WPF) (которую команда Mono не планирует поддерживать из-за объема работы, которая потребуется) [51] и Windows Workflow Foundation (WF) и с ограниченной поддержкой Windows Communication Foundation (WCF) и асинхронного стека ASP.NET. Однако System.Web и WCF являются кандидатами для «почти немедленного» переноса из справочного источника .NET обратно в Mono. [52] Некоторые недостающие части .NET Framework разрабатываются в экспериментальном подпроекте Mono под названием Olive . [53]

Проект Mono также создал компилятор Visual Basic .NET и среду выполнения, предназначенную для запуска приложений VB.NET. В настоящее время его разрабатывает Рольф Бьярне Квинге.

Лунный свет [ править ]

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

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

Монокомпоненты [ править ]

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

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

В основные компоненты включают в себя C # компилятор, виртуальную машину для инфраструктуры общего языка и библиотек базовых классов. Эти компоненты на основе стандартов ECMA-334 и ECMA-335 , [58] позволяет Моно , чтобы обеспечить стандарты совместимые, свободным и открытым исходным кодом CLI виртуальной машины . Microsoft выпустила заявление, охватывающее оба стандарта в рамках их лицензии Community Promise . [59]

Стек разработки Mono / Linux / GNOME предоставляет инструменты для разработки приложений, используя существующие GNOME и бесплатные и с открытым исходным кодом библиотеки. К ним относятся: Gtk # для разработки графического пользовательского интерфейса (GUI), библиотеки Mozilla для работы с механизмом рендеринга Gecko , библиотеки интеграции Unix (Mono.Posix), библиотеки подключения к базам данных, стек безопасности и язык схем XML RelaxNG . Gtk # позволяет приложениям Mono интегрироваться в рабочий стол Gnome как собственные приложения. Библиотеки баз данных обеспечивают подключение к объектно-реляционной базе данных db4o , Firebird ,Microsoft SQL Server (MSSQL), MySQL , Open Database Connectivity (ODBC), Oracle , PostgreSQL , SQLite и многие другие. Проект Mono отслеживает разработку компонентов базы данных на своем веб-сайте. [60]

Стек совместимости Microsoft предоставляет путь для портирования приложений для Windows .NET для GNU / Linux. В эту группу компонентов входят , среди прочего, ADO.NET , ASP.NET и Windows Forms . Поскольку на эти компоненты не распространяются стандарты Ecma , некоторые из них по-прежнему вызывают опасения и опасения, связанные с патентами .

Архитектура каркаса [ править ]

Основные компоненты Mono:

  • Механизм выполнения кода
  • Библиотеки классов
    • Библиотека базового класса
    • Библиотеки классов совместимости .NET
    • Специализированные библиотеки классов Mono:
      • Кросс-платформенные библиотеки классов для Mono и .NET (Gtk #, Mono.Cecil, Mono.CSharp, Text.Templating)
      • Специфичные для Unix библиотеки классов (POSIX, файловая система в пользовательском пространстве (FUSE), curses)
      • Библиотеки классов для конкретных платформ (привязки для Mac, iOS, Android, MeeGo)
  • Сборки CLI
  • Метаданные CLI
  • Общеязыковая среда выполнения Mono
    • Совместимость с Common Language Infrastructure / .NET Common Language Runtime.
    • Усовершенствования, специфичные для моно:
      • Поддержка Mono.SIMD
      • Моно совместные подпрограммы и продолжения.
  • Моно-специфические улучшения
  • Собственные службы взаимодействия и COM-взаимодействие
  • Безопасность - Прозрачная структура кода

Механизм выполнения кода [ править ]

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

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

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

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

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

Начиная с Mono 5.18, поддержка LLVM является опцией конфигурации по умолчанию. Предыдущие версии требовали специальной вилки LLVM, но теперь mono может вернуться к собственному генератору кода, когда обнаружит что-то, что не обрабатывается LLVM. [61]

Сборщик мусора [ править ]

Начиная с Mono 2.8, среда выполнения Mono поставляется с двумя сборщиками мусора : сборщиком поколений [62] и консервативным сборщиком Boehm.

Сборщик мусора по умолчанию до Mono 3.1.1 ( консервативный сборщик мусора Боэма-Демерса-Вайзера ) [62] [63] имеет значительные ограничения по сравнению с коммерческими средами выполнения, собирающими мусор, такими как виртуальная машина Java или среда выполнения .NET Framework. Поскольку сборщик мусора мог обнаруживать утечки памяти в определенных классах приложений, он мог не подходить для долго работающих серверных приложений до обновления до версии 3.1.1 или более поздней.

С октября 2010 года сборщик нового поколения под названием Simple Generational GC (SGen-GC) стал доступен как часть Mono. Начиная с Mono 3.1.1 это значение по умолчанию. Для версий Mono от 2.8 до 3.1.0 пользователи могут выбрать использование сборщика мусора SGen, передав --gc=sgenпереключатель в среду выполнения Mono при запуске. [62] Этот новый сборщик мусора имеет много преимуществ перед традиционным консервативным сканером. Он использует поколенческую сборку мусоратам, где новые объекты выделяются из питомника, во время цикла сборки мусора все уцелевшие объекты переносятся в пул памяти более старого поколения. Идея состоит в том, что многие объекты являются временными и могут быть быстро собраны, и лишь небольшая часть объектов является долгосрочными объектами, которые живут в течение всей жизни приложения. Для повышения производительности этот сборщик назначает пулы памяти каждому потоку, чтобы позволить потокам выделять новые блоки памяти без необходимости координировать свои действия с другими потоками. Миграция объектов из питомника в старое поколение выполняется путем копирования данных из питомника в пул старого поколения и обновления любых активных указателей, которые указывают на данные, чтобы они указывали на новое местоположение. Это может быть дорого для больших объектов, поэтому Mono 's SGen использует отдельный пул памяти для больших объектов (раздел больших объектов) и использует алгоритм маркировки и очистки для этих объектов.

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

Библиотека классов [ править ]

Библиотека классов предоставляет полный набор средств для разработки приложений. В основном они написаны на C #, но благодаря спецификации общего языка они могут использоваться на любом языке .NET. Библиотека классов структурирована в пространствах имен и развернута в общих библиотеках, известных как сборки. Говоря о .NET Framework, мы в первую очередь имеем в виду эту библиотеку классов. [64]

Пространства имен и сборки [ править ]

Пространства имен - это механизм для логической группировки похожих классов в иерархическую структуру. Это предотвращает конфликты имен. Структура реализована с использованием слов, разделенных точками, где наиболее распространенным пространством имен верхнего уровня является System, например System.IO и System.Net. Есть и другие пространства имен верхнего уровня, такие как Доступность и Windows. Пользователь может определить пространство имен, помещая элементы внутри блока пространства имен.

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

Инфраструктура общего языка и спецификация общего языка [ править ]

Common Language Infrastructure (CLI) , как осуществляется Common Language Runtime (CLR) , осуществляется с помощью исполняемого файла Mono. Среда выполнения компилирует и выполняет приложения .NET. Общая языковая инфраструктура определяется стандартом ECMA. [58] Чтобы запустить приложение, вы должны вызвать среду выполнения с соответствующими параметрами.

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

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

В нативной .NET приложения / Mono, весь код удалось ; то есть он регулируется стилем управления памятью и безопасностью потоков в интерфейсе командной строки. Другие приложения .NET или Mono могут использовать устаревший код, который называется неуправляемым, с помощью библиотек System.Runtime.InteropServices для создания привязок C #. Многие библиотеки, поставляемые с Mono, используют эту функцию CLI, например Gtk # .

Моноспецифические инновации [ править ]

Mono внесла новшества в некоторые области с новыми расширениями основных спецификаций C # и CLI:

  • Компилятор C # как услуга (используйте компилятор C # как библиотеку). [15]
  • Интерактивная оболочка C #. [16]
  • Поддержка SIMD [14] как часть пространства имен Mono.SIMD, где вызовы методов для специальных векторных типов напрямую отображаются в инструкции SIMD базового процессора процессора.
  • Полная статическая компиляция кода .NET [65] (используется на Mono / iPhone, Mono / PS3).
  • Моно- сопрограммы (используются для реализации кода микропотоков и продолжений , в основном для разработчиков игр). [66]
  • Внедрение сборки в живые процессы. [67]
  • Использование LLVM в качестве JIT-бэкэнда.
  • Cxxi и CppSharp напрямую взаимодействуют с кодом и библиотеками C ++.

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

Системные требования [ править ]

Windows 7, Windows 8, Windows 8.1, Windows 10, macOS или Linux

Связанные проекты [ править ]

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

Кроссплатформенность:

  • Banshee Media Player (остановлен), кроссплатформенный музыкальный медиаплеер, созданный с использованием Mono и Gtk #, а также драйвер десятков библиотек и проектов на основе C # для обработки мультимедиа.
  • Beagle (без сопровождения), поисковая система для систем Unix.
  • Gecko #, привязки для встраивания механизма компоновки, используемого в Mozilla ( Gecko ).
  • Gtk # , оболочки C # для базовых библиотек GTK + и GNOME , написанные на C и доступные в Linux, MacOS и Windows.
  • Mono Migration Analyzer (MoMA) , инструмент, который помогает разработчикам Windows .NET находить области в их коде, которые могут не быть кроссплатформенными и, следовательно, не работать в Mono в Linux и других Unix. Не обновляется с Mono 2.8 (2013); вместо этого используйте Microsoft .NET Portability Analyzer (dotnet-apiport).
  • MonoCross , кроссплатформенный шаблон проектирования модель – представление – контроллер, в котором модель и контроллер используются на разных платформах, а представления уникальны для каждой платформы для оптимизированного пользовательского интерфейса. Для платформы требуются Xamarin.iOS и Xamarin.Android.
  • MvvmCross , кроссплатформенная платформа Model View ViewModel, использующая Xamarin.iOS и Xamarin.Android для разработки мобильных приложений.
  • MonoDevelop - кроссплатформенная интегрированная среда разработки с открытым исходным кодом, поддерживающая создание приложений для ASP.NET, Gtk #, Meego, MonoTouch и Silverlight / Moonlight.
  • Moonlight (прекращено), реализация Silverlight , использующая Mono.
  • OpenTK , управляемая привязка для OpenGL, OpenCL и OpenAL.
  • QtSharp , привязки C # для фреймворка Qt .
  • Resco MobileBusiness , кроссплатформенное решение для разработчиков мобильных клиентов.
  • Resco MobileCRM , кроссплатформенное решение для разработчиков мобильных клиентов, синхронизированное с Microsoft Dynamics CRM .
  • ServiceStack - это высокопроизводительная платформа веб-служб .NET REST с открытым исходным кодом, которая упрощает разработку веб-служб XML, JSON и SOAP.
  • SparkleShare - это клиентское программное обеспечение с открытым исходным кодом, которое предоставляет услуги облачного хранения и синхронизации файлов.
  • Tao (заменен OpenTK), набор графических и игровых привязок (OpenGL, SDL, GLUT, Cg).
  • Xwt , набор инструментов GUI, который сопоставляет вызовы API с вызовами собственной платформы базовой платформы, предоставляя единый унифицированный API для разных платформ и позволяя графическим пользовательским интерфейсам иметь собственный внешний вид на разных платформах. Он позволяет создавать настольные приложения на основе графического интерфейса пользователя, которые работают на нескольких платформах, без необходимости настройки кода для разных платформ. Xwt API сопоставляется с набором собственных элементов управления на каждой поддерживаемой платформе. Функции, недоступные на определенных платформах, эмулируются с помощью собственных виджетов, которые в контексте Xwt называются хостингом. [69] Xwt частично использовался в качестве инструментария GUI (помимо GTK #) при разработке Xamarin Studio . [70]Поддерживаемые серверные механизмы: движок WPF и движок Gtk (с использованием Gtk # ) в Windows , движок Какао (с использованием MonoMac) и движок Gtk (с использованием Gtk #) в Mac OS X и движок Gtk (с использованием Gtk #) в Linux . [71]

macOS:

  • Какао # - оболочки для собственного инструментария macOS ( Какао ) (устарело).
  • Monobjc - набор привязок для программирования под macOS.
  • MonoMac - новые привязки для программирования под macOS, основанные на дизайне API MonoTouch.

Мобильные платформы:

  • MonoDroid. Mono для операционной системы Android. С привязками для Android API.
  • MonoTouch . Моно для iPhone, iPad и iPod Touch. С привязками к API iOS.

Windows:

  • MonoTools для Visual Studio Подключаемый модуль Visual Studio, который позволяет разработчикам Windows ориентироваться на Linux и macOS прямо из Visual Studio и интегрируется с SUSE Studio .

Другие реализации [ править ]

У Microsoft есть версия .NET 2.0, доступная теперь только для Windows XP , она называется CLI с общим исходным кодом (Rotor) . Лицензии Microsoft с общим исходным кодом может быть недостаточно для нужд сообщества (она прямо запрещает коммерческое использование).

Фонд свободного программного обеспечения «s снятый с эксплуатацией Portable.NET проект. [72]

MonoDevelop [ править ]

MonoDevelop - это бесплатная интегрированная среда разработки GNOME, в первую очередь предназначенная для C # и других языков .NET, таких как Nemerle , Boo и Java (через IKVM.NET ), хотя она также поддерживает такие языки, как C , C ++ , Python и Vala . Изначально MonoDevelop был портированием SharpDevelop на Gtk #, но с тех пор он эволюционировал, чтобы удовлетворить потребности разработчиков Mono. IDE включает управление классами, встроенную справку, автозавершение кода, Stetic (дизайнер графического интерфейса), поддержку проекта и интегрированный отладчик.

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

Xamarin.iOS и Xamarin.Android [ править ]

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

Xamarin.iOS [ править ]

Xamarin.iOS (ранее называвшаяся MonoTouch) - это проприетарная библиотека, которая позволяет разработчикам создавать приложения на основе C # и .NET, которые запускаются на устройствах iPhone, iPod и iPad. Он основан на платформе Mono и разработан совместно с Novell. В отличие от приложений Mono, «Приложения» Xamarin.iOS компилируются в машинный код, предназначенный специально для Apple iPhone и iPad . [84] Это необходимо, потому что ядро ​​iOS предотвращает выполнение своевременных компиляторов на устройстве.

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

  • Компиляторы
    • C # из проекта Mono
    • Сторонние компиляторы, такие как RemObject Oxygene, также могут нацеливаться на Xamarin.iOS.
  • Базовые библиотеки .NET
  • SDK для разработки:
    • Компоновщик - используется для объединения только кода, используемого в конечном приложении.
    • mtouch - собственный компилятор и инструмент, используемый для развертывания на целевом устройстве
    • Инструменты интеграции Interface Builder
  • Библиотеки, связывающие собственные API-интерфейсы CocoaTouch
  • Xamarin Studio IDE

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

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

Xamarin.Android [ править ]

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

В августе 2010 года представитель Microsoft Том Ханрахан из Центра технологий открытого исходного кода Microsoft заявил, ссылаясь на иск, поданный Oracle против Google по поводу использования Java в Android, что «тип действий, предпринимаемых Oracle против Google по поводу Java, не является Если бы перенос .NET на Android осуществлялся через Mono, он подпадал бы под действие Соглашения об обещаниях сообщества Microsoft ». [95] [96]

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

  • Моно время выполнения
  • Разработчик пользовательского интерфейса Android [97]
  • Библиотеки:
    • Базовые библиотеки классов .NET
    • Библиотеки, связывающие собственные API Android / Java
  • Инструменты SDK для упаковки, развертывания и отладки
  • Интеграция Xamarin Studio и Visual Studio 2010 для разработки пользовательского интерфейса, удаленной отладки и развертывания.

Лицензия [ править ]

Mono имеет двойную лицензию Xamarin, как и другие продукты, такие как Qt и Mozilla Application Suite . Компилятор C # и инструменты Mono выпускаются под Стандартной общественной лицензией GNU (только GPLv2) (начиная с версии 2.0 Mono исходный код компилятора Mono C # также доступен под лицензией MIT X11 ), [98] библиотеки времени выполнения под GNU Стандартная общественная лицензия ограниченного применения (только LGPLv2) и библиотеки классов согласно лицензии MIT . Это все свободное программное обеспечение и с открытым исходным кодом лицензии и , следовательно , Mono является свободным и открытым исходным кодом.

Лицензия компилятора C # была изменена с GPL на лицензию MIT X11 [99], чтобы разрешить повторное использование кода компилятора в нескольких случаях, когда GPL предотвратила бы такое:

  • Компилятор Mono как услуга
    • Интерактивная оболочка Mono
    • Встраиваемый компилятор C # Mono
  • Реализация динамического связывателя C # 4.0 в Mono.
  • Встроенный парсер MonoDevelop и граф AST

18 марта 2016 года сделка по приобретению Microsoft Xamarin была официально закрыта. [100] 31 марта 2016 года Microsoft объявила на Microsoft Build, что они полностью повторно лицензируют Mono по лицензии MIT даже в сценариях, где ранее была необходима коммерческая лицензия, [101] и Microsoft заявила, что не будет утверждать любые «применимые патенты» против сторон, которые «используют, продают, предлагают для продажи, импортируют или распространяют Mono». [102] [103] Также было объявлено, что Xamarin внесла проект Mono в .NET Foundation. [102]

Патенты Mono и Microsoft [ править ]

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

Банши медиаплеер
GNOME Do

Многие программы, охватывающие ряд приложений, были разработаны с использованием интерфейса прикладного программирования (API) Mono и C #. Некоторые программы, написанные для рабочего стола Linux, включают Banshee , Beagle , F-Spot , Gbrainy , Docky / GNOME Do , MonoTorrent , Pinta и Tomboy . Программа Logos 5 для изучения Библии (версия для OS X) была написана для MacOS.

Ряд видеоигр, таких как The Sims 3 и Second Life (для их языков сценариев ), сервер виртуального мира OpenSimulator или игры, созданные с помощью игровых движков Unity или MonoGame , также используют Mono. [104] OpenRA объединяет свои образы дисков Apple и Linux AppImages с Mono, по сути, удаляя практически все зависимости из игры. [105]

См. Также [ править ]

  • общеязыковая среда выполнения
  • .NET Framework
  • .NET , фреймворк с открытым исходным кодом и преемник .NET Framework
  • Стандартные библиотеки (CLI)
    • Библиотека базовых классов (BCL)
  • Сравнение виртуальных машин приложений
  • DotGNU - зонтичный проект бесплатного программного обеспечения, который включает Portable.NET
  • MonoDevelop - IDE с открытым исходным кодом, ориентированная на платформы Mono и Microsoft .NET Framework.
  • Moonlight (время выполнения) , реализация Silverlight от Microsoft с открытым исходным кодом, разработанная Mono Project
  • Общая языковая инфраструктура с общим исходным кодом - реализация Microsoft .NET с общим исходным кодом, ранее носившая кодовое название Rotor
  • mod_mono - модуль для HTTP-сервера Apache, который позволяет размещать страницы ASP.NET и другие сборки на нескольких платформах с помощью Mono.

Ссылки [ править ]

Цитаты [ править ]

  1. ^ https://github.com/mono/mono/releases/tag/mono-6.12.0.90 ; получено: 6 ноября 2020.
  2. ^ «Примечания к выпуску Mono 6.12.0» .
  3. ^ Введение в Mono на AIX и IBM i
  4. ^ «FAQ: Лицензирование» . Дата обращения 3 июля 2020 .
  5. ^ «Microsoft, чтобы приобрести Xamarin и дать возможность большему количеству разработчиков создавать приложения на любом устройстве» . Официальный блог Microsoft . Проверено 24 февраля 2016 .
  6. ^ "Моно релизы" . Mono-project.com . Проверено 4 апреля 2015 .
  7. ^ "OldReleases" . Mono-project.com . Проверено 17 июля 2013 .
  8. ^ «Примечания к выпуску Mono 1.0» . Mono-project.com . Проверено 17 июля 2013 .
  9. ^ «Mono 1.1.1: Версия для разработки» . Mono-project.com . Проверено 17 июля 2013 .
  10. ^ «Mono 1.2: Примечания к выпуску» . Mono-project.com . Проверено 17 июля 2013 .
  11. ^ «Примечания к выпуску Mono 2.0» . Mono-project.com. 2008-10-06 . Проверено 17 июля 2013 .
  12. ^ «Примечания к выпуску Mono 2.2» . Mono-project.com . Проверено 17 июля 2013 .
  13. ^ "Линейный ИК - Моно" . Mono-project.com . Проверено 17 июля 2013 .
  14. ^ a b «Поддержка SIMD Mono: обеспечение безопасности Mono для игр - Мигель де Икаса» . Tirania.org. 2008-11-03 . Проверено 17 июля 2013 .
  15. ^ a b «Компилятор C # от Mono как услуга для Windows. - Мигель де Икаса» . Tirania.org. 2010-04-27 . Проверено 17 июля 2013 .
  16. ^ a b "CsharpRepl - Mono" . Mono-project.com . Проверено 17 июля 2013 .
  17. ^ «Примечания к выпуску Mono 2.4» . Mono-project.com . Проверено 17 июля 2013 .
  18. ^ «Примечания к выпуску Mono 2.6» . Mono-project.com . Проверено 17 июля 2013 .
  19. ^ «Примечания к выпуску Mono 2.8» . Mono-project.com . Проверено 17 июля 2013 .
  20. ^ «Примечания к выпуску Mono 2.10» . Mono-project.com . Проверено 17 июля 2013 .
  21. ^ «Примечания к выпуску Mono 3.0» . Mono-project.com . Проверено 23 сентября 2013 .
  22. ^ «Примечания к выпуску Mono 3.2» . Mono-project.com . Проверено 23 сентября 2013 .
  23. ^ «Примечания к выпуску Mono 3.4» . Mono-project.com . Проверено 4 апреля 2015 .
  24. ^ «Примечания к выпуску Mono 3.6» . Mono-project.com . Проверено 4 апреля 2015 .
  25. ^ «Примечания к выпуску Mono 3.8» . Mono-project.com . Проверено 4 апреля 2015 .
  26. ^ «Примечания к выпуску Mono 3.10» . Mono-project.com . Проверено 4 апреля 2015 .
  27. ^ «Примечания к выпуску Mono 3.12» . Mono-project.com . Проверено 4 апреля 2015 .
  28. ^ «Примечания к выпуску Mono 4.0» . Mono-project.com . Проверено 3 мая 2015 .
  29. ^ «Примечания к выпуску Mono 5.0» . Mono-project.com . Проверено 13 мая 2017 .
  30. ^ «Примечания к выпуску Mono 5.2.0» .
  31. ^ «Примечания к выпуску Mono 5.4.0» .
  32. ^ «Примечания к выпуску Mono 5.8.0» .
  33. ^ «Примечания к выпуску Mono 5.10.0» .
  34. ^ «Примечания к выпуску Mono 5.12.0» .
  35. ^ «Примечания к выпуску Mono 5.14.0» .
  36. ^ «Примечания к выпуску Mono 5.16.0» .
  37. ^ «Примечания к выпуску Mono 5.18.0» .
  38. ^ Bonisteel, Стивен (23 июня 2000). «Microsoft не видит впереди ничего, кроме .NET» . ZDNet. Архивировано из оригинала на 5 ноября 2011 года . Проверено 5 апреля 2011 года .
  39. ^ "ECMA-335-Part-I-IV - ECMA-335, 1-е издание, декабрь 2001 г." (PDF) .
  40. ^ Уилкокс, Джо; Шенкленд, Стивен (28 июня 2001 г.). «Microsoft переходит к совместному использованию кода» . ZDNet.
  41. ^ «[Моносписок] Моно ранняя история» . 2003-10-13. Архивировано из оригинала 2011-06-06 . Проверено 30 марта 2005 .
  42. ^ "Выпущена реализация OSS .NET Mono 1.0 - Ars Technica" . ArsTechnica . Проверено 23 октября 2009 .
  43. ^ «Поддерживаемые платформы» . Моно-сайт.
  44. ^ Koep, Павел (2011-05-02). «Сотрудники говорят, что сотни людей уволены в офисе Novell Provo» . KSL-TV . Проверено 7 мая 2011 .
  45. Перейти ↑ J. Vaughan-Nichols, Steven (2011-05-04). «Моно мертв? Умирает Novell?» . ZDNet . Проверено 7 мая 2011 .
  46. ^ Кларк, Гэвин (2011-05-03). «Клоны .NET Android и iOS, удаленные Attachmate» . Реестр . Проверено 7 мая 2011 .
  47. ^ «Объявление Xamarin - Мигель де Икаса» . Tirania.org. 2011-05-16 . Проверено 17 июля 2013 .
  48. ^ "Смерть и возрождение Моно" . infoq.com. 2011-05-17 . Проверено 29 мая 2011 . Даже если они его не поддерживают, они владеют продуктом, который напрямую конкурирует с будущими предложениями Xamarin. Без какого-либо юридического соглашения между Attachmate и Xamarin последний столкнется с устрашающей перспективой доказать, что их новая разработка не использует никаких технологий, которые использовались в старой. Учитывая, что на самом деле это просто оболочка для собственного API, было бы трудно доказать, что у вас есть реализация для чистой комнаты, даже для команды, которая не была хорошо знакома с кодом Attachmate.
  49. ^ «Партнер SUSE и Xamarin для ускорения инноваций и поддержки клиентов и сообщества Mono» . Novell . 2011-07-18 . Проверено 18 июля 2011 . Соглашение предоставляет Xamarin широкую бессрочную лицензию на всю интеллектуальную собственность, включая Mono, MonoTouch, Mono для Android и Mono Tools для Visual Studio. Xamarin также предоставит техническую поддержку клиентам SUSE, использующим продукты на основе Mono, и возьмет на себя руководство проектом сообщества с открытым исходным кодом Mono.
  50. ^ де Икаса, Мигель (2011-07-18). «Партнерство Novell / Xamarin вокруг Mono» . Проверено 18 июля 2011 .
  51. ^ а б де Икаса, Мигель (2011-03-07). «GDC 2011» . Проверено 11 марта 2011 . У нас нет планов по созданию WPF. У нас просто нет людских ресурсов для создания реализации в разумные сроки (...) Для инструментов, которые в основном основаны на OpenGL / DirectX, используйте Windows.Forms, имея в виду, что некоторые исправления ошибок или работа с их часть может понадобиться, так как наши Windows.Forms активно не разрабатываются.
  52. ^ "Список совместимости с моно" .
  53. ^ «Дорожная карта проекта моно - моно» . Mono-project.com . Проверено 17 июля 2013 .
  54. ^ "MoonlightRoadmap" . Моно Команда . Проверено 8 ноября 2008 .
  55. ^ "Выпуск Moonlight 2, Roadmap to Moonlight 3 и 4 - Мигель де Икаса" . Tirania.org. 2009-12-17 . Проверено 17 июля 2013 .
  56. ^ "Moonlight 3.0 Preview 1 - Мигель де Икаса" . Tirania.org. 2010-02-03 . Проверено 17 июля 2013 .
  57. ^ «Xamarin отказывается от технологии Silverlight для Linux» .
  58. ^ а б «Экма-335» .
  59. ^ "Technet.com" . Архивировано из оригинала на 2013-06-22 . Проверено 7 июля 2009 .
  60. ^ «Доступ к базе данных - моно» .
  61. ^ "Моно LLVM" . Моно .
  62. ^ a b c «Компактный сборщик мусора» . mono-project.com . Проверено 16 декабря 2008 .
  63. Перейти ↑ Boehm, Hans-J. «Преимущества и недостатки консервативной сборки мусора» . Xerox PARC . Архивировано из оригинала на 2013-07-24 . Проверено 16 декабря 2008 .
  64. ^ «Архитектура .NET Framework» . официальная документация Mono.
  65. ^ де Икаса, Мигель. «Статическая компиляция в моно» .
  66. ^ «Продолжение - Моно» .
  67. ^ де Икаса, Мигель. «Monovation: внедрение сборки в рабочие процессы» .
  68. ^ «Поддерживаемые платформы - моно» .
  69. Narayanaswamy, Anand (23 ноября 2012 г.). «Создавайте кроссплатформенные приложения с Xwt» . InfoQ . Архивировано из оригинала на 2016-04-15 . Проверено 15 апреля 2016 .
  70. де Икаса, Мигель (22 февраля 2013 г.). «Создание Xamarin Studio» . InfoQ . Архивировано из оригинала на 2016-04-15 . Проверено 15 апреля 2016 .
  71. ^ «Xwt, прочитай меня» . Xwt на GitHub . 15 января 2012. Архивировано из оригинала на 2016-04-16 . Проверено 15 апреля 2016 .
  72. ^ "Проект DotGNU" . Проверено 2 июня 2014 .
  73. ^ "FAQ" . os.xamarin.com. 2011-08-01. MonoTouch - это коммерческий продукт, основанный на проекте Mono с открытым исходным кодом и лицензируемый для каждого разработчика.
  74. ^ "Моно переизданный MIT" . www.mono-project.com. 2016-03-31.
  75. ^ «Xamarin для всех» . blog.xamarin.com. 2016-03-31. сегодня мы объявляем о нашем стремлении открыть исходный код Xamarin SDK для Android, iOS и Mac по лицензии MIT в ближайшие месяцы.
  76. ^ де Икаса, Мигель. «MonoTouch 1.0 выходит в эфир» .
  77. ^ "MonoTouch 2.0.0" . Xamarin .
  78. ^ "MonoTouch 3.0.0" . Xamarin .
  79. ^ "MonoTouch 4.0.0" . Xamarin .
  80. ^ "MonoTouch 5.0" . Xamarin .
  81. ^ "MonoTouch 6.0" . Xamarin .
  82. ^ «Xamarin.iOS 6.2» . Xamarin .
  83. ^ «Xamarin.iOS 6.4» . Xamarin .
  84. ^ «MonoTouch и iPhone 4» . Приложения, созданные с помощью MonoTouch, - это нативные приложения, неотличимые от других нативных приложений.
  85. ^ "Apple целится в Adobe ... или Android?" .
  86. ^ «Заявление Apple о рекомендациях по обзору App Store» . Основываясь на их комментариях, сегодня мы вносим некоторые важные изменения в нашу лицензию на программу разработчиков iOS в разделах 3.3.1, 3.3.2 и 3.3.9, чтобы ослабить некоторые ограничения, введенные ранее в этом году. В частности, мы снимаем все ограничения на инструменты разработки, используемые для создания приложений для iOS, при условии, что полученные приложения не загружают код. Это должно дать разработчикам необходимую им гибкость при сохранении необходимой безопасности.
  87. ^ «Отличные новости для пользователей MonoTouch» . С этими новыми терминами двусмысленность исчезла, и любители C # и энтузиасты могут вернуться к использованию MonoTouch. Разработчики, которым нравится сборка мусора и их строго типизированные языки, могут возобновить свою работу.
  88. ^ "Как лицензируется Mono для Android?" . Mono for Android FAQ. 2011-08-28 . Проверено 29 марта 2012 .
  89. ^ «Проект Novell Mono по внедрению разработки .Net на Android» . NetworkWorld.
  90. ^ «Проект Novell Mono по внедрению разработки .Net на Android» . InfoWorld.
  91. ^ «MonoDroid: поддержка .NET для Android» . TechieBuzz.
  92. ^ «Mono для Android переносит C # в Android» . Heise Online . 2011-04-07 . Проверено 7 апреля 2011 .
  93. ^ "Novell (Mono / C #) разрабатывает MonoDroid" . Android-сообщество. Это упростит разработчикам создание кроссплатформенных приложений, а также перенесение некоторых из существующих приложений, созданных с помощью MonoTouch, на Android.
  94. ^ «Моно для Android» . H-Online. Наше видение состоит в том, чтобы позволить разработчикам повторно использовать свой движок и код бизнес-логики на всех мобильных платформах и заменять код пользовательского интерфейса API-интерфейсом для конкретной платформы.
  95. ^ «Microsoft не остановит (Mono) .NET на Android» . TechWorld. То, что Oracle предпринимает против Google по поводу Java, не произойдет. Если бы перенос .NET на Android осуществлялся через Mono, он подпадал бы под действие Соглашения Microsoft Community Promise.
  96. ^ «Microsoft заявляет, что .NET для Android безопасна, никаких судебных разбирательств, как Oracle» . Разработчик Fusion.
  97. ^ «Xamarin Designer для Android» . Журнал Visual Studio. 14 мая Xamarin анонсировала Mono для Android 4.2.
  98. ^ "Mono C # Compiler под лицензией MIT X11" . Novell Inc. 8 апреля 2008 г. Архивировано из оригинала на 2008-05-13 . Проверено 9 апреля 2008 .
  99. ^ де Икаса, Мигель. «Компилятор Mono C # теперь также лицензирован MIT X11» .
  100. ^ «Xamarin для всех» . Блог Xamarin . Xamarin. 31 марта 2016 года Архивировано из оригинала на 2016-04-12 . Проверено 12 апреля 2016 .
  101. Андерсон, Тим (31 марта 2016 г.). «Microsoft сделает инструменты и код Xamarin бесплатными и с открытым исходным кодом» . Реестр .
  102. ^ a b Феррайра, Бруно (31 марта 2016 г.). «Xamarin теперь поставляется бесплатно с Visual Studio» . Технический отчет .
  103. ^ «Патентное обещание Microsoft для Mono» . Моно на GitHub . Моно проект. 2016-03-28. Архивировано из оригинала на 2016-04-12 . Проверено 12 апреля 2016 .
  104. ^ «Компании, использующие Mono» . Монопроект . Монопроект . Проверено 30 августа 2015 года .
  105. ^ Пол Чоте: OpenRA: Playtest 20190825 , 2019-08-25

Источники [ править ]

  • Эта статья включает текст с домашней страницы Mono , которая тогда находилась под лицензией GNU Free Documentation License .
  • де Икаса, Мигель (13 октября 2003 г.). «[Моносписок] Моно ранняя история». . Архивировано из оригинального (списка рассылки) 6 июня 2011 года . Проверено 6 декабря 2005 года .
  • Дамбилл, Эдд (11 марта 2004 г.). «Станет ли Mono предпочтительной платформой для разработки под Linux?» . ONLamp . Проверено 14 октября 2006 года .
  • Лоли-Керу, Евгения (22 февраля 2005 г.). "Моно-приложения? Множество!" . OSNews . Проверено 6 декабря 2005 года .
  • Кернер, Шон Майкл (18 ноября 2005 г.). «Монопроект становится виртуальным» . Интернет-новости . Проверено 14 октября 2006 года .
  • Кернер, Шон Майкл (9 ноября 2006 г.). «Спустя несколько месяцев Novell поставляет Mono 1.2» . internetnews.com.
  • Норткатт, Кори (12 октября 2006 г.). «В мире mod_mono» . Вездесущность. Архивировано из оригинального 23 февраля 2007 года . Проверено 14 октября 2006 года .
  • Кэмпбелл, Шон (8 октября 2008 г.). «Интервью с Джозефом Хиллом - менеджером по продукту - Mono - Novell» . HSIB . Проверено 8 октября 2008 года .
  • Смит, Тим (9 сентября 2010 г.). «Краткое введение в патентные вопросы Java и .NET» . InfoQ . Проверено 13 сентября 2010 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Главная страница MonoTouch для переноса на портативные устройства Apple Inc.