Різне: Mono. Що ми маємо. Витяги з оглядів

вторник, 18 ноября 2008, Oleksandr Reminnyi

О том, что на сегодняшний день представляет из себя проект Mono.

Mono - это open-source реализация платформы Microsoft .NET. Если быть более точным, то проект является реализацией стандарта ECMA 335 CLI и поэтому совместим на уровне бинарных файлов со всеми .NET-компиляторами. Другими словами, файлы, сгенерированные с помощью Visual Studio, можно использовать без перекомпиляции в Mono и наоборот. Ну и конечно нельзя не сказать о самом главном - Mono позволяет разрабатывать и запускать приложения на операционных системах GNU/Linux, Mac OS X, Windows, Solaris и Unix.

Мигель де Иказа


Проект Mono был анонсирован Мигелем де Иказой 19 июля 2001-го года на конференции O'Reilly Open Source conference. Мигель де Иказа известен всему миру как один из основателей проекта GNOME и автор Midnight Commander'а. В то время Мигель работал в компании Ximian, которую они основали вместе с Нэтом Фридманом. В 2003-м году Ximian вошла в состав Novell и с тех пор Mono стал одним из ключевых проектов этой известной корпорации.

Первая версия Mono была выпущена 30 июня 2004-го года.

На сегодняшний день Mono состоит из CLI-совместимой виртуальной машины c just-in-time компилятором и сборщиком мусора, стандартной библиотеки классов, пакета Gtk# и библиотек, которые обеспечивают совместимость с Microsoft .NET (ASP.NET, ADO.NET, WinForms). Также вместе с Mono поставляются компиляторы C# (поддерживаются 1.0, 2.0 и частично третья версия), Visual Basic .NET и JavaScript. Отдельно доступны компиляторы Java, Boo, Nemerle, Python, Oberon, PHP, Object Pascal, LUA и другие (более подробную информацию можно найти здесь).

Существует множество коммерческих и open-source приложений, написанных на Mono. Cо списком можно ознакомиться на сайте проекта.

GUI

Построение графического интерфейса ориентировано на использование различных тулкитов (GUI toolkits). Каждый тулкит поддерживает определенный набор операционных систем и имеет свои преимущества и недостатки. Для построения графических приложений команда Mono предлагает два основных тулкита, Gtk# и Winforms, но существуют также и другие реализации, например, Qyoto и Cocoa#.

Gtk#

Одна из основных задач, которая ставилась перед Mono в 2001-м году - предоставить средство разработки GUI-приложений для Linux, которое позволит создавать настольные приложения с такой же легкостью, как это делается с помощью платформы Microsoft .NET.

Для этой цели командой Mono была написана .NET-обёртка над gtk+ (сокращение от GIMP Toolkit), кроссплатформенным фреймворком для построения графического интерфейса. Эта обёртка получила название Gtk#. Приложения, написанные с использованием Gtk#, могут запускаться не только на различных операционных системах (Unix, Windows, OSX), но также могут работать в любой .NET-совместимой среде. В частности, эта библиотека регулярно тестируется на совместимость с Microsoft .NET.

Gtk# app: музыкальный плеер Banshee



На сегодняшний день существует множество Gtk#-приложений, доступных для общего использования. Среди них, Banshee, F-Spot, Beagle, MonoDevelop и другие. Более подробный список приложений можно посмотреть на сайте проекта.

Gtk# app: фото-менеджер F-Spot

Winforms

Вторая основная задача, которую ставили перед собой разработчики Mono - максимально облегчить перенос существующих .NET-приложений на Linux и другие платформы. Для этой цели был написан кроссплатформенный (Windows, Unix, OSX) тулкит, совместимый с API библиотеки Windows.Forms, которая входит в поставку Microsoft .NET. На сегодняшний день поддерживается API Windows.Forms версии 1.1 и реализована практически полная поддержка v2.0. Таким образом, большинство приложений, использующих Windows.Forms, могут быть без особых усилий запущены с использованием Mono.

Winforms app: NUnit

Winforms app: SharpChess

ASP.NET

Mono реализует поддержку ASP.NET 1.1 и 2.0 приложений, а также поддержку ASP.NET веб-сервисов (файлы с расширением .asmx).

Чтобы запустить ASP.NET приложение, нужен либо веб-сервер Apache (1.x, 2.x) с установленным модулем mod_mono, либо любой веб-сервер, поддерживающий протокол FastCGI. Ещё один способ интеграции с ASP.NET - xsp - веб-сервер, реализованный в рамках проекта Mono. Он написан на языке C# и как отдельный stand-alone сервер очень ограничен по своим возможностям, поэтому сам по себе используется в основном в целях тестирования. С другой стороны, и mod_mono, и FastCGI используют xsp в качестве хостинга ASP.NET приложений.

Следующие провайдеры предлагают услуги хостинга для ASP.NET приложений в связке с Mono:
http://www.grokthis.net/
http://www.ubiquityhosting.com/

Moonlight

Moonlight - проект, который в сентябре 2007-го года свёл вместе корпорации Microsoft и Novell. До этого взаимодействие команды разработчиков Mono с инженерами Microsoft происходило исключительно на неофициальном уровне. Но в сентябре 2007-го года корпорации заключили соглашение, согласно которому Microsoft предоставляет команде Мигеля де Иказы доступ к тест-кейсам для проверки Moonlight на соответствие спецификациям Silverlight, раскрывает все нужные спецификации помимо опубликованных, а также разрешает автоматическую закачку патентованных аудио/видео кодеков для Moonlight. Novell, в свою очередь, реализует спецификацию Silverlight'а в проекте Moonlight и будет распространять его в виде DEB- и RPM-пакетов для основных дистрибутивов Linux.

На данный момент проект Moonlight реализует функциональность как первой, так и второй версии Silverlight'а.

Tools

MonoDevelop - межплатформенная IDE, ориентированная на разработку под Mono. В состав IDE входит GUI-дизайнер для построения настольных приложений, использующих Gtk#.

Mono Migration Analizer - программа, помогающая портировать .NET-приложения на Mono. Показывает потенциально проблемные места в коде, которые могут вызвать трудности при запуске на Mono (например, P/Invoke вызовы Windows API или использование методов стандартной библиотеки Microsoft .NET, не реализованных в текущей версии Mono).

Monodoc - специальный браузер для просмотра документации (Core Framework API, библиотеки Mono, спецификация языка C#, compiler error reference и т.д.)

Интересные факты

  1. WikiPedia использует Mono для поиска и индексации данных.

  2. Mono переводится с испанского как "обезьяна" - отсюда такой логотип проекта. "We like monkeys" (с) Mono-team :)

  3. В 2001-м году Тим О'Рейлли предложил свою помощь для поддержки проекта на ранних стадиях.

  4. Одно из четырёх главных правил участия в проекте: "Если вы знакомы с реализацией Microsoft .NET, либо видели его исходный код, то вы не можете участвовать в создании Mono"

Джерело

---------------------------------------------------------

На диаграмме, приведенной ниже, показан путь, который проходит программа на языке C# от компиляции до исполнения:

Compiling and running C# programs.

О преимуществах

Используя платформу CLI, такую как Mono или .NET, вы приобретаете ряд очень важных преимуществ:

  • Программы могут быть запущены на любом типе процессора, под управлением любой операционной системы, поддерживающей платформу CLI, без необходимости перекомпиляции.
  • Полная интеграция нескольких языков программирования.
  • Система поддерживает важные меры безопасности.
  • Единая среда исполнения, разделяемая всеми CLI-совместимыми языками программирования.
  • Непротиворечивая объектная модель, используемая всеми CLI языками, включая стандартный API, предлагаемый единственной базовой библиотекой классов. Изучив API - вы можете использовать его в любом языке программирования, поддерживаемом платформой.
  • Упрощенная модель установки приложений. Отпадает необходимость регистрации модуля в системном реестре.
  • Несколько версий одной и той же библиотеки (DLL) могут гармонично сосуществовать на одном компьютере

Кроме того, язык программирования C# дает еще ряд важных преимуществ:

  • Появление новых конструкций, таких как свойства, события и аттрибуты, заметно упрощает построение программных компонент.
  • Отпадает необходимость в отдельных заголовочных файлах языка описания интерфейсов (IDL).
  • Упрощен механизм контроля версий.
  • Унифицированная система безопасных типов. Все типы данных (включая простые типы) порождены от единственного базового класса.
  • Автоматическое управление памятью, с помощью сборщика "мусора".
  • Тесная интеграция в CLI.

Джерело

--------------------------------------------------------------

Анонсирован выпуск Mono 2.0 - средства кросс-платформенной разработки для Microsoft .NET

Спонсируемый компанией Novell проект Mono анонсировал выход второй версии одноименной открытой, кросс-платформенной среды разработки для .NET. В состав Mono 2.0 включено все необходимое ПО для создания и запуска серверных и клиентских приложений .NET на базе Linux, Solaris, Unix и Mac OS X.

Новый релиз приобрел совместимость с клиентскими и серверными компонентами Microsoft .NET версии 2.0 и содержит Mono Migration Analyzer (MoMA), аналитический инструмент для миграции .NET-to-Linux, работающий как с .NET, так и с Mono и помогающий определить количество изменений, требующихся чтобы адаптировать приложение .NET для платформы Linux. Применение MoMA показало, что 45% из проверенных 4600 программ .NET не нуждалось ни в каких изменениях для работы с Mono. Еще для 24% требовалась переделка не более 6 строк в исходниках.

Среди достоинств Mono 2.0 отмечают инсталляцию по одному нажатию кнопки для SUSE Linux Enterprise и openSUSE, а также упрощенную ее процедуру для других поддерживаемых ОС, совместимость с Linux, Mac OS X, Solaris, BSD и Windows, аппаратными платформами x86, AMD 64, IA-64 (Itanium 2), EMT 64, PowerPC, ARM, S390 и S390x, SPARC и SPARC 9, с API ASP.NET, ADO.NET и Windows.Forms, с компилятором C# 3.0 и Language Integrated Query (LINQ). Кроме того в новом релизе улучшены масштабируемость и быстродействие динамических библиотек ASP.NET, ADO.NET и Mono.

Mono 2.0 уже доступно для загрузки. Дополнительную информацию о проекте можно получить на сайте www.mono-project.com.

Джерело

--------------------------------------------------------------

*Mono - часто задаваемые вопросы

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

Какую лицензию или лицензии вы используете для проекта Mono?
Мы используем три лицензии для открытого ПО.
Компилятор C# лицензирован под лицензиями MIT/X11 и GNU General Public License (GPL).
Инструментарий выпущен на условиях GNU General Public License (GPL)
Библиотеки поддержки — под GNU Library GPL 2.0 (LGPL 2.0).
Библиотеки классов выпущены на условиях лицензии MIT X11.
И библиотеки поддержки Mono, и компилятор C# Mono также доступны под проприетарное лицензией для тех, кто не может использовать LGPL и GPL в своём коде.

Чтобы узнать о лицензировании подробнее, пишите mono-licensing@novell.com.

Почему библиотеки классов выпущены на условиях лицензии MIT X11?
Изначально библиотеки классов были выпущены на условиях GNU Library GPL (LGPL), но с ней возникли проблемы из-за устаревших формулировок, связанных с модифицированным ПО. Изменённая часть библиотеки должна выходить под той же лицензией, что и сама библиотека. Это определение было удовлетворительным до появления объектно-ориентированного программирования, но когда оно появилось, разные разработчики посчитали, что участки кода, которые используют объектно-ориентированное наследование, не являются модифицированными частями исходной библиотеки.
Библиотеки классов, являющиеся значительной частью Mono, писала большая группа людей.
Из-за двусмысленности определений, а также возможности того, что у каждого автора библиотеки классов существует собственного понимание условий лицензии, мы выбрали лицензию, которая всё ещё является лицензией для открытого/свободного ПО, но при этом не содержит упомянутых двусмысленностей.
Если бы двусмысленность определений в лицензии существовала, автор кода мог бы потребовать от разработчика приложений убрать этот код, основанный на технической особенности проекта. Мы не захотели рисковать будущим проекта Mono.

В каких случаях я должен получить лицензию от Novell для Mono Runtime?
Лицензирование необходимо только для пользователей Mono и Moonlight на встроенных системах или системах, в которых невозможно выполнить все условия GNU LGPL.
Например, если вы производите устройство, в котором конечный пользователь не может обновить виртуальную машину Mono или Moonlight из исходников, вам необходима коммерческая лицензия на Mono и Moonlight.
Если вы распространяете приложение, которое требует статически слинкованного Mono, и вы не можете предоставлять код объектов, которые можно перелинковать, вы должны приобрести коммерческую лицензию Novell.
Если вам нужно обсудить вопросы лицензирования Mono для ваших нужд, пишите на mono@novell.com.

Я хотел бы написать часть кода Mono под специфической лицензией. Условия каких лицензий вы принимаете?
Сначала мы проанализируем совместимость лицензий, но, как правило, мы принимаем код на условиях лицензии, под которой выпускается модуль-«контейнер».

Почему Novell требует соглашения об авторских правах?
Когда разработчик пишет код для компилятора C# или движка Mono, мы требуем, чтобы автор передал Novell право на перелицензирование этого кода. Это позволяет Novell перераспределить исходный код по частям, которые могут не требовать GPL или LGPL. Вендоры встроенных систем получают права модифицировать движок Mono для собственных целей, не выпуская их.

Патенты
Может ли использование патентов на ПО повредить Mono?
Для начала немного общей информации.
.NET Framework делится на две части: технологии, стандтартизированные ECMA/ISO, и остальные технологии, такие, как ADO.NET, ASP.NET и Windows.Forms.
Mono имплементирует части ECMA/ISO и стремится имплементировать программыне блоки более высокого уровня, такие как ASP.NET, ADO.NET и Windows.Forms.
Проект Mono пошёл дальше использования только этих двух компонентов и разработал и интегрировал третьесторонние библиотеки классов, самые важные из которых: отладочные API, интеграция с платформой Gnome (Accessibility, Pango, Gdk/Gtk, Glade, GnomeU), Mozilla, OpenGL, расширенная поддержка баз данных (Microsoft поддерживает только пару сторонних баз, в то время как Mono поддерживает 11 разных баз данных), наши интеграционные библиотеки POSIX и, наконец, встроенный API (используется для добавления скриптов в приложениях, для того, чтобы хостить CLI или, к примеру, как встроенная поддержка в Apache).
Ядро .NET Framework и то, что было запатентовано Microsoft подпадает под ECMA/ISO. Джим Миллер из Microsoft сделал заявление относительно патентов, стандартизированных ECMA/ISO (он является одним из изобретателей, перечисленных в патентах) здесь.
В основном каждый, кто хочет использовать эти компоненты для любых целей, получает эту возможность.
Для людей, которым необходима полная совместимость с платформой Windows, Mono предлагает следующее (для разрешения потенциальных проблем, которые могут возникнуть с ASP.NET, ADO.NET или Windows.Forms): (1) обход патентов за счёт использования иного механизма, заменяющего патентованный код, но при этом сохраняющий API; если это невозможно, то (2) удаление защищённого патентами кода и (3) поиск прототипа, который заменит патент.
Отсутствие возможностей, предоставляемых патентованным кодом, ухудшает взаимодействие, но при этом предоставляет сообществу свободного/открытого ПО хорошие инструменты разработчиков, что и является первичной причиной разработки Mono.
Патенты не применяются в странах, где запрещено использование патентов на ПО.
Для разработки серверных и настольных решений на Linux нам нужны только компоненты ECMA, а также наши собственные решения (типа Gtk#) или решения для интеграции с Apache.

Изменится ли политика патентования после нового соглашения между Novell и Microsoft?
Mono — это проект, разрабатывающийся сообществом, и в качестве такового мы и далее не будем включать в Mono код, заведомо нарушающий патенты.
Мы продолжим поступать так, как описано в предыдущем ответе: если код потенциально нарушает патент, то мы ищем прототип, другую имплементацию или, если ничего из этого невозможно сделать, удаляем код из Mono.

Есть ли альтернативы ASP.NET?
Да, есть ряд альтернатив, которые используются для разработки приложений для Web и не применяют ASP.NET, например, Jitsu и Dream.
Посмотреть на Dream в действии вы можете на Wik.is.

Есть ли альтернативы Windows.Forms?
Да, существует достаточно альтернатив, включая Gtk# (см. нашу страницу Gui Toolkits для дополнительной информации).

Mono — это единственная имплементация .NET Framework?
Mono имплементирует и .Net Framework, и много других библиотек классов, которые как Unix-специфичны, Gnome-специфичны, так и не являются частью .NET Framework, но люди считают их полезными.
Mono также используется виртуальной машиной Java через IKVM.

Список участников
Этот документ содержит материалы, составленные Miguel de Icaza, Jaime Anguiano, Lluis Sánchez.

Джерело

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии