Моно (программное обеспечение)


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

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

История

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

Когда Microsoft впервые объявила о своей .NET Framework в июне 2000 г., она была описана как «новая платформа, основанная на интернет-стандартах» [44] , а в декабре того же года лежащая в основе Common Language Infrastructure была опубликована как открытый стандарт «ECMA-335». ", [45] открывая потенциал для независимых реализаций. [46] Мигель де Икаса из Ximian считал, что .NET может повысить производительность труда программистов, и начал исследовать, возможна ли версия для Linux. [47] Понимая, что их небольшая команда не может рассчитывать на создание и поддержку полноценного продукта, они запустили проект с открытым исходным кодом Mono 19 июля 2001 г.Конференция О’Райли .

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

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

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

Текущее состояние и дорожная карта

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

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

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

Лунный свет

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

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

Моно компоненты

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

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

Основные компоненты включают компилятор C#, виртуальную машину для Common Language Infrastructure и основные библиотеки классов. Эти компоненты основаны на стандартах Ecma-334 и Ecma-335 , [64] что позволяет Mono предоставлять соответствующую стандартам, бесплатную виртуальную машину CLI с открытым исходным кодом . Microsoft выпустила заявление, которое распространяется на оба стандарта в соответствии с их лицензией Community Promise . [65]

Стек разработки 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 отслеживает разработку компонентов базы данных на своем веб-сайте. [66]

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

Каркасная архитектура

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

  • Механизм выполнения кода
  • Библиотеки классов
    • Библиотека базовых классов
    • Библиотеки классов совместимости .NET
    • Библиотеки моно-специфических классов:
      • Кроссплатформенные библиотеки классов для Mono и .NET (Gtk#, Mono.Cecil, Mono.CSharp, Text.Templating)
      • Библиотеки классов для Unix (POSIX, Filesystem in Userspace (FUSE), curses)
      • Библиотеки классов для конкретных платформ (привязки для: Mac, iOS, Android, MeeGo)
  • CLI-сборки
  • Метаданные интерфейса командной строки
  • Общеязыковая среда выполнения Mono
    • Совместимость с общеязыковой инфраструктурой ECMA / общеязыковой средой выполнения .NET .
    • Моноспецифические улучшения:
      • Поддержка моно 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, в Linux будет создан файл foo.exe.so). В этом режиме работы компилируется большая часть кода, который обычно выполняется во время выполнения. Есть некоторые исключения, такие как батуты и другой административный код, для работы которых по-прежнему требуется 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. [67]

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

Начиная с Mono 2.8, среда выполнения Mono поставляется с двумя сборщиками мусора : сборщиком поколений и консервативным сборщиком мусора Boehm-Demers-Weiser . Сборщик мусора Boehm может обнаруживать утечки памяти в определенных классах приложений, что делает его непригодным для некоторых долго работающих серверных приложений. [68] [69] Mono переключился на Simple Generational GC (SGen-GC) в качестве сборщика по умолчанию в версии 3.1.1.

Сборщик мусора SGen имеет много преимуществ перед традиционным консервативным сканером. Он использует сборку мусора поколенийкогда новые объекты выделяются из питомника, во время цикла сборки мусора все уцелевшие объекты переносятся в пул памяти более старого поколения. Идея состоит в том, что многие объекты являются временными и могут быть быстро собраны, и только несколько объектов являются долгосрочными объектами, которые живут в течение всей жизни приложения. Для повышения производительности этот сборщик назначает пулы памяти каждому потоку, чтобы позволить потокам выделять новые блоки памяти без необходимости координировать свои действия с другими потоками. Миграция объектов из питомника в старое поколение выполняется путем копирования данных из питомника в пул старого поколения и обновления любых активных указателей, которые указывают на данные, чтобы они указывали на новое местоположение. Это может быть дорого для больших объектов, поэтому Mono's SGen использует отдельный пул памяти для больших объектов (Large Object Section) и использует для этих объектов алгоритм пометки и очистки.[68]

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

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

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

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

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

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

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

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

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

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

Моноспецифические инновации

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

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

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

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

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 (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 , набор инструментов с графическим интерфейсом, который сопоставляет вызовы API с вызовами собственной платформы базовой платформы, предоставляя единый унифицированный API на разных платформах и позволяя графическим пользовательским интерфейсам иметь собственный внешний вид на разных платформах. Это позволяет создавать настольные приложения с графическим интерфейсом, которые работают на нескольких платформах, без необходимости настраивать код для разных платформ. Xwt API сопоставляется с набором собственных элементов управления на каждой поддерживаемой платформе. Функции, недоступные на определенных платформах, эмулируются с помощью собственных виджетов, что в контексте Xwt называется хостингом. [75] Xwt частично использовался в качестве инструментария GUI (помимо GTK#) при разработке Xamarin Studio . [76]Поддерживаемые «внутренние» движки: движок WPF и движок Gtk (с использованием Gtk# ) в Windows , движок Cocoa (с использованием MonoMac) и движок Gtk (с использованием Gtk#) в Mac OS X и движок Gtk (с использованием Gtk#) в Linux . [77]

макОС:

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

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

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

Окна:

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

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

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

Выведенный из эксплуатации проект Portable.NET Free Software Foundation . [78]

МоноДевелопмент

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 . Ранее доступная только для коммерческого лицензирования, [79] после приобретения Microsoft Xamarin в 2016 году сама среда выполнения Mono была повторно лицензирована по лицензии MIT [80] , и Xamarin.iOS и Xamarin.Android стали бесплатными и открытыми. [81]

Xamarin.iOS

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

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

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

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

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

Xamarin.Android

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

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

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

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

Лицензия

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

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

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

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

Патенты Mono и Microsoft

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

Банши медиаплеер
ГНОМ Делать

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

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

Смотрите также

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

использованная литература

Цитаты

  1. ^ https://www.mono-project.com/docs/about-mono/releases/6.12.0.122/ ; получено: 18 августа 2021 г.
  2. ^ «Теги · моно / моно · GitHub» .
  3. ^ Знакомство с Mono в AIX и IBM i
  4. ^ «Часто задаваемые вопросы: Лицензирование» . Проверено 3 июля 2020 г. .
  5. ^ «Microsoft приобретет Xamarin и предоставит большему количеству разработчиков возможность создавать приложения на любом устройстве» . Официальный блог Майкрософт . Проверено 24 февраля 2016 г. .
  6. ^ "Моно-релизы" . Mono-project.com . Проверено 4 апреля 2015 г. .
  7. ^ "Старые выпуски" . Mono-project.com . Проверено 17 июля 2013 г. .
  8. ^ «Примечания к выпуску Mono 1.0» . Mono-project.com . Проверено 17 июля 2013 г. .
  9. ^ «Моно 1.1.1: Разрабатываемый выпуск» . Mono-project.com . Проверено 17 июля 2013 г. .
  10. ^ «Моно 1.2: Примечания к выпуску» . Mono-project.com . Проверено 17 июля 2013 г. .
  11. ^ «Примечания к выпуску Моно 2.0» . Mono-project.com. 2008-10-06 . Проверено 17 июля 2013 г. .
  12. ^ «Примечания к выпуску Моно 2.2» . Mono-project.com . Проверено 17 июля 2013 г. .
  13. ^ «Линейный ИК-моно» . Mono-project.com . Проверено 17 июля 2013 г. .
  14. ^ a b «Поддержка SIMD в Mono: обеспечение безопасности Mono для игр - Мигель де Икаса» . Тирания.org. 2008-11-03 . Проверено 17 июля 2013 г. .
  15. ^ a b «Компилятор C # Mono как услуга в Windows. - Мигель де Икаса» . Тирания.org. 27 апреля 2010 г. . Проверено 17 июля 2013 г. .
  16. ^ а б "CsharpRepl - Моно" . Mono-project.com . Проверено 17 июля 2013 г. .
  17. ^ «Примечания к выпуску Моно 2.4» . Mono-project.com . Проверено 17 июля 2013 г. .
  18. ^ «Примечания к выпуску Моно 2.6» . Mono-project.com . Проверено 17 июля 2013 г. .
  19. ^ «Примечания к выпуску Моно 2.8» . Mono-project.com . Проверено 17 июля 2013 г. .
  20. ^ «Примечания к выпуску Моно 2.10» . Mono-project.com . Проверено 17 июля 2013 г. .
  21. ^ «Примечания к выпуску Моно 3.0» . Mono-project.com . Проверено 23 сентября 2013 г. .
  22. ^ «Примечания к выпуску Моно 3.2» . Mono-project.com . Проверено 23 сентября 2013 г. .
  23. ^ «Примечания к выпуску Моно 3.4» . Mono-project.com . Проверено 4 апреля 2015 г. .
  24. ^ «Примечания к выпуску Моно 3.6» . Mono-project.com . Проверено 4 апреля 2015 г. .
  25. ^ «Примечания к выпуску Моно 3.8» . Mono-project.com . Проверено 4 апреля 2015 г. .
  26. ^ «Примечания к выпуску Моно 3.10» . Mono-project.com . Проверено 4 апреля 2015 г. .
  27. ^ «Примечания к выпуску Моно 3.12» . Mono-project.com . Проверено 4 апреля 2015 г. .
  28. ^ «Примечания к выпуску Моно 4.0» . Mono-project.com . Проверено 3 мая 2015 г. .
  29. ^ «Примечания к выпуску Моно 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. ^ «Примечания к выпуску Mono 6.0.0» .
  39. ^ «Примечания к выпуску Mono 6.4.0» .
  40. ^ «Примечания к выпуску Mono 6.6.0» .
  41. ^ «Примечания к выпуску Mono 6.8.0» .
  42. ^ «Примечания к выпуску Mono 6.10.0» .
  43. ^ «Примечания к выпуску Mono 6.12.0» .
  44. ^ Бонистил, Стивен (23 июня 2000 г.). «Microsoft не видит впереди ничего, кроме .NET» . ZDNet. Архивировано из оригинала 5 ноября 2011 года . Проверено 5 апреля 2011 г.
  45. ^ «ECMA-335-Part-I-IV - ECMA-335, 1-е издание, декабрь 2001 г.» (PDF) .
  46. ^ Уилкокс, Джо; Шенкленд, Стивен (28 июня 2001 г.). «Microsoft стремится делиться кодом» . ZDNet.
  47. ^ "[Моно-список] Ранняя история моно" . 2003-10-13. Архивировано из оригинала 06.06.2011 . Проверено 30 марта 2005 г. .
  48. ^ «Выпущена реализация OSS .NET Mono 1.0 - Ars Technica» . АрсТехника . Проверено 23 октября 2009 г. .
  49. ^ «Поддерживаемые платформы» . Моно сайт.
  50. ^ Кеп, Пол (2011-05-02). «Сотрудники говорят, что сотни уволены в офисе Novell в Прово» . КСЛ-ТВ . Проверено 7 мая 2011 г. .
  51. ^ Дж. Воан-Николс, Стивен (04 мая 2011 г.). «Моно мертв? Novell умирает?» . ЗДНет . Проверено 7 мая 2011 г. .
  52. Кларк, Гэвин (03 мая 2011 г.). «Клоны .NET Android и iOS, удаленные с помощью Attachmate» . Регистр . Проверено 7 мая 2011 г. .
  53. ^ "Объявление Xamarin - Мигель де Икаса" . Тирания.org. 2011-05-16 . Проверено 17 июля 2013 г. .
  54. ^ "Смерть и возрождение Моно" . infoq.com. 2011-05-17 . Проверено 29 мая 2011 г. . Даже если они его не поддерживают, у них есть продукт, который напрямую конкурирует с будущими предложениями Xamarin. Без какой-либо юридической договоренности между Attachmate и Xamarin последний столкнулся бы с пугающей перспективой доказать, что их новая разработка не использует никаких технологий, которые использовались в старой. Учитывая, что на самом деле это всего лишь оболочка для нативного API, было бы трудно доказать, что у вас была чистая реализация, даже для команды, которая не была хорошо знакома с кодом Attachmate.
  55. ^ «Партнерство SUSE и Xamarin для ускорения инноваций и поддержки клиентов и сообщества Mono» . Новелл . 2011-07-18 . Проверено 18 июля 2011 г. . Соглашение предоставляет Xamarin широкую бессрочную лицензию на всю интеллектуальную собственность, охватывающую Mono, MonoTouch, Mono для Android и Mono Tools для Visual Studio. Xamarin также будет оказывать техническую поддержку клиентам SUSE, использующим продукты на основе Mono, и возьмет на себя управление проектом сообщества Mono с открытым исходным кодом.
  56. ^ де Икаса, Мигель (18 июля 2011 г.). «Партнерство Novell/Xamarin вокруг Mono» . Проверено 18 июля 2011 г. .
  57. ^ a b де Икаса, Мигель (2011-03-07). «ГДС 2011» . Проверено 11 марта 2011 г. . У нас нет планов по созданию WPF. У нас просто нет рабочей силы для создания реализации в разумные сроки (...) Для инструментов, которые в основном основаны на OpenGL/DirectX, используйте Windows.Forms, имея в виду, что некоторые исправления ошибок или обходные пути на их часть может понадобиться, так как наша Windows.Forms активно не развивается.
  58. ^ «Список моносовместимости» .
  59. ^ "Дорожная карта проекта Mono - Mono" . Mono-project.com . Проверено 17 июля 2013 г. .
  60. ^ "Дорожная карта лунного света" . Команда Моно . Проверено 8 ноября 2008 г. .
  61. ^ «Выпуск Moonlight 2, Дорожная карта Moonlight 3 и 4 - Мигель де Икаса» . Тирания.org. 2009-12-17 . Проверено 17 июля 2013 г. .
  62. ^ "Moonlight 3.0 Preview 1 - Мигель де Икаса" . Тирания.org. 2010-02-03 . Проверено 17 июля 2013 г. .
  63. ^ «Xamarin отказывается от своей технологии Silverlight для Linux» .
  64. ^ а б "Экма-335" .
  65. ^ "Технет.com" . Архивировано из оригинала 22 июня 2013 г. Проверено 7 июля 2009 г. .
  66. Викискладе есть медиафайлы по теме доступа к базе данных .
  67. ^ "Моно LLVM" . Моно .
  68. ^ a b "Уплотнение GC" . mono-project.com . Проверено 16 декабря 2008 г. .
  69. ^ Бём, Ханс-Дж. «Преимущества и недостатки консервативной сборки мусора» . Ксерокс ПАРК . Архивировано из оригинала 24 июля 2013 г. Проверено 16 декабря 2008 г. .
  70. ^ «Архитектура .NET Framework» . официальная документация по моно.
  71. ^ де Икаса, Мигель. «Статическая компиляция в моно» .
  72. ^ "Продолжения - Моно" .
  73. ^ де Икаса, Мигель. «Monovation: внедрение сборки в живые процессы» .
  74. ^ «Поддерживаемые платформы — моно» .
  75. ^ Нараянасвами, Ананд (23 ноября 2012 г.). «Создание кроссплатформенных приложений с помощью Xwt» . Информация . Архивировано из оригинала 15 апреля 2016 г. Проверено 15 апреля 2016 г. .
  76. де Икаса, Мигель (22 февраля 2013 г.). «Создание Xamarin Studio» . Информация . Архивировано из оригинала 15 апреля 2016 г. Проверено 15 апреля 2016 г. .
  77. Викискладе есть медиафайлы по теме Xwt . Xwt на GitHub . 15 января 2012 г. Архивировано из оригинала 16 апреля 2016 г .. Проверено 15 апреля 2016 г. .
  78. ^ "Проект DotGNU" . Проверено 2 июня 2014 г.
  79. ^ "Часто задаваемые вопросы" . os.xamarin.com. 01.08.2011. MonoTouch — это коммерческий продукт, основанный на проекте Mono с открытым исходным кодом и лицензируемый для каждого разработчика.
  80. ^ "Моно перелицензировано MIT" . www.mono-project.com. 2016-03-31.
  81. ^ "Xamarin для всех" . blog.xamarin.com. 2016-03-31. сегодня мы объявляем о своем намерении открыть исходный код Xamarin SDK для Android, iOS и Mac под лицензией MIT в ближайшие месяцы.
  82. ^ де Икаса, Мигель. «MonoTouch 1.0 выходит в эфир» .
  83. ^ "Монотач 2.0.0" . Ксамарин .
  84. ^ «Монотач 3.0.0» . Ксамарин .
  85. ^ «Монотач 4.0.0» . Ксамарин .
  86. ^ "Монотач 5.0" . Ксамарин .
  87. Викискладе есть медиафайлы по теме MonoTouch 6.0 . Ксамарин .
  88. ^ «Xamarin.iOS 6.2» . Ксамарин .
  89. ^ «Xamarin.iOS 6.4» . Ксамарин .
  90. ^ «iOS 7 и Xamarin: готовы, когда вы готовы» . Блог Xamarin . 2013-09-18 . Проверено 20 марта 2021 г. .
  91. ^ «iOS 8 больше и лучше с Xamarin» . Блог Xamarin . 2014-09-10 . Проверено 20 марта 2021 г. .
  92. ^ «Xamarin для iOS 9: более глубокий поиск» . Блог Xamarin . 2015-09-16 . Проверено 20 марта 2021 г. .
  93. ^ «Основные обновления: iOS 10, Android Nougat и другие вкусности» . Блог Xamarin . 2016-09-13 . Проверено 20 марта 2021 г. .
  94. ^ спулиот. «Примечания к выпуску Xamarin.iOS 11.0 — Xamarin» . docs.microsoft.com . Проверено 20 марта 2021 г. .
  95. ^ спулиот. «Примечания к выпуску Xamarin.iOS 12.0 — Xamarin» . docs.microsoft.com . Проверено 20 марта 2021 г. .
  96. ^ спулиот. «Примечания к выпуску Xamarin.iOS 13.0 — Xamarin» . docs.microsoft.com . Проверено 20 марта 2021 г. .
  97. ^ спулиот. «Примечания к выпуску Xamarin.iOS 14.0 — Xamarin» . docs.microsoft.com . Проверено 20 марта 2021 г. .
  98. Викискладе есть медиафайлы по теме MonoTouch и iPhone 4 . Приложения, созданные с помощью MonoTouch, являются собственными приложениями, неотличимыми от других собственных приложений.
  99. ^ «Apple нацеливается на Adobe… или Android?» .
  100. ^ «Заявление Apple о правилах обзора App Store» . Основываясь на их отзывах, сегодня мы вносим важные изменения в нашу лицензию на Программу для разработчиков iOS в разделах 3.3.1, 3.3.2 и 3.3.9, чтобы ослабить некоторые ограничения, введенные ранее в этом году. В частности, мы ослабляем все ограничения на инструменты разработки, используемые для создания приложений iOS, при условии, что полученные приложения не загружают какой-либо код. Это должно дать разработчикам гибкость, которую они хотят, сохраняя при этом необходимую нам безопасность.
  101. ^ «Отличные новости для пользователей MonoTouch» . Благодаря этим новым терминам двусмысленность исчезла, и любители и энтузиасты C# могут вернуться к использованию MonoTouch. Разработчики, которым нравится сборка мусора и их строго типизированные языки, могут возобновить свою работу.
  102. ^ «Как лицензируется Mono для Android?» . Часто задаваемые вопросы о моно для Android. 2011-08-28 . Проверено 29 марта 2012 г. .
  103. ^ «Проект Novell Mono, переносящий разработку .Net на Android» . Сетевой мир.
  104. ^ «Проект Novell Mono, переносящий разработку .Net на Android» . ИнфоМир.
  105. ^ «MonoDroid: поддержка .NET появится на Android» . ТечиБазз.
  106. ^ «Mono для Android переносит C # на Android» . Хейз Онлайн . 2011-04-07 . Проверено 7 апреля 2011 г. .
  107. ^ «Novell (Mono/C#) разрабатывает MonoDroid» . Android-сообщество. Это облегчит разработчикам создание кроссплатформенных приложений, а также перенос некоторых существующих приложений, созданных с использованием MonoTouch, на Android.
  108. ^ «Моно для Android» . H-онлайн. Наше видение состоит в том, чтобы позволить разработчикам повторно использовать свой код движка и бизнес-логики на всех мобильных платформах и заменить код пользовательского интерфейса API для конкретной платформы.
  109. ^ «Microsoft не остановит (Mono) .NET на Android» . ТехМир. Действия, которые Oracle предпринимает против Google из-за Java, не произойдут. Если бы перенос .NET на Android осуществлялся через Mono, он подпадал бы под действие Соглашения Microsoft Community Promise.
  110. ^ «Microsoft говорит, что .NET на Android безопасен, никаких судебных разбирательств, как у Oracle» . Разработчик Fusion.
  111. ^ «Конструктор Xamarin для Android» . Журнал Visual Studio. 14 мая Xamarin анонсировала Mono для Android 4.2.
  112. ^ «Компилятор Mono C # под лицензией MIT X11» . Novell Inc., 08 апреля 2008 г. Архивировано из оригинала 13 мая 2008 г. Проверено 9 апреля 2008 г. .
  113. ^ де Икаса, Мигель. «Компилятор Mono C# теперь также имеет лицензию MIT X11» .
  114. ^ "Xamarin для всех" . Блог Xamarin . Ксамарин. 31 марта 2016 г. Архивировано из оригинала 12 апреля 2016 г .. Проверено 12 апреля 2016 г. .
  115. Андерсон, Тим (31 марта 2016 г.). «Microsoft сделает инструменты и код Xamarin бесплатными с открытым исходным кодом» . Регистр .
  116. ↑ a b Феррайра , Бруно (31 марта 2016 г.). «Xamarin теперь поставляется бесплатно с Visual Studio» . Технический отчет .
  117. ^ «Патентное обещание Microsoft для моно» . Моно на GitHub . Моно проект. 2016-03-28. Архивировано из оригинала 12 апреля 2016 г. Проверено 12 апреля 2016 г. .
  118. ^ «Компании, использующие Mono» . Монопроект . Монопроект . Проверено 30 августа 2015 г.
  119. ↑ Пол Чот: OpenRA : Playtest 20190825 , 25 августа 2019 г.

Источники

  • Эта статья включает текст с домашней страницы Mono , которая тогда находилась под лицензией GNU Free Documentation License .
  • де Икаса, Мигель (13 октября 2003 г.). «[Моно-список] Ранняя история Моно». . Архивировано из оригинала (списка рассылки) 6 июня 2011 года . Проверено 6 декабря 2005 г.
  • Дамбилл, Эдд (11 марта 2004 г.). «Станет ли Mono предпочтительной платформой для разработки под Linux?» . ONLamp . Проверено 14 октября 2006 г.
  • Лоли-Керу, Юджиния (22 февраля 2005 г.). «Моноприложения? Много!» . ОСНовости . Проверено 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» . Информация . Проверено 13 сентября 2010 г.

внешняя ссылка

  • Официальный сайт
  • Главная страница MonoTouch для переноса на портативные устройства Apple Inc.
Получено с " https://en.wikipedia.org/w/index.php?title=Mono_(программное обеспечение )&oldid=1061626372 "