ПО

Идея сплотить вокруг своих технологий сообщество разработчиков, выпустив некий перспективный проект в свободное пользование или “подхватив” уже существующий открытый проект, не нова. Так было с архитектурой IBM PC, так было с Linux, да и не только с ними, и первые результаты всегда одинаковы: открытые технологии действительно успешно приживаются и завоевывают популярность.

Впрочем, далеко не всякое внедрение открытых технологий несет на себе отпечаток альтруизма и имеет цель “просто сделать мир лучше”. Для производителей оборудования открытые технологии дают лицензионные отчисления с производимых “клонов”, для разработчиков ПО - закладывают фундамент для продвижения коммерческих проектов, основанных на данных технологиях. В этом смысле открытые технологии подобны пресловутому “бесплатному сыру” - с той лишь разницей, что такой сыр тянет за собой потребность в “платном хлебе”. Пользователь, зная, какой ему необходим сорт “платного хлеба”, выбирает нужный “бесплатный сыр”. Кстати, справедливости ради следует отметить, что стоит сделать “сыр” бесплатным, как сортов “хлеба” для него появляется значительно больше.

Очевидно, такую цель и преследовала компания IBM, передав в ноябре 2001 г. в открытый проект Eclipse.org результат своей почти 10-летней работы общей стоимостью 40 млн. долл. Изначально это был внутренний проект IBM, призванный интегрировать разнородные инструментальные средства в рамках стратегии единой среды разработки для любых приложений. Первым результатом исследований IBM в этой области явился выпущенный в 2000 г. комплект разработчика WebSphere Development Tools (WDT), объединяющий в себе CODE (дальнейшее развитие PDM, SEU и SDA), VisualAge RPG, VisualAge for Java с расширениями для iSeries и WebSphere Studio с расширениями для iSeries (SDA for the Web). Затем последовал выпуск пакета WebSphere Development Studio (WDS) для iSeries, представившего технологию WebFacing и совместившего в себе RPG, COBOL, Си, C++, ADTS и неограниченное число лицензий на WDT. Это был момент, когда появились все необходимые инструментальные средства для создания любых современных приложений.

Программисты тепло встретили пакет WDS, и он имел большой успех. Однако IBM поставила перед собой долгосрочную цель - добиться тесной интеграции множества входивших в WDT средств, выпустив единый инструмент для любых разработок. Для этого как раз и предлагалась технология интеграции инструментария Eclipse, на которую впоследствии было переведено все новое поколение продуктов WebSphere Studio, включая пакет разработки Java-приложений для мобильных и встраиваемых устройств WebSphere Studio Device Developer, Eclipse-версию известного пакета VisualAge Micro Edition. Создатель VisualAge Micro Edition - фирма Object Technology International (OTI). Ее приобрела IBM и сделала своей дочерней компанией в 1996 г.; именно наработки OTI, заложенные в основу VisualAge for Java 3.5, дали начало новой инструментальной стратегии IBM, впоследствии вылившись в проект Eclipse.

Что такое Eclipse?

Идеология Eclipse представляет собой распространение “принципа микроядра” на новую для него область применения - программный инструментарий. Этот принцип уже давно зарекомендовал себя, будучи воплощенным в микропроцессорах (RISC-архитектуры), операционных системах (MacOS и другие ОС на микроядре Mach, QNX), прикладных пакетах (MatLab) и т. п., однако применить его в такой области, как разработка приложений, до сих пор почему-то не приходило никому в голову - возможно, потому, что идея все это время лежала на поверхности. Как водится, “хочешь хорошо спрятать - положи под носом у того, кто ищет”.

Eclipse CDT: интерфейс менеджера проектов

Основная идея “принципа микроядра” состоит в том, чтобы выделить в системе минимальный функционально полный набор базовых операций, через который можно легко выразить все остальные, и реализовать его в отдельном самостоятельном модуле, построив вокруг него всю остальную функциональность системы. Главные преимущества такого подхода - быстродействие (потому что элементарные операции выполняются быстро), расширяемость (если базовый набор операций выбран корректно, то на его основе можно реализовать какой угодно алгоритм) и надежность (чем компактнее модуль, тем меньше вероятность ошибки в нем и тем проще его отлаживать). Этими свойствами обладают все системы, созданные на основе “принципа микроядра”, и вот недавно семейство пополнилось еще одним ярким представителем. Знакомьтесь: Eclipse, ядро для построения универсальных IDE.

Eclipse CDT: построение проекта

Ядро Eclipse поддерживает унифицированные механизмы взаимодействия между инструментальными средствами на всех стадиях разработки приложения и позволяет строить вокруг себя произвольные IDE, содержащие любой необходимый инструментарий. Расширения к ядру Eclipse разрабатываются как подключаемые программы - плагины, причем они могут подключаться как непосредственно к ядру, так и друг к другу - для этого в Eclipse предусмотрен механизм так называемых точек расширения (extension points). Каждый плагин может объявить произвольный набор точек расширения и произвольный набор подключений к существующим точкам расширения ядра или других плагинов - таким образом, каждый плагин может как являться расширением другого, так и позволять другим плагинам расширять себя. Эти входы и выходы описываются в так называемом файле манифеста плагина в формате XML; при старте ядро Eclipse проверяет установленные плагины и налаживает между ними информационные связи. При этом плагин не активизируется, пока не будет явно вызван, что уменьшает продолжительность загрузки и экономит ресурсы.

Eclipse CDT: отладка проекта

Eclipse содержит несколько готовых плагинов - например, обобщенный интерфейс пользователя Eclipse Workbench, который другие плагины могут расширять по своему желанию, подсоединяя к нему нужные редакторы, программы просмотра, мастера и т. п. Другими словами, платформа Eclipse представляет собой IDE для чего угодно и ни для чего конкретно - все зависит от того, какие плагины работают в данный момент. Более подробное техническое описание Eclipse доступно на сайте консорциума Eclipse.org (www.eclipse.org/whitepapers/eclipse-overview.pdf).

Ядро Eclipse целиком написано на Java - это обеспечивает IDE на его основе переносимость между различными инструментальными средами при абсолютной идентичности получаемого пользовательского интерфейса. Кроме того, поскольку и все плагины для Eclipse пишутся на Java, в комплект Eclipse SDK входит полнофункциональная среда разработки на Java (кстати, тоже на базе Eclipse). То есть, скачав Eclipse SDK, разработчик приобретает все необходимые средства для создания собственных плагинов, включая исходные тексты ядра Eclipse. Это, кстати, в корне отличает Eclipse от конкурирующей среды Microsoft .Net. Она хотя и расширяемая, но представляет собой закрытую платформу, расширять которую имеют право только официальные партнеры Microsoft. IBM считает, что открытые технологии формируют гораздо более живой рынок, где продукты конкурируют по функциональности, а не на основании исторических предпосылок, и именно в игре на этом поле IBM наиболее заинтересована (www.ibm.com/developerworks/library/l-erick.html).

IBM, QNX Software Systems и проект Eclipse.org

QNX Software Systems (QSS), разработчик встраиваемой ОС реального времени QNX, присоединилась к консорциуму Eclipse.org сразу же с момента его основания и стала одной из компаний-учредителей. Для специалистов эта новость была буквально сенсационной - инструментария такого уровня в QNX еще не было!

Вообще в большинстве встраиваемых ОС и ОС реального времени традиционным подходом всегда была модель кросс-разработки, когда инструментальная ЭВМ использует одну ОС (обычно это “классическая” платформенная ОС типа Solaris или Windows), а целевая - другую. Операционные системы семейства QNX, задуманные как своего рода платформенные ОСРВ, изначально ориентировались на более прозрачную и удобную резидентную (self-hosted) модель разработки, до этого применявшуюся в основном для платформенных ОС. Это означало, что весь инструментарий, используемый для создания QNX-приложений, обязан был работать в самой QNX. Однако нынешние спецификации POSIX тогда еще только зарождались, что затрудняло перенос средств разработки между ОС, поэтому выбор инструментария в ОСРВ QNX4 был весьма ограничен. С утверждением же новых спецификаций POSIX и выходом полностью POSIX-совместимой QNX6 в мире QNX повеяло переменами и компьютерное сообщество замерло в ожидании.

QNX IDE: отладчик интегрирован с анализатором ОЗУ

Выход QNX6 значительно расширил потенциал применения QNX в новых перспективных отраслях. Чтобы реализовать этот потенциал, необходимо было кроме прочего завоевать симпатии разработчиков, а значит, усовершенствовать инструментарий. Первым шагом QSS в этом направлении стало введение дополнительной возможности кросс-разработки - в числе доступных инструментальных ОС кроме самой QNX появились Windows и Solaris. В качестве базового инструментария на всех инструментальных платформах применялась линейка GNU Си/C++, хорошо знакомая разработчикам из мира POSIX. Затем последовало заключение союза между QSS и компанией Metrowerks, благодаря которому кросс-разработка в Windows подкрепилась мощной IDE CodeWarrior, завоевавшей заслуженную репутацию на платформах MacOS, PalmOS и Windows. CodeWarrior использовала инструментарий GNU Си/C++ как набор плагинов и поддерживала написание QNX-приложений для целевых процессоров семейств x86 и PowerPC.

Однако QNX на момент появления первого выпуска связки CodeWarrior - GNU Си/C++ поддерживала уже не только процессоры x86 и PowerPC, и ограничение функциональности инструментария означало бы снижение интереса к QNX на новых перспективных рынках. Тогда-то и зародился проект QNX Realtime Platform, призванный сделать из QNX не просто солидную базу для встраиваемых систем, но мощную инструментальную платформу, расширив ее прикладное окружение до уровня полноправной инструментальной ОС (а POSIX-совместимость QNX6 позволяла сделать это с легкостью!) и сплотив вокруг нее сообщество разработчиков. Комплект QNX Realtime Platform, вскоре выпущенный QSS, включал в себя полную поставку ОС QNX, штатную графическую оболочку Photon microGUI (в ней, кстати, для упрощения переноса графических приложений был предусмотрен также эмулятор X Window System) и набор свободно распространяемых приложений и средств разработки, перенесенных из других POSIX-совместимых ОС (в основном Linux). Кроме того, QNX Realtime Platform была объявлена бесплатной для некоммерческого использования и стала быстро набирать популярность, так что после ее официального выпуска работу QSS по переносу приложений в QNX поддержали многочисленные энтузиасты. В результате ассортимент приложений, доступных под QNX, значительно расширился, что еще более увеличило привлекательность QNX как инструментальной платформы.

Цель - сформировать единое сообщество разработчиков, использующих QNX в качестве основной инструментальной ОС, - была достигнута: с момента официального запуска программы в сентябре 2000 г. по апрель 2001 г. QNX Realtime Platform была скачана с сайта QSS более миллиона раз, и это не считая двух миллионов бесплатных CD, распространенных с печатными изданиями. Первый шаг QSS на пути к сплочению своих единомышленников через открытие технологий оказался успешным. Кстати, анонсируя новый выпуск QNX Realtime Platform на конференции “QNX-Россия - 2001”, проходившей в Санкт-Петербурге в прошлом году, исполнительный директор и сооснователь QSS Дэн Додж в шутку заметил, что идея сделать QNX бесплатной для некоммерческого использования навеяна именно российским опытом, поскольку, по его словам, Россия внедрила программу по бесплатному распространению QNX еще за десять лет до ее официального принятия, и за это время в нашей стране сформировалось огромное сообщество разработчиков, а значит, и мощная база уже готовых специалистов.

QNX IDE: отладка нескольких процессов одновременно

После выхода QNX Realtime Platform в мире QNX в области инструментария наступило относительное затишье, и порой даже создавалось впечатление, что прикладное окружение QNX навечно отдано на откуп членам свободного сообщества. Впрочем, по официальным каналам изредка просачивалась информация, позволявшая судить о бурных подводных течениях внутри QSS; правда, о том, куда они приведут, никто не знал. Очевидно было, что основная цель QSS достигнута лишь частично: сообщество укрепилось, но все еще оставалось разбитым на три лагеря - по количеству доступных инструментальных ОС, в каждой из которых для разработки QNX-приложений использовался различный инструментарий высокого уровня. Интуиция подсказывала, что следующий шаг QSS будет направлен именно в сторону достижения “инструментального паритета”. Переломный момент пришелся на ноябрь 2001 г., и дальше поток событий нарастал, как снежный ком.

В ноябре 2001 г. IBM передает исходные тексты проекта Eclipse в свободное распространение на условиях CPL (Common Public License, www.eclipse.org/legal/cpl-v10.html). Образуется открытый консорциум Eclipse.org, состоящий из компаний - производителей программного инструментария и призванный координировать дальнейшее развитие проекта. В совет распорядителей (Board of Stewards) консорциума вошли представители IBM, Borland, Merant, QNX Software Systems, Rational Software, Red Hat, SuSE и TogetherSoft. Целью консорциума объявляется объединение производителей различного инструментария в рамках единой технологии интеграции, позволяющей создать универсальную расширяемую многоплатформную IDE для разработок любого рода.

С этого времени QSS бросает большую часть внутренних резервов на разработку собственного проекта в рамках Eclipse - своей графической IDE, поддерживающей Си и C++. В марте 2002 г. выходит пресс-релиз QSS с анонсом показа новой QNX IDE на конференции Embedded Systems Conference (ESC) в Сан-Франциско. Новость получает широкий отклик и подхватывается многими сетевыми компьютерными изданиями.

Демонстрация возможностей QNX IDE на ESC имела колоссальный успех. И вызван он был не столько богатством функциональности самой IDE (уж чем-чем, а этим сейчас уже никого не удивишь), сколько тем изяществом, с которым технология Eclipse позволила объединить всю линейку инструментальных средств в рамках общего интерфейса, значительно упростив навигацию и обмен информацией между ними и сократив тем самым цикл разработки. Гвоздем программы в этом смысле была интеграция QNX IDE с Eclipse-версией системы контроля версий Rational ClearCase, представленной на конференции компанией Rational. QNX IDE и Rational ClearCase разрабатывались компаниями QSS и Rational абсолютно самостоятельно, но, будучи запущенными вместе на выставочном стенде, заработали вместе сразу, без какой-либо дополнительной настройки, показав всю мощь технологии Eclipse в области интеграции разнородных инструментов. Еще через месяц QSS получает за новую IDE высшую награду на выставке встраиваемых систем реального времени в Париже, проходившей в рамках SETI (Semaine Europeenne des Technologies de l’Information - “Неделя информационных технологий в Европе”), третьей по величине европейской выставке в ИТ-индустрии. Проект выходит на финишную прямую.

QNX IDE: интерфейс профайлера

Момент “икс” наступает в июне 2002 г.: QSS объявляет об официальном выходе версии QNX 6.2 и комплекта разработчика QNX Momentics, призванного заменить основанный на QNX 6.1 дистрибутив QNX Realtime Platform. Появление QNX Momentics ознаменовано также небольшой корректировкой стратегии QSS, чем, возможно, объясняется смена торговой марки. С этого времени комплект разработчика для QNX поставляется в трех вариантах, по мере нарастания сложности: некоммерческий пакет (Non-commercial Edition - NC), стандартный пакет (Standard Edition - SE) и профессиональный пакет (Professional Edition - PE). QNX IDE, наряду с другими мощными инструментами, входит в поставку профессионального пакета. В скором времени QSS планирует выпустить еще два профессиональных коммерческих дистрибутива, предназначенных специально для рынка телекоммуникаций (Netcom Edition - NE) и рынка автомобильной электроники (Automotive Edition - AE), дополненных специфичными для них расширениями.

Усилия QSS по созданию Eclipse-версии среды разработки на Си/C++ не могли остаться незамеченными. В июне 2002 г. QSS передает консорциуму часть исходных текстов QNX IDE и становится куратором проекта CDT (Си/C++ Development Tools), осуществляемого в рамках проекта Eclipse.org и имеющего своей целью реализовать в Eclipse среду разработки на Си/C++, не уступающую таковой на Java. Возглавляет проект ведущий разработчик QSS Себастиан Марино. Сотрудничество IBM и QSS вступает в новый этап.

К слову сказать, сотрудничество IBM и QNX Software Systems началось еще задолго до основания Eclipse.org. Когда OTI создавала Visual Age MicroEdition и встраиваемую виртуальную машину Java J9, предназначавшуюся специально для устройств с ограниченными ресурсами, перед разработчиками встал вопрос выбора встраиваемой ОС, под управлением которой среда исполнения Java будет функционировать. Три подразделения IBM провели независимые исследования и пришли к одному и тому же выводу: наиболее подходящую архитектуру для этого имеет встраиваемая ОСРВ QNX. Дополнительным аргументом в пользу QNX послужил также интерес IBM к рынку автомобильных мультимедийных систем, где применение встраиваемой ОС жесткого реального времени могло послужить решающим фактором. J9 была перенесена в QNX, и этот тандем уже тогда сослужил и IBM, и QSS неплохую службу.

В дальнейшем, когда проект VisualAge Micro Edition был перенесен под Eclipse и перерос в WebSphere Device Developer, IBM разделила свою встраиваемую среду исполнения Java на два направления - WebSphere Micro Environment (реализует различные варианты профиля JavaPowered для мобильных устройств типа сотовых телефонов и PDA и соответствует таким спецификациям J2ME, как CDC, CLDC и MIDP) и WebSphere Custom Environment (базируется на J9 и обеспечивает гибкий контроль над конфигурацией среды исполнения Java для встраивания в нестандартные устройства с ограниченными ресурсами). На настоящий момент оба эти продукта поддерживают QNX на большинстве доступных платформ (x86, ARM, PowerPC, MIPS и SH-4). Таким образом, благодаря технологии Eclipse разработчики ПО для QNX (как на Си/C++, так и на Java) теперь используют фактически одну и ту же IDE. Следовательно, проект по сплочению сообщества разработчиков вокруг единого центра удался и неукоснительно продолжает привлекать под знамена Eclipse все новых и новых сторонников.

Заключение

Менее чем за год существования консорциума Eclipse.org в его совет распорядителей вошли представители около 40 компаний. Сообщество Eclipse.org на сегодняшний день насчитывает свыше 1200 разработчиков более чем из 150 ведущих компаний - производителей программного инструментария. Факты говорят сами за себя: Eclipse -проект, который IBM открыла с гордостью, и эту гордость с каждым днем разделяет все большее число его участников.

“Архитектура имеет значение!” - эта фраза не раз повторялась руководством QSS в публичных выступлениях. Время показало, что это не просто рекламный слоган: именно архитектура снискала QNX ту репутацию, которую она имеет сейчас. История повторяется: растущий успех проекта Eclipse.org в очередной раз показал, что архитектурные преимущества и ориентация на открытые технологии в главной мере способствуют успеху новых начинаний. Архитектура закладывает фундамент проекта, определяя потолок его развития, а открытость технологий позволяет привлечь в проект новые идеи и силы, делая это развитие, с одной стороны, стремительным, а с другой - равномерным и сбалансированным. Эта идея была заложена QSS в проект QNX Realtime Platform и его продолжение - QNX Momentics; эта же идея лежала в основе проекта Eclipse.org. Теперь эти два проекта работают в тесном сотрудничестве, благодаря чему сегодня разработчики ПО для встраиваемых систем реального времени имеют доступ к мощнейшему инструментарию нового поколения, значительно облегчающему их труд и открывающему перед ними новые перспективы. Воистину приятно видеть, как сходные по идеологии начинания находят друг друга и преумножают свои достоинства, вместе двигаясь в одном направлении.

К автору, менеджеру SWD Software Ltd., можно обратиться по e-mail: n.gorbunov@swd.ru.