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

Мононуклеоз
Моно проект logo.svg
Моно architecture.svg
Схема моно архитектуры
Автор (ы) оригинала Ximian
Разработчики) .NET Foundation и Xamarin ( дочерняя компания Microsoft )
Первый выпуск 30 июня 2004 г . ; 17 лет назад ( 2004-06-30 )
Стабильный выпуск
6.12.0.122  Отредактируйте это в Викиданных / 23 февраля 2021 г . ; 7 месяцев назад ( 23 февраля 2021 г. )
Предварительный выпуск
6.12.0.148 / 13 августа 2021 г . ; 58 дней назад ( 2021-08-13 )
Репозиторий
Написано в C , C # , XML
Операционная система Windows , macOS , Linux , IBM AIX , IBM i
Платформа IA-32 , x64 , IA-64 , ARM , MIPS , PowerPC , SPARC , S390
Тип Программный фреймворк
Лицензия Лицензия MIT
Веб-сайт www .mono-project .com

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

История

История выпуска
Дата Версия Примечания
2004-06-30 1.0 Поддержка C # 1.0
2004-09-21 1.1
2006-11-09 1.2 Поддержка C # 2.0
2008-10-06 2.0 API-интерфейсы Mono теперь соответствуют .NET 2.0. Представляет компиляторы C # 3.0 и Visual Basic 8. Новые API, специфичные для Mono: Mono.Cecil, Mono.Cairo и Mono.Posix. Выпущен Gtk # 2.12. Представлены инструмент проверки жандармерии и Mono Linker.
2009-01-13 2.2 Mono переключает свой JIT-движок на новое внутреннее представление, которое повышает его производительность, и вводит поддержку SIMD в пространстве имен Mono.Simd Mono.Simd.
Mono представляет компиляцию Full Ahead of Time, которая позволяет разработчикам создавать полные статические приложения, а также представляет компилятор C # как услугу и интерактивную оболочку C # (C # REPL).
2009-03-30 2,4 В этом выпуске в основном улучшены все функции, представленные в версии 2.2, и он стал основой для долгосрочной поддержки Mono в SUSE Linux.
2009-12-15 2,6 Среда выполнения Mono теперь может использовать LLVM в качестве серверной части генерации кода, и в этом выпуске представлены совместные подпрограммы Mono, программный отладчик Mono и система безопасности CoreCLR, необходимая для Moonlight и других подключаемых модулей на базе Интернета.
В библиотеке классов System.IO.Packaging, клиент WCF, сервер WCF, дебют LINQ to SQL. Интерактивная оболочка поддерживает автозаполнение, а LINQ to SQL поддерживает несколько баз данных. Представлена ​​система сборки xbuild.
2010-09-22 2,8 По умолчанию используется профиль .NET 4.0, поддержка C # 4.0 , сборщик мусора нового поколения, включая Parallel Extensions , WCF Routing, CodeContracts , ASP.NET 4.0, отказ от поддержки профиля 1.0; механизм LLVM настроен на поддержку 99,9% всего сгенерированного кода, выбираемые во время выполнения llvm и gc; включает динамический язык выполнения , MEF , ASP.NET MVC 2, клиент OData с открытым исходным кодом от Microsoft ;. Станет выпуском 3.0
2011-02-15 2,10
2012-10-18 3.0 Поддержка C # 5.0, поддержка async, обновление библиотеки базовых классов Async и MVC4 - частично, без поддержки функций async.
2013-07-24 3.2 Сборщик мусора по умолчанию теперь SGEN, а не Boehm.
2014-03-31 3,4
2014-08-12 3,6
2014-09-04 3.8
2014-10-04 3.10
2015-01-13 3,12
2015-04-29 4.0 По умолчанию используется профиль .NET 4.5, поставляются только сборки .NET 4.5, по умолчанию - C # 6.0. Первый выпуск для интеграции кода Microsoft .NET Core с открытым исходным кодом
2017-05-10 5.0 Доставка компилятора Roslyn C # для включения поддержки C # 7; Доставка msbuild и прекращение поддержки xbuild для лучшей совместимости; Включение параллельного сборщика мусора SGen для сокращения времени, затрачиваемого на сборщик мусора; Представляем стек AppleTLS в macOS для соединений HTTPS; Продолжение прогресса в конвергенции библиотеки классов .NET; Обновлен libjpeg в пакете macOS
2017-07-14 5.2 Поддержка .NET Standard 2.0, строгих имен сборок и экспериментальных элементов интерфейса по умолчанию.
2017-10-05 5,4 Среда выполнения JIT теперь поддерживает параллельную компиляцию методов и различные другие оптимизации производительности;
2018-02-01 5,8 Начальный порт WebAssembly ; Режимы для SGen GC; Включает инструмент REPL csi (интерактивный C #) Roslyn
2018-02-26 5.10 Интерпретатор теперь включен в установку по умолчанию; среда выполнения теперь поддерживает методы интерфейса по умолчанию; WebAssembly теперь считается надежным; Поддержка .NET 4.7.1 / C # 7.2 / F # 4.1
2018-05-08 5,12 Порт на IBM AIX / i; теперь включает компилятор VB.NET ; возможность использовать jemalloc
2018-08-07 5,14 Крупное обновление Windows.Forms для улучшения совместимости с .NET
2018-10-08 5,16 Гибридный приостановленный сборщик мусора; Поддержка клиентских сертификатов; Поддержка C # 7.3
2018-12-21 5,18 Поддержка .NET 4.7.2; используется больше кода CoreFX
2019-07-17 6.0 Компилятор C # по умолчанию использует версию C # 8.0 RC; Различные улучшения стабильности в поддержке отладчика; Mono Interpreter - это полная и стабильная функция
2019-09-23 6.4 Поддержка компилятора C # для языковой версии C # 8; Поддержка .NET Standard 2.1
2019-12-10 6,6 Добавлены эталонные сборки .NET 4.8.
2020-01-15 6,8 Различные исправления
2020-05-19 6.10 Различные исправления
2020-11-24 6,12 Различные исправления

Когда Microsoft впервые анонсировала свою .NET Framework в июне 2000 года, она была описана как «новая платформа, основанная на Интернет-стандартах», а в декабре того же года была опубликована базовая инфраструктура Common Language Infrastructure в виде открытого стандарта «ECMA-335». увеличить потенциал для независимых внедрений. Мигель де Иказа из Ximian полагал, что .NET обладает потенциалом для повышения производительности программистов, и начал исследовать, возможна ли версия для Linux. Осознавая, что их небольшая команда не может рассчитывать на создание и поддержку полного продукта, они запустили проект с открытым исходным кодом Mono 19 июля 2001 года на конференции O'Reilly .

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

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

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

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

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

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

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

Лунный свет

Реализация 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 добавила «искусственные ограничения», которые «сделали его бесполезным для программирования для настольных компьютеров», а технология не получила достаточного распространения на рынке. Интернет. Кроме того, к 2012 году Microsoft прекратила поддержку самого Silverlight.

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

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

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

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

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

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

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

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

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

Среда выполнения 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.

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

Начиная с Mono 2.8, среда выполнения Mono поставляется с двумя сборщиками мусора : сборщиком по поколениям и консервативным сборщиком мусора Бем-Демерс-Вайзер . Сборщик мусора Boehm мог обнаруживать утечки памяти в определенных классах приложений, что делало его непригодным для некоторых долго работающих серверных приложений. Mono перешел на Simple Generational GC (SGen-GC) в качестве сборщика по умолчанию в версии 3.1.1.

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

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

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

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

Пространства имен - это механизм для логической группировки похожих классов в иерархическую структуру. Это предотвращает конфликты имен. Структура реализована с использованием слов, разделенных точками, где наиболее распространенным пространством имен верхнего уровня является 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. Чтобы запустить приложение, вы должны вызвать среду выполнения с соответствующими параметрами.

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

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

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

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

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

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

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

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

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

macOS:

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

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

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

Окна:

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

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

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

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

Xamarin.iOS

История выпуска
Дата Версия Примечания
2009-09-14 MonoTouch 1.0 Первый выпуск
2010-04-05 MonoTouch 2.0 поддержка iPad
2010-04-16 MonoTouch 3.0 поддержка iPhone 4
2011-04-06 MonoTouch 4.0 поддержка iOS 4
2011-10-12 MonoTouch 5.0 поддержка iOS 5
2012-09-19 MonoTouch 6.0 поддержка iOS 6
2013-02-20 Xamarin.iOS 6.2 Поддержка Visual Studio
2013-07-24 Xamarin.iOS 6.4 .NET 4.5 поддержка async / await
2013-06-19 Xamarin.iOS 7.0 Поддержка XCode 5 и iOS 7
2014-09-10 Xamarin.iOS 8.0 Поддержка iOS 8 и Xcode 6
2015-09-16 Xamarin.iOS 9.0 Поддержка iOS 9 и Xcode 7
2016-09-13 Xamarin.iOS 10.0 Поддержка iOS 10 и Xcode 8
2017-09-19 Xamarin.iOS 11.0 Поддержка iOS 11 и Xcode 9
2018-09-14 Xamarin.iOS 12.0 Поддержка iOS 12 и Xcode 10
2019-09-13 Xamarin.iOS 13.0 Поддержка iOS 13 и Xcode 11
2020-09-20 Xamarin.iOS 14.0 Поддержка iOS 14 и Xcode 12

Xamarin.iOS (ранее называвшаяся MonoTouch) - это библиотека, которая позволяет разработчикам создавать приложения на основе C # и .NET, которые запускаются на устройствах iPhone, iPod и iPad. Он основан на платформе Mono и разработан совместно с Novell. В отличие от приложений Mono, «Приложения» Xamarin.iOS компилируются в машинный код, предназначенный специально для Apple iPhone и iPad . Это необходимо, потому что ядро ​​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 , неопределенным. Затем, в сентябре 2010 года, Apple отменила это ограничение, заявив, что они ослабляют языковые ограничения, введенные ранее в том же году.

Xamarin.Android

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

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

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

  • Моно время выполнения
  • Дизайнер пользовательского интерфейса Android
  • Библиотеки:
    • Базовые библиотеки классов .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 ), библиотеки времени выполнения под лицензией GNU Lesser General Public Лицензия (только LGPLv2) и библиотеки классов под лицензией MIT . Это все свободное программное обеспечение и с открытым исходным кодом лицензии и , следовательно , Mono является свободным и открытым исходным кодом .

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

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

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

Патенты Mono и Microsoft

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

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

Многие программы, охватывающие ряд приложений, были разработаны с использованием интерфейса прикладного программирования (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. OpenRA объединяет свои образы дисков Apple и Linux AppImages с Mono, по сути, удаляя практически все зависимости из игры.

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

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

Цитаты

Источники

внешние ссылки