SWD Software Ltd. - официальный дистрибьютор QNX на территории России и стран бывшего СССР Операционная система реального времени QNX
Инструменты для создания надёжных встраиваемых систем и
интеллектуальных устройств любой сложности
QNX Software Systems - разработчик встраиваемой операционной системы QNX
  Стандартная версия

Eclipse, QNX и рынок встраиваемых систем. Момент "икс"

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

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

Очевидно, такую цель и преследовала компания IBM, передав в ноябре 2001 года в открытый проект Eclipse.org результат своей почти 10-летней работы общей стоимостью 40 миллионов долларов. Изначально проект Eclipse был внутренней разработкой 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, 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.



Рис. 1. Eclipse CDT - интерфейс менеджера проектов

Что такое Eclipse?

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

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



Рис. 2. Eclipse CDT - построение проекта

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

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

Ядро Eclipse целиком написано на Java - это обеспечивает IDE, построенным на его основе, переносимость между различными инструментальными средами при абсолютной идентичности получаемого пользовательского интерфейса. Также, поскольку все плагины для Eclipse тоже пишутся на Java, в комплект Eclipse SDK входит полнофункциональная среда разработки на Java (кстати, тоже построенная на базе Eclipse) - таким образом, скачав Eclipse SDK, разработчик немедленно получает все необходимые средства для разработки своих собственных плагинов, включая исходные тексты ядра. Это, кстати, в корне отличает Eclipse от конкурирующей Microsoft .NET, которая, будучи также расширяемой, при этом представляет собой закрытую платформу, расширять которую имеют право только официальные партнеры Microsoft. IBM, в свою очередь, считает, что открытые технологии разработки формируют гораздо более живой рынок, где продукты конкурируют по функциональности, а не на основании исторических предпосылок, и именно на этом поле IBM наиболее заинтересована играть (http://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 повеяло переменами, и сообщество разработчиков замерло в ожидании.



Рис. 3. Eclipse CDT - отладка проекта

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

Однако, на момент первого релиза связки "CodeWarrior - GNU C/C++" QNX поддерживала уже не только процессоры x86 и PowerPC, и ограничение функциональности инструментария означало бы снижение интереса к QNX на новых перспективных рынках. Тогда-то и зародился проект QNX Realtime Platform, призванный сделать из QNX не только солидную базу для встраиваемых систем, но и мощную инструментальную платформу, расширив ее прикладное окружение до уровня полноправной инструментальной ОС (а POSIX-совместимость QNX6 позволяла сделать это с легкостью!) и сплотив вокруг этой ОС единое сообщество разработчиков. Выпущенный QSS вскоре комплект QNX Realtime Platform включал в себя полную поставку ОС 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 Realtime Platform в мире QNX по части инструментария образовалось относительное затишье, и порой даже создавалось впечатление, что прикладное окружение QNX навечно отдано на откуп членам свободного сообщества. Впрочем, по официальным каналам изредка просачивалась информация, позволявшая судить о бурных подводных течениях внутри QSS - правда, о том, куда они приведут, пока еще никто не знал. Очевидно было, что основная цель QSS достигнута лишь частично: сообщество укрепилось, но все еще оставалось разбитым на три лагеря - по количеству доступных инструментальных ОС, в каждой из которых для разработки QNX-приложений использовался различный инструментарий высокого уровня. Интуиция подсказывала, что следующий шаг QSS будет направлен именно в сторону достижения "инструментального паритета". Сенсация разразилась в ноябре 2001 года, и дальше поток событий нарастал, как снежный ком.



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

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

С этого момента QSS бросает большинство своих внутренних резервов на разработку собственного проекта в рамках Eclipse - своей собственной графической IDE, поддерживающей C и 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 - "Неделя информационных технологий в Европе"), третьей по величине европейской выставке в ИТ-индустрии. Проект выходит на финишную прямую.

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



Рис. 5. QNX IDE - отладка нескольких процессов одновременно

К слову сказать, сотрудничество 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/C++, так и на Java - теперь используют фактически одну и ту же IDE; иными словами, проект по сплочению сообщества разработчиков вокруг единого центра удался и неукоснительно продолжает привлекать под знамена Eclipse все новых и новых сторонников.



Рис. 6. QNX IDE - интерфейс профайлера

Заключение

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

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

Николай Горбунов
SWD Software Ltd.
[email protected]