СРЕДСТВА РАЗРАБОТКИ
Первое зримое проявление сотрудничества Novell и Microsoft (см. PC Week/RE, N 42/2006, с. 10) можно было видеть в середине ноября в Барселоне: на проходившей там конференции Microsoft TechEd Europe впервые (для подобного форума) была представлена система Mono - многоплатформенная реализация спецификаций .NET Framework в виде открытых кодов. Ее новая версия 1.2 отвечает стандартам ECMA 334 и 335 - соответственно для механизма исполнения Common Language Infrastructure (CLI) и языка C#.
Напомним: идею проекта Mono (www. mono-project.com) высказал 28-летний мексиканский программист Мигель де Иказа (Miguel de Icaza) еще в конце 2000 г., как только стали известны первые подробности о представленной тогда в виде бета-версии новой технологии Microsoft .NET. При поддержке соратников по сообществу GNOME (которых тогда называли не иначе, как хакерами) он основал компанию Helix Code, которую в 2001 г. переименовали в Ximian. Она и занялась проектом Mono*1 при участии сообщества Open Source. Поначалу технологической основой этой работы стала в общем-то хакерская декомпиляция компилятора байт-кода Microsoft, но с 2001-го компания использует официальные сведения от ECMA, европейской организации по стандартизации, которой Microsoft передала спецификации C# для открытой публикации. Предварительный вариант Mono был представлен уже в августе 2001-го, но официальная версия 1.0 - лишь в июне 2004 г. В августе 2003 г. Ximian была куплена компанией Novell, под эгидой которой с тех пор и выполняется проект Mono, но де Иказа продолжает руководить этими работами, занимая пост вице-президента подразделения Developer Platforms*2.
_____
*1 Авторы проекта в его названии отразили характер воспроизведения в своем решении технологии .NET. Mono - это “обезьяна” по-испански
*2 Летом 1997 г. де Иказа, стремясь попасть на работу в Microsoft и войти в состав разработчиков Internet Explorer для Unix, проходил в этой корпорации собеседование, но неудачно: у него тогда не было университетской степени, необходимой для получения рабочей визы H-1B.
Сегодня Mono реально обеспечивает поддержку .NET-технологий на различных аппаратных платформах и в разных операционных средах (Linux, FreeBSD, UNIX, Mac OS X, Solaris и Windows). 32-разрядный вариант позволяет работать с системами на базе процессоров x86, SPARC, ARM и на мэйнфреймах IBM S390. 64-разрядная версия поддерживает сейчас Itanium, s390x и x86-64, но ожидается, что этот список в недалеком будущем будет расширен.
Представленный сейчас Mono 1.2 включает новый отладчик, обновления для компилятора C#, библиотек классов ядра и пространства имен System.WinForm, а также поддержку обобщенных типов данных. Помимо этого в состав пакета входит модернизированный вариант инструментального набора Gtk для преобразования исходного кода приложений.
И все же создается впечатление, что реализация проекта Mono оказалась не столь проста, как это представлялось вначале. В нем заметно отставание от развития самой платформы Microsoft .NET Framework. Так, еще весной 2005-го Novell хотела выпустить версию Mono 1.2 к концу того года, а на практике это удалось сделать лишь сейчас. Тогда же говорилось о намерении обеспечить в ней поддержку .NET Framework 2.0, которая появилась в ноябре 2005 г., но сейчас это предполагается реализовать в следующей версии Mono 2.0. Пока же Mono 1.2 обеспечивает совместимость только с .NET Framework 1.1 (а с версией 2.0 - лишь на уровне отдельных компонентов).
Интегрированную среду разработки Mono можно использовать в разных операционных системах, в том числе Linux и Mac OS X
Как уже говорилось ранее, Mono - проект в открытых кодах. Однако сейчас, на конференции в Барселоне, Мигель де Иказа заявил, что Novell может предлагать эту разработку в виде коммерческого продукта. Он объяснил это тем, что корпоративные заказчики предпочитают иметь дело именно с коммерческими продуктами, считая, что тем самым повышаются гарантии со стороны поставщиков. Основатель проекта отметил также, что задержка в год-полтора с введением новшеств .NET Framework имеет свои технические обоснования, но отрицательно сказывается на отношении к Mono клиентов. На практике многие разработчики сначала создают свои приложения для Windows с помощью Visual Studio, а уж потом занимаются переводом их на другие платформы.
Mono позволяет реализовать идею смешанного программирования за счет использования компонентов, написанных на языках .NET (C#, JavaScript, and Visual Basic), Java, а также IronPython, Boo, PHP, Nemerle, F# и ряда других. Один из активных участников проекта Mono, компания Mainsoft, использует библиотеки Mono в своем продукте Visual MainWin for J2EE - инструментальном наборе, обеспечивающем кроссплатформенную разработку для Visual Studio и Java. С его помощью, например, достигается возможность запуска ASP.NET-программ и серверных .NET-приложений под управлением Linux.
Из объявленных Novell планов следует, что Mono 2.0 должен выйти во II квартале следующего года. Помимо поддержки ASP.NET 2.0 и ADO.NET 2.0 в этом пакете появится также компилятор для Visual Basic .NET. А полная совместимость с .NET Framework 2.0, включая Windows Forms 2.0, будет достигнута только в Mono 2.2, появление которого обещано в конце 2007 г.
В это же время должна быть представлена бета-версия нового проекта под названием Olive. В нем будет реализована поддержка трех ключевых технологий, входящих в состав Microsoft .NET Framework 3.0: CardSpace, Windows Communication Foundation и Windows Workflow Foundation. Но включение в Mono нового API для клиентских приложений - Windows Presentation Foundation - этими планами пока не предусмотрено.