Сайт о телевидении

Сайт о телевидении

» » Разработка системы автоматического поиска объектов на изображении. Начало работы с платформой Eclipse (документация)

Разработка системы автоматического поиска объектов на изображении. Начало работы с платформой Eclipse (документация)

Eclipse представляет собой основанную на Java расширяемую платформу разработки с открытым исходным кодом. По сути - это просто среда разработки и набор сервисов для построения приложений на основе встраиваемых компонентов (плагинов). К счастью, в составе Eclipse имеется стандартный набор плагинов, в том числе хорошо известный инструментарий - Java Development Tools (JDT).

В то время как большинство пользователей, применяющих Eclipse в качестве интегрированной среды разработки Java (IDE), вполне им довольны, возможности его гораздо шире. Eclipse также включает в себя среду разработки плагинов (PDE), которая в первую очередь заинтересует тех, кто хочет расширить сам Eclipse, так как позволяет создавать свои инструменты, встраиваемые в среду Eclipse. Поскольку Eclipse полностью состоит из плагинов, у всех разработчиков инструментариев имеется возможность предложить свои расширения к Eclipse и предоставить пользователям последовательную и цельную интегрированную среду разработки (IDE).

Эта целостность и последовательность характерны не только для инструментов Java-разработки. Хотя Eclipse написан на Java, использовать его можно и с другими языками. К примеру, уже имеются (или разрабатываются) плагины, поддерживающие такие языки программирования как C/C++ и COBOL. Структура Eclipse может также использоваться как основа для других типов приложений, не имеющих отношения к разработке ПО, например, систем управления контентом.

Великолепным примером приложения на основе Eclipse является ПО IBM Rational Software Architect , которое легло в основу семейства инструментов IBM для разработки на Java.

Eclipse - это открытый исходный код

ПО с открытым исходным кодом выпускается под лицензией, имеющей целью гарантировать пользователям определённые права. Самое очевидное из них, конечно, то, что исходный код обязательно должен быть предоставлен пользователям, и они имеют полное право модифицировать и самостоятельно распространять ПО. Такая защита пользовательских прав достигается с помощью механизма под названием "copyleft": Лицензия программного обеспечения стоит на защите авторских прав (copyright) и запрещает распространение ПО, если пользователю не предоставлены такие права. Сopyleft-лицензия также требует, чтобы всё распространяемое пользователями ПО покрывалось исходной лицензией без изменений. Тем самым, смысл авторского права, по существу, переворачивается с ног на голову, а про copyleft-лицензию, использующую авторское право для наделения пользователя правами, а не для сохранения их за разработчиком ПО, часто в шутку говорят "все права извращены" (all rights reversed).

Большая часть распространённых опасений, неуверенности и сомнений относительно ПО с открытым исходным кодом основана на так называемой вирусной природе некоторых copyleft-лицензий. Идея состоит в том, что если вы используете ПО с открытым исходным кодом как часть собственной разрабатываемой программы, вы потеряете свою интеллектуальную собственность, так как лицензия "заразит" собой ваши личные части программы. Другими словами, лицензия может потребовать, чтобы всё программное обеспечение, имеющее в своём составе ПО с открытым исходным кодом, включая и любое вновь созданное ПО, распространялось с той же самой лицензией. Хотя это и верно для наиболее известной copyleft-лицензии - GNU General Public License (под которой, например, распространяется Linux), существуют и другие лицензии, обеспечивающие иное соотношение коммерческих и общественных интересов.

Open Software Initiative - OSI (Инициатива открытого ПО) - это некоммерческая организация, дающая чёткое определение тому, что представляет собой открытый исходный код, и осуществляющая сертификацию лицензий, удовлетворяющих её критериям. Eclipse распространяется в рамках лицензии EPL - Eclipse Public License (Открытая лицензия Eclipse) V1.0, одобренной OSI и нацеленной на то, чтобы облегчить коммерческое признание Eclipse, при этом сохраняя лояльность к авторам исходного кода.

Те, кто создаёт плагины к Eclipse или использует Eclipse как базу для разработки ПО, обязаны публиковать любой код Eclipse, который они используют либо модифицируют в рамках лицензии EPL, но имеют право лицензировать свои собственные дополнения, как им нравится. Собственный код, объединённый в комплект с ПО из Eclipse, не требует лицензирования в качестве открытого исходного кода, а сам исходный код не нужно делать общедоступным.

Несмотря на то, что большинство программистов не станет использовать Eclipse для разработки плагинов или создания на его базе новых продуктов, значимость основанной на открытом исходном коде природы Eclipse велика не только потому, что благодаря ей Eclipse доступен совершенно бесплатно (и вопреки тому, что коммерчески ориентированная лицензия подразумевает, что плагины могут стоить денег). Открытый исходный код содействует инновациям и создаёт стимул для разработчиков (даже коммерческих) вносить свой исходный код как вклад в общую копилку. Для этого есть несколько причин, но едва ли не самая существенная состоит в том, что чем больше разработчиков вносит свой вклад в проект, тем более значимым он становится для всех. А когда проект становится полезным, всё большее число разработчиков будут использовать его и создадут вокруг него сообщество, подобное тем, что сформировались вокруг Apache и Linux.

Что такое Eclipse?

Eclipse - это сообщество разработчиков открытого исходного кода, чьи проекты нацелены на построение открытой платформы для разработки, состоящей из расширяемых среды разработки, инструментария и библиотек времени выполнения для построения, развёртывания и управления программным обеспечением в период его жизненного цикла. Фонд Eclipse (Eclipse Foundation) - это некоммерческое поддерживаемое участниками объединение, которое содержит проекты Eclipse и помогает совершенствовать сообщество разработчиков открытого исходного кода и "экосистему" дополняющих друг друга продуктов и сервисов.

Проект Eclipse был создан в ноябре 2001 года компанией IBM и поддержан консорциумом поставщиков программного обеспечения. Фонд Eclipse был создан в январе 2004 года как независимая некоммерческая организация, выступающая распорядителем сообщества Eclipse. Он создавался, чтобы помочь независимому от поставщиков, открытому и прозрачному сообществу вырасти вокруг Eclipse. Сегодняшнее сообщество Eclipse состоит из частных лиц и организаций, представляющих индустрию программного обеспечения.

Фонд Eclipse контролирует и направляет текущие разработки Eclipse. Фонд обслуживает сообщество, но разработчики открытого исходного кода, называемые коммитерами и, по существу, работающие над проектами Eclipse, не состоят в его штате. Обычно коммитеры Eclipse числятся в каких-либо организациях либо являются независимыми разработчиками, добровольно отдающими своё время работе в проекте открытого исходного кода.

Теперь, взглянув на теоретические, исторические и политические аспекты Eclipse, давайте рассмотрим сам продукт.

Рабочее пространство Eclipse

При первом запуске Eclipse вы увидите страницу приветствия внутри рабочего пространства (см. рисунок 1). У пользователя Eclipse есть несколько возможностей перейти на страницу обзора (overview page), что я и рекомендую сделать (см. рисунок 2). Далее, можно ознакомиться с информацией по новым функциям, изучить некоторые примеры или пройти учебный курс.

Рисунок 2. Страница обзора Eclipse

Рабочее пространство Eclipse состоит из нескольких панелей, называемых представлениями, например навигационное или схематическое представления (navigator or outline views). Набор таких представлений называется перспективой. Одна из наиболее распространённых перспектив - перспектива Ресурсы (Resource), которая представляет собой базовый набор представлений для управления проектами и просмотра, а также редактирования файлов проекта.

Я рекомендую большинству начинающих пользователей начинать со страницы обзора, показанной на рисунке 2, и узнать больше об Eclipse. Раздел "основы рабочего пространства" (workbench basics) содержит много полезной начальной информации о различных компонентах Eclipse и о том, как они взаимодействуют друг с другом. Уделите несколько минут чтению этого материала, а затем давайте погрузимся в инструменты разработки Java Development Tools (JDT) Eclipse. Лучший способ чему-либо научиться - попробовать это на практике.

Продолжая этот короткий обзор Eclipse, мы создадим новый проект на Java. Выберите File > New > Java Project (Файл > Новый > Проект Java) и введите Hello в ответ на запрос имени проекта, а затем нажмите Finish .

Теперь посмотрим на перспективу "Java" (если вы ещё в ней не находитесь). В зависимости от того, как вам больше нравится управлять своим экраном, можно либо сменить перспективу в текущем окне, выбрав Window > Open Perspective > Java (Окно > Открыть Перспективу > Java) , либо открыть новое окно, выбрав Window > New Window (Окно > Новое Окно) , и выбрать новую перспективу.

Как и следовало ожидать, перспектива Java имеет набор представлений, предназначенных для ведения разработки на Java. Одно из них, расположенное в левом верхнем углу, представляет собой иерархию, содержащую различные пакеты Java, классы, JAR-архивы и разнообразные файлы. Это представление называется Обозреватель Пакетов (Package Explorer). Обратите внимание, что в главном меню добавлены два новых пункта: Source и Refactor.

Java Development Tools (JDT)

Чтобы опробовать среду разработки Java, мы создадим и выполним приложение под названием "Hello World". Находясь в перспективе Java, нажмём правой кнопкой на папке с исходным тестом проекта "Hello" (src) и выберем New > Class (Новый > Класс) , как показано на рисунке 3. В появившемся диалоговом окне введём Hello в качестве имени класса. Ниже надписи Which method stubs would you like to create? (Какие заглушки методов вы желаете создать?) отметим public static void main(String args) и нажмём Finish .

Рисунок 3. Создание нового класса в перспективе Java

При этом будет создан файл.java с классом Hello и пустым методом main() в области редактора, как показано на рисунке 4. Добавим нижеследующий код к методу (обратите внимание, что описание для i было преднамеренно опущено).

Рисунок 4. Класс Hello в редакторе Java

Набирая текст, вы заметите некоторые возможности редактора Eclipse, в том числе проверку синтаксиса и автоматическое дописывание кода. Кроме того, когда вы вводите открывающую круглую скобку или двойные кавычки, Eclipse автоматически вставляет для них закрывающую пару и помещает курсор в середину.

В остальных случаях вы можете вызвать автоматическое дописывание кода с помощью комбинации Ctrl+1 . Функция дописывания кода выдаёт контекстно зависимый список вариантов, из которого можно осуществлять выбор с помощью клавиатуры или мыши. Варианты могут представлять собой список методов, присущих конкретному объекту, или фрагмент кода, основанный на различных ключевых словах, таких как for или while .

Проверка синтаксиса зависит от инкрементной компиляции. По мере сохранения вами кода он компилируется в фоновом режиме и проверяется на синтаксические ошибки. По умолчанию синтаксические ошибки подчеркиваются красным, а слева на полях появляется красная точка с белым знаком X. Другие ошибки помечаются на полях редактора символом электрической лампочки; это те проблемы, которые редактор мог бы за вас исправить (функция под названием Quick Fix).

В вышеприведённом коде знак лампочки находится возле оператора for , так как было пропущено описание для i . Двойное нажатие мышкой на лампочку вызовет появление списка предлагаемых исправлений. В нашем случае будет предложено создать поле класса i , локальную переменную i или параметр i для метода; выбор мышкой любого из этих вариантов покажет тот код, который будет сгенерирован. На рисунке 5 показан список предлагаемых вариантов и код, предлагаемый в случае локальной переменной.

Рисунок 5. Варианты, предлагаемые функцией Quick Fix

Двойное нажатие мышкой на предложении вставляет код на нужное место в программе.

Если программа компилируется без ошибок, её можно запустить, выбрав Run в меню Eclipse. (Обратите внимание на отсутствие отдельного шага для компиляции, потому что компиляция выполняется по мере сохранения кода. Если в вашем коде отсутствуют синтаксические ошибки, он готов для запуска.) Появляется диалог "Launch Configurations" (Конфигурации Запуска) с нужными значениями по умолчанию; нажмите Run внизу справа. В нижней панели появляется новая панель с закладками (Консоль), отображающая результат работы программы, как показано ниже.

Рисунок 6. Результат работы программы

Можно также запустить программу в отладчике Java. Сначала нужно установить контрольную точку в main() System.out.println() с помощью двойного щелчка мышки на сером поле с левой стороны окна редактирования рядом с вызовом System.out.println() . Появится голубая точка. В меню Run выберите команду Debug (Отладка) . Как описано раньше, появится диалог "Launch Configurations". Выберите команду Run . Перспектива автоматически сменится на перспективу Debug, содержащую целый ряд интересных новых представлений, как показано ниже.

Рисунок 7. Перспектива Debug

Обратите внимание на представление Debug в левом верхнем углу перспективы. Это представление показывает стек вызовов и содержит панель инструментов в строке заголовка, позволяющую управлять выполнением программы. На панели имеются кнопки для продолжения, приостановки или завершения программы, перехода к следующему оператору, перешагивания следующего оператора или возвращения из метода. Панель наверху справа содержит целый ряд представлений с закладками, в том числе Variables (Переменные), Breakpoints (Контрольные точки), Expressions (Выражения) и Display (Отображение). Сейчас выбрана закладка Variables, поэтому мы можем видеть текущее значение переменной i .

Более подробную информацию о любом из представлений можно получить с помощью контекстной подсказки; для этого щёлкните мышкой на заголовке представления и нажмите F1 .

Дополнительные плагины

В дополнение к плагинам типа JDT, предназначенным для редактирования, компиляции и отладки приложений, имеются плагины, поддерживающие весь процесс разработки: моделирование, автоматизацию построения, тестирование модулей, тестирование производительности, управление версиями и конфигурацией.

Eclipse содержит плагин для работы с Системой параллельных версий (CVS - Concurrent Versions System) для управления исходным кодом. Плагин Team (Команда) соединяется с CVS-сервером, позволяя членам команды разработчиков работать с набором файлов, содержащих исходные тексты, не вмешиваясь в изменения, вносимые другими. Мы не станем более подробно исследовать здесь управление исходными текстами из Eclipse, так как для этого потребуется установка CVS-сервера, хотя возможности, связанные с поддержкой команды разработчиков, а не только самостоятельной разработки, является важной и неотъемлемой частью Eclipse.

Плагины, которые поддерживаются и распространяются Фондом Eclipse можно найти на Web-сайте Eclipse. Наиболее полный список имеющихся плагинов доступен на странице Eclipse Plug-in Central, которая служит каталогом плагинов.

Архитектура платформы Eclipse

Платформа Eclipse содержит мощный набор плагинов (см. рисунок 8), которые поддерживают проекты, такие как JDT и PDE.

Рисунок 8. Упрощенная архитектура платформы Eclipse

Тёмно-синие блоки обозначают компоненты, являющиеся центральной частью Платформы функционально насыщенных клиентов (Rich Client Platform - RCP) в Eclipse. Сама концепция RCP выходит за рамки статьи, но будем считать, что RCP - это просто набор плагинов из Eclipse, который люди могут использовать в разработке приложений, например Lotus Notes® 8. Светло-голубые блоки представляют необязательные (хотя и рекомендуемые) компоненты для включения в приложения на базе RCP. А серые блоки - совершенно необязательны. Платформа состоит из нескольких компонентов, мы рассмотрим некоторые из них:

Runtime Runtime - это код, который определяет модель плагинов Eclipse, основанную на спецификации OSGi, а также на представлении о расширениях и точках расширения. Runtime также предоставляет дополнительные сервисы, такие как ведение системного журнала и параллелизм. JFace/SWT Пакет инструментов Standard Widget Toolkit (SWT) представляет собой набор виджетов, отвечающих за пользовательский интерфейс и функции Eclipse. JFace - это просто надстройка над SWT, предоставляющая несколько классов Model-View-Controller (MVC) для облегчения разработки графических приложений. Workbench (Рабочее пространство) Рабочее пространство придаёт Eclipse его индивидуальность. Именно на этом уровне реализована концепция представлений, перспектив и таких вещей как окна редактирования. Help (Поддержка Пользователей) Этот компонент Eclipse позволяет предоставлять поддержку вашим пользователям. Это можно сделать через справочную систему, которая позволит пользователям искать справочную документацию, либо с помощью "шпаргалок", которые для конечных пользователей могут представляться как интерактивные списки задач. Update (Обновление) Компонент update предоставляет в Eclipse средства, позволяющие обновлять приложения с одной версии на другую. Team (Команда) Компонент team - это инфраструктура, позволяющая фирмам-разработчикам подключать свои собственные системы управления версиями. Образцом реализации провайдера является плагин CVS, встроенный в Eclipse.

Заключение

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

Добро пожаловать в экосистему Eclipse. Нашей целью было помочь вам быстрее освоить платформу Eclipse. Мы добились этого с помощью вступительного текста и простого практического упражнения. Используйте знания, полученные при чтении этой статьи, и станьте активным членом экосистемы Eclipse.

В данной статье я хотел рассказать о том, как создавать приложения при помощи Eclipse RCP (Rich Client Platform). Поводом для написания послужил тот факт, что на Хабре абсолютно отсутствуют статьи, описывающие данную платформу. В качестве примера мы создадим пользовательскую форму ввода; корректность данных будет проверяться при помощи JFace Data Binding framework. Для затравки приведу ниже скриншот с тем, что у нас должно получиться.

Что такое Eclipse RCP

Для начала, все же необходимо сказать, что же такое Eclipse RCP. Eclipse – это среда разработки, написанная на Java, развиваемая и поддерживаемая Eclipse Foundation (участниками которого являются IBM, SAP, Oracle, компании, предлагающие продукты на основе Eclipse RCP и участвующие в развитии экосистемы Google, RedHat, Adobe, Cisco, Intel). Eclipse RCP – это набор плагинов для создания, так называемых, rich client application. Все что видит пользователь, открывая Eclipse IDE, является плагином, созданным на основе этой платформы. Пользователь может создавать свои плагины на основе огромного количества уже существующих, также при необходимости можно найти большинство популярных фреймворков, таких как Hibernate, Google Guice, Google Guava, JUnit, TestNG в виде плагинов. Также стоит отметить, что архитектура времени выполнения основана на спецификации сервисной платформы OSGI , данная спецификация описывает способы создания и работы модульных приложений. Eclipse, как уже упоминалось выше, написана на Java и позиционируется как кроссплатформенный продукт (в 90% случаев RCP приложение соберётся на Windows, Linux и Mac). Все плагины, составляющие ядро платформы, и большинство сторонних плагинов распространяются под лицензией EPL (Eclipse Public License). Пользовательский интерфейс RCP приложений основан на визуальных компонентах фреймворков SWT и JFace, а также на собственных Eclipse виджетах. Рисунки, приведённые ниже, показывают из каких компонентов состоит приложение, основанное на платформе RCP, и структуру самой платформы Eclipse.


Рисунок 1 - Компоненты используемые в RCP приложении (рисунок взят с этого сайта)


Рисунок 2 – Архитектура Eclipse (рисунок взят с этого сайта)

Плюсы и минусы платформы
Главный вопрос - чем же так хороша данная платформа и зачем ее использовать для разработки десктопных приложений (к слову, возможно разрабатывать веб приложения и приложения для мобильных платформ). Модульность, кроссплатформенность, поддержка мультиязычности, бесплатность, огромное количество существующих плагинов, библиотек и фреймвороков. Все это позволяет создавать приложения коммерческого уровня (ссылка на список существующих приложений разработанных на данной платформе приведена в конце статьи). К минусам можно отнести достаточно высокий уровень вхождения, так как для разработки серьёзного приложения необходимо знать хотя бы в общих чертах, как работает OSGI фреймворк, уметь работать с компонентами и виджетами SWT и JFace. Также для русскоговорящих разработчиков проблемой будет найти какие-либо материалы или книги об упомянутых выше фреймворках и библиотеках (ссылки на найденные ресурсы, в том числе и на русскоязычные, приведены в конце статьи), хотя в Европе и США периодически проводятся конференции, которые организуют участники Eclipse Foundation, в Германии издается специальный журнал, рассказывающий о новых плагинах и содержащий уйму примеров их применения, а также существует целая серия книг на немецком, которая описывает все ньюансы и тонкости разработки. На английском можно найти специальную серию книг eclipse series издательства Addison-Wesley, также можно найти пару книг от издательства Apress. Но на нашем родном языке материалов и книг ничтожно мало.

Приступаем к работе

Установка необходимых плагинов
Давайте перейдём непосредственно к созданию нашего первого RCP приложения. Для работы нам необходимо скачать сборку: Eclipse for RCP and RAP Developers c официального сайта. Если же Eclipse IDE уже установлена, то можно воспользоваться менеджером обновлений. Выберем в главном меню пункт Help->Install New Software. В появившемся окне Install сверху выберем из выпадающего списка нужный нам сайт с обновлениями - download.eclipse.org/releases/indigo , если такого сайта в списке нет, то нажмём справа кнопку Add, в поле Name напишем – Indigo Update Site, в поле Location – адрес, приведённый выше, нажмём OK (если при добавлении адреса появляется сообщение – Duplicate location, значит адрес уже существует в списке Available Software Sites, список сайтов обновлений можно посмотреть в предыдущем окне Install если щёлкнуть по ссылке Available Software Sites, которая находится под выпадающем списком). После выбора сайта обновлений, внизу появится древовидный список (если отмечен чекбокс Group items by category), откроем пункт General Purpose Tools и выберем Eclipse Plug-in Development Environment , затем откроем пункт EclipseRT Target Platform Components и отметим плагин – Eclipse RCP Plug-in Developer Resources , именно эти два плагина нам необходимы для создания нашего проекта. Далее нажмём два раза Next, примем лицензионное соглашение и щёлкнем по кнопке Finish; все, начнется установка необходимых плагинов. После установки нам будет предложено перезагрузить Eclipse, что мы и сделаем.


Рисунок 3 – Окно установки плагинов

Создание проекта
После перезагрузки выберем в главном меню пункт File->New->Other, выберем пункт Plug-in Development, далее, в ниспадающем меню отметим Plug-in Project.


Рисунок 4 – Меню выбора типа создаваемого проекта

Нажмём Next, нам необходимо дать имя нашему проекту, пусть он будет называться first.rcp.application, опять нажмём Next. В следующем окне нам необходимо указать имя приложения, в поле Name напишем First RCP Application. Снимем флажок с пункта Generate an activator, a Java class that controls the plug-in’s life cycle; для нашего простого приложения класс активатор не нужен. Оставим флажок на пункте - This plug-in will make contributions to the UI, так как наше приложение будет содержать пользовательский интерфейс. Оставим третий пункт Enable API Analysis неотмеченным. На вопрос - Would you like to create a rich client application? ответим Yes.


Рисунок 5 – Окно создания плагина

Нажмём Next, нам будет предложено выбрать шаблон для будущего приложения, выберем - Hello RCP и нажмём Next.


Рисунок 6 - Окно выбора шаблона RCP проекта

В последнем окне, в поле Application window title напишем - User Form, в поле Application class – MyApplication . Флажок Add branding оставим неактивным. Нажмём кнопку Finish. Нам будет предложено переключиться на перспективу Plug-in Development perspective, согласимся с этим предложением.


Рисунок 7 - Окно конфигурации шаблона RCP проекта

Структура проекта
Итак перед нами структура только что созданного проекта.


Рисунок 8 – Структура проекта

Содержание пяти классов в пакете first.rcp.application в данный момент нас не итересует, скажу только, что класс MyApplication это в некотором роде метод main() обычной Java программы, данный класс отвечает за то как будет запущен наш плагин и как он будет остановлен. В классе ApplicationWorkbenchWindowAdvisor , мы можем установить размер окна приложения при помощи следующей строки кода:
configurer.setInitialSize(new Point(400, 300));
Также мы можем увидеть, что по умолчанию не будет показываться панель инструментов и строка состояния:
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
Последней строкой устанавливается заголовок главного окна:
configurer.setTitle("User Form");
Класс ApplicationActionBarAdvisor отвечает за настройку строки меню нашего приложения. Класс Perspective отвечает за расположение и размер редакторов (editors) и видов (views), которые находятся в данной перспективе (perspective), в RCP приложении должна быть хотя бы одна перспектива.

Запуск проекта
Для того, чтобы запустить только что созданное нами приложение, нам необходимо перейти в папку META-INF и открыть файл MANIFEST.MF , если вы вдруг его закрыли (этот файл открывается по-умолчанию при создании проекта).


Рисунок 9 – Редактор свойств RCP приложения

Данный файл позволяет нам менять многие настройки проекта, подключать дополнительные плагины, подключать и управлять расширениями, настраивать сборку нашего плагина и многое другое. Мы находимся на вкладке Overview, в разделе Testing нажмём на ссылку - Launch an Eclipse application, через мгновение на экране появится окно нашего приложения, закроем его и перейдём к следующему этапу.


Рисунок 10 – Окно нашего приложения

Добавление вида (view)

Добавление расширения
Нашей задачей является создание вида (view), на который мы сможем поместить элементы графического интерфейса. Перейдём опять к файлу MANIFEST.MF , выберем внизу вкладку – Extensions. Мы видим, что по умолчанию у нас есть два расширения: org.eclipse.core.runtime.applications и org.eclipse.ui.perspectives. Первое расширение связано с классом нашего приложения MyApplication , если мы выберем данное расширение и развернём древовидный список до узла first.rcp.application.MyApplication (run), мы увидим, что поле class содержит название именно этого класса. Вернувшись к корневому узлу данного списка, справа в разделе Extension Details мы увидим два поля, значения которых мы тоже можем поменять (не будем сейчас этого делать): ID – идентификатор приложения и Name – название приложения.

Второе расширение отвечает за настройку перспективы нашего приложения. Файл MANIFEST.MF позволяет нам не заглядывая в код класса Perspective, указать, какие виды и/или редакторы будет содержать данная перспектива, их положение, размер и соотношение. Щёлкнув на этом расширении и перейдя к дочернему пункту мы увидим, что в разделе Extension Element Details мы можем указать класс перспективы, идентификатор и имя. Необходимо отметить, что подобные изменения, как говорилось выше, можно произвести путём редактирования непосредственно кода класса, который связан с данным расширением и редактированием файла plugin.xml , но не хотелось бы усложнять создание нашего первого проекта.


Рисунок 11 – Вкладка с расширениями нашего проекта

Нам необходимо добавить новое расширение для создания вида. Для этого нажмём на кнопку Add и в появившемся окне, в поле Extension Point filter введём views, должно остаться только одно расширение – org.eclipse.ui.views, выберем его и нажмём кнопку Finish.


Рисунок 12 – Окно выбора нового расширения

В списке расширений у нас должно появиться ещё одно, третье по счёту расширение.

Настройка вида
Щёлкнем по добавленному нами расширению правой кнопкой мыши, появится контекстное меню, выберем в нем New->view, тем самым мы добавим элемент к нашему расширению (этим элементом и является необходимый нам вид). В правой части появятся настройки данного элемента. Для начала создадим класс для нашего вида. Сделать этом мы можем нажав на ссылку class*.


Рисунок 13 – Настройки вида (view)

Откроется стандартный диалог создания Java класса, дадим ему название – MainView; как мы можем заметить, данный класс наследуется от класса org.eclipse.ui.part.ViewPart , родительского класса для всех видов. Завершим создание класса нажав на кнопку Finish. Осталось совсем немного, после создания класса для нашего вида перед нами откроется его код, создадим статическую переменную, которая будет содержать идентификатор данного вида, в качестве идентификатора мы зададим каноническое имя данного класса. Напишем следующее:

public class MainView extends ViewPart {
public static final String ID = MainView.class.getCanonicalName();

}
Ввернёмся к файлу MANIFEST.MF , откроем вкладку Extension, скопируем содержимое поля class* и вставим его в поле ID. Теперь имя класса и идентификатор этого вида совпадают, данный приём является хорошей практикой, так как всегда позволяет быстро найти нужный вид и узнать его идентификатор. В поле name* напишем – User Form. Все вид создан, осталось связать его с нашей перспективой, так как вид сам по себе не может быть использован, иными словами он должен принадлежать какой-либо перспективе.

Настройка расположения вида
Дальнейшие манипуляции мы можем произвести оставаясь в редакторе расширений или же открыть код класса перспективы - Perspective.java , что мы и сделаем. В классе Perspective , перейдём в метод – createInitialLayout(), данный метод задаёт начальное положение видов и редакторов. В методе напишем следующие две строки кода:
layout.setEditorAreaVisible(false);
layout.addStandaloneView(MainView.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());
Первая строка указывает объекту layout, что нам не нужна область для редактирования, так как у нас только один вид и нету редакторов. Вторая строка добавляет наш вид, причём как автономный (standalone). Первым параметром является идентификатор нашего вида. Второй параметр это булево значение, отвечающее за то, будет или нет показан заголовок нашего вида (User Form). Третий параметр предназначен для указания ориентации вида в перспективе, так как вид у нас один и займёт все пространство перспективы, то данное значение может быть любым. Четвёртый параметр определяет положение этого вида по отношению к другим видам или редакторам, так как, в нашем случае, вид один он должен занимать все пространство перспективы. Последний пятый параметр, идентификатор области редактирования (editor area). Сохраним наши изменения.
Запуск приложения с добавленным видом
Вернёмся к файлу MANIFEST.MF и снова запустим наше приложение, для этого перейдём на вкладку Overview, в разделе Testing, щёлкнем по ссылке Launch an Eclipse application. Большого различия с тем как выглядела форма при предыдущем запуске мы не увидим, добавилась только вкладка с нашим видом – User Form.


Рисунок 14 – Окно нашего приложения с добавленным видом

На сегодня все, продолжение будет в следующей статье.

Eclipse – фрэймворк, позволяющий разрабатывать кроссплатформенные модульные приложения. Eclipse среда разработки, которая чаще всего используется для создания различных приложений для рабочего стола. Архитектура платформы несложная – ядро для загрузки фрэймворка, среда для поставки динамических компонентов, текстовые редакторы и файловые буферы, рабочая среда для написания, компиляции и запуска кода.

Фрэймворк подразумевает создание программного обеспечения с открытым кодом, поэтому лицензия свободная и можно Eclipse скачать бесплатно. Платформа, благодаря подключению разных модулей, позволяет разрабатывать практически любое клиентское приложения на всех популярных языках программирования - Java, C++, Python и т.д. Можно подключить отдельный модуль для работы с графическими интерфейсами. Созданные приложения работают под разными операционными системами – они подойдут для Windows, Linux и Mac OS, также поддерживается Android. Программы, созданные на Eclipse, представляют собой отдельные модули, которые подключают к основному приложению. Некоторые приложения, объединенные в библиотеки, для Эклипс скачать можно в открытом доступе, что значительно упростит работу над собственной программой.

Eclipse является независимым от платформ семейства Виндовс фрэймворком, за исключением стандартной библиотеки Swing для Java, замененной SWT, которая создается для всех известных и используемых платформ для программирования. Библиотека базируется на операционной системе, поэтому используются графические элементы ОС. Такая особенность может привести к тому, что приложение будет несовместимым с другими операционными системами. Можно Eclipse скачать на русском языке, что значительно упростит работу с приложениями под разные ОС. К тому же, в Интернете достаточно много справочной информации и форумов, посвященных фрэймворку.

Преимущества среды разработки Eclipse:

  • поддержка всех популярных языков программирования;
  • разработка приложений под разные операционные системы;
  • возможность бесплатно скачать нужные модули;
  • подключаемые модули обеспечивают гибкость фрэймворка;
  • свободная лицензия и открытый исходный код.

Что вам дает вклад IBM в сообщество разработчиков open source

Марк Эриксон (Marc Erickson) и Ангус Макинтайр (Angus McIntyre)
Опубликовано 01.11.2001

Платформа Eclipse создана для построения интегрированных сред разработки (IDE). Она может использоваться для создания различных сквозных вычислительных решений для множества сред выполнения программ. При выборе архитектуры, создателям инструментов необходимы:

  • Равные условия и полное раскрытие информации при отсутствии скрытых API и интерфейсов от инструмента к инструменту. Eclipse предлагает для этой цели открытый исходный код платформы. Для проверки качества, портативности и быстродействия кода опубликованные API тестируются консорциумом смежных индустрий.
  • Свобода в расширении платформы для достижения новых возможностей. Eclipse предоставляет возможность создания производных работ, включая перераспределение платформы. Использование Eclipse позволяет разработчикам инструментов сфокусироваться на собственных основных задачах и новых моделях для технологии разработки.
  • Получение своевременных ответов на требования об изменениях и улучшениях продукта, предоставляемых контролируемым и организованным способом. Посредством сайта www.eclipse.org разработчики могут вносить различные изменения. Это достигается путем совместной работы и всяческого содействия разработчиков в развитии платформы.

Вопросы и ответы

    Что такое Eclipse.org?

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

    Что представляет собой платформа Eclipse?

    Основной идеей проекта Eclipse является создание "Apache для инструментов разработчика". Под этим подразумевается создание инфраструктуры с открытым кодом, предоставляющей множество базовых сервисов, так необходимых разработчикам ПО. Это должен быть "инструментарий для разработки инструментариев". Являясь не просто набором API, инфраструктура Eclipse будет состоять из реального кода, созданного для выполнения реальной работы.

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

    Почему IBM распространяет Eclipse в виде открытого кода?

    Открытый код – это единственный способ предоставить открытую платформу для интеграции инструментов. Кроме того, использование открытого кода влечет за собой и другие преимущества.

    Основным из таких преимуществ является повторное использование продуктов. Зачем что-либо перестраивать, если оно уже существует в рабочем формате? Используя открытую платформу Eclipse, создатели инструментов могут сфокусироваться на области собственных разработок, предоставляя инструментальную инфраструктуру для построения интегрированных сред разработки (IDE). Как бы то ни было, использование чужого кода начинает завоевывать доверие.

    Доверие к любой новой архитектуре или платформе завоевывается долго. К примеру, тяжело завоевать доверие разработчиков в создании инструментов, содержащих частного рода интерфейсы, которые ограничивают использование приложения в отдельно взятой операционной системе (к примеру, Windows). Кроме того, трудно завоевать доверие создателей инструментов, когда различные уровни API поставляются с разными уровнями инструментов (к примеру, API сообщества, отличающиеся от корпоративных API).

    Платформа Eclipse позволяет добиться доверия, предоставляя исходный код платформы.

    Открытый код предоставляется для всех API, без каких-либо внутренних, собственных или скрытых интерфейсов. Разработчики, чье доверие завоевывается долго, могут видеть код и делать соответствующие выводы. Доверьтесь исходникам и внедряйте новшества!

    Объединение разработчиков открытого кода может также помочь в создании более качественного кода. При совместной работе над кодом создатели вкладывают в него дополнительные усилия. Такой код становится отражением их работы, порождением индивидуальной и корпоративной репутации. Доверьтесь исходникам и устанавливайте свои позиции на рынке!

    Открытый проект, основывающийся на чистых спецификациях, может предоставлять код, который легче понять. Интерфейс описывает (выражаясь терминами "черного ящика") абстрактное поведения компонента. Исследуя исходники, разработчики могут построчно разобрать действие кода. Тяжело довериться чужому интерфейсу. Доверьтесь исходникам, и исследуйте технологию!

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

    Работать над сложной технологией в одиночку довольно тяжело. Несколько создателей инструментов могут взять на себя смелость и совместно исследовать новую технологию. Доверьтесь исходникам, чтобы уменьшить риск!

    Поставщики инструментов приходят и уходят. Корпоративные разработчики хотят быть уверенными в долгосрочной поддержке платформы. При наличии исходного кода корпорации могут в короткий срок начать свою работу и поддерживать бизнес в течение долгого периода: Доверьтесь исходникам, чтобы развивать свой бизнес!

    Гибкость – вот основное свойство Eclipse. С платформой Eclipse не удовлетворяющий вас компонент можно модифицировать по вашему требованию. К примеру, если вас не устраивает редактор, создайте собственный или подключите один из популярных редакторов, созданных на рынке открытых компонентов, предлагаемом платформой Eclipse. Желаете привязать новую платформу размещения в существующую сквозную поддержку? Доверьтесь исходникам и создавайте плагины!

    Итак, открытый исходный код, открытое сообщество и открытая платформа устанавливают равные условия которые необходимы малым и крупным создателям инструментов для поддержки сквозных проектов разработки и исследования новых горизонтов.

    Вы все еще сомневаетесь?.. Поблагодарим Фрэнка Хэкера (Frank Hecker) за его великолепную работу по созданию магазина с открытым исходным кодом (смотрите ссылку в разделе Ресурсы).

    На каких платформах доступна Eclipse?

    Eclipse была реализована и протестирована для Windows NT, Windows XP (Beta), Windows 2000, Windows 98, Windows ME и Red Hat Linux Version 7.1. Технология Eclipse была написана на языке Java, что позволяет легко использовать ее в широком кругу различных платформ.

    Будет ли Eclipse перенесена на другие платформы?

    Это вопрос предстоит решить, однако в этом и есть вся красота платформы Eclipse. Создатели инструментов могут принять технологию Eclipse на вооружение и исследовать с ее помощью границы новых возможностей, будучи уверенными в проверенной индустрией платформе с открытыми инструментами.

    Какова стоимость платформы Eclipse?

    Платформа Eclipse доступна под лицензией Common Public License. Детали лицензии указаны на сайте http://www.eclipse.org.

    Как быть с тем, что разработчики инструментов в действительности не горят желанием иметь дело с исходным кодом, и не могут извлечь из него особой выгоды?

    Доступ к исходникам зачастую позволяет быстро определять проблемы, избавляет от двойной работы и ускоряет завершение работы над новой совместимой технологией.

    Не приведет ли это в конечном итоге к разделению продукта на несовместимые версии?

    Сообщество Eclipse обладает правом определять и утверждать "официальные" версии платформы Eclipse. Участники сообщества могут также вносить для собственных нужд изменения и дополнения. Впрочем, основы кода различаются, и создание индивидуальной версии вне проекта Eclipse становится все сложнее. Возрастают также затраты на перенос в нее улучшений из "официальной" версии. Таким образом, все члены сообщества Eclipse заинтересованы в совместной работе над общей основной технологией и инфраструктурой Eclipse.

    Будут ли приняты шаги для определения "официальной" версии в поставляемых продуктах (к примеру, как составной части бренда наподобие "Eclipse Inside")?

    Этот вопрос рассматривается на совете директоров Eclipse.

    Каков риск потребителя при использовании индивидуальных версий?

    Обычно, "официальная" версия платформы Eclipse после тестирования и обзора помещается на сайт www.eclipse.org. Эта версия поддерживается через Eclipse.org. Индивидуальные версии должны полностью поддерживаться поставщиком, поэтому выгода, получаемая при сотрудничестве с членами сообщества, теряется.

    Будут ли создатели инструментов беспокоится об открытом коде технологии Eclipse, "портящем" другой код, если они используют его в собственных проектах?

    Eclipse поставляется под лицензией Common Programming License, которая не позволяет "портить" другой код, вызывающий код Eclipse с использованием открытых API.

    А что насчет неприятных моментов, которые пользователи могут найти в исходном коде Eclipse, например ошибок?

    Разработка открытого кода увеличивает шансы нахождения и исправления как небольших, так и серьезных ошибок. Они обнаруживаются и исправляются оригинальным разработчиком или членами сообщества.

    Может ли раскрытие исходного кода выдать конфиденциальные планы и стратегии конкурентам?

    Да, по-существу мы делимся стратегиями с нашими конкурентами. Несомненно, существуют и более значительное мнение. Разработчики устали интегрировать инструменты только в свои приложения. Они устали тратить время на выяснение того, как заставить инструменты работать вместе в сквозном вычислительном окружении. При помощи платформы Eclipse каждый сможет извлечь выгоду из полного понимания того, как интегрировать IDE на промышленном уровне. Мы делаем это исключительно для того, чтобы упростить работу конечного разработчика.

    Могут ли пользователи просто использовать исходный код Eclipse и прибегать к поддержке членов сообщества без адекватной отдачи?

    Потенциально да, однако, рано или поздно возможность взаимодействия принесет больше пользы конечному пользователю, чем может принести самостоятельное использование. Самостоятельные изолированные разработчики постепенно уйдут в небытие.

    А что если конкуренты попытаются "украсть" продукт с открытым исходным кодом для собственных целей?

    Такая попытка возможна, однако сообщество находится под защитой лицензии Common Public License. Официальные версии платформы Eclipse будут выпускаться и в будущем. Лицензия построена так, что ни один поставщик не сможет нелегально воспользоваться выгодой от использования продукта. В совместной работе над проектом Eclipse мы хотим помочь добиться полноценных равных условий для разработчиков инструментов.

    Где найти информацию об интегрировании инструментов в технологию Eclipse?

    На сайте http://www.eclipse.org есть несколько технических описаний.

    Как работает платформа Eclipse, и какие функции она предлагает?

    Платформа Еclipse была построена на следующих принципах:

    • Содействие в однородной интеграции внутренних инструментов, а также между различными типами контента и поставщиками инструментов.
    • Поддержка создания разнообразных инструментов.
    • Поддержка неограниченного множества поставщиков инструментов, включая независимых поставщиков ПО (ISV).
    • Поддержка инструментов для работы с любыми форматами (включая HTML, Java, C, JSP, EJB, XML и GIF).
    • Поддержка сред разработки приложений с графическим интерфейсом (GUI) и без него.
    • Запуск на широком диапазоне операционных систем, включая Windows и Linux.
    • Использование популярности языка Java для написания инструментов.
  • Будет ли IBM передавать исходный код платформы Eclipse открытому сообществу? Когда это будет происходить?

    Да, исходный код доступен уже сейчас, под лицензией Common Public License. Очень скоро IBM передаст Eclipse временному совету директоров, который будут осуществлять управление платформой Eclipse.

    Кто находится во временном совете директоров?

    Временный совет будет анонсирован позднее.

    Я хочу присоединиться к сообществу. Как это сделать?

    Посетите сайт www.eclipse.org.

    Как стать членом совета?

    Сотрудничать, способствовать, содействовать: предлагать со своей стороны код, идеи, продукты, исправления ошибок, осуществлять обмен знаниями и опытом.

    Каким образом осуществляется поддержка платформы Eclipse?

    Поддержка осуществляется посредством форума и e-mail на добровольной основе, используя признанные сообществом ресурсы. Подробная информация находится на сайте www.eclipse.org

    Осуществляется ли круглосуточная поддержка?

    По какому принципу избирается временный совет директоров?

    С ограниченным персоналом команда Eclipse может взаимодействовать только с отдельными несколькими компаниями, выбранными для создания платформы. Члены временного совета директоров избираются из компаний, которые способствовали развитию платформы, пока на опытной основе. При выборе используется три критерия: члены совета должны использовать Eclipse в своей компании; они должны также использовать Eclipse для создания коммерческих предложений; они должны открыто поддерживать Eclipse.org.

    Почему вы так долго задерживали выпуск исходного кода Eclipse?

    Когда планы компании по поставке исходного кода были тщательно изучены, группа разработчиков пожелала убедиться в том, что первая платформа была основательно разработана и тщательно протестирована. Мы опробовали несколько альтернативных концепций построения, некоторые из которых уже появились на рынке. Впоследствии мы поделились этими идеями с другими поставщиками инструментов и улучшили их. Теперь платформа Eclipse готова к первому выпуску.

    Когда IBM передает технологию в свободное распространение, означает ли это то, что IBM больше не является приверженцем этой технологии?

    IBM является приверженцем принятия платформы Eclipse и ее использования в качестве основы для всего семейства сквозных инструментов разработки ПО IBM, которым является семейство WebSphere Studio. Эти продукты получают лишь выгоду от использования интегрированной проверки качества, от ставшей уже легендарной поддержки продуктов IBM, а также от нашей приверженности бренду IBM. Они используют подобные интерфейсы и построены на технологии, общей с платформой Eclipse.

    Где можно найти документацию и информацию об Eclipse?

    На сайте www.eclipse.org.

    Насколько Eclipse отличается от.NET?

    Технология.NET была создана исключительно для использования на платформах Microsoft посредством собственного интерфейса, навязываемого Microsoft. Разработчики должны реагировать на изменения, происходящие в.NET. В мире, характеризуемом как нечто большее, чем технология "wintel", платформа.NET вызывает значительные неудобства. Сквозные вычислительные проекты, в которых необходимо осуществлять интеграцию серверов, рабочих станций, встраиваемых устройств и портативных КПК, работают во множестве других высокоразвитых и прогрессивных средах выполнения программ. Это приводит к использованию множества мощных архитектур процессоров и операционных платформ, таких как OS/390, Linux и QNX.

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

    Можно ли сравнить Eclipse с инициативой Open Source от Sun Microsystems?

    Идеей проекта Eclipse является создание "Apache для инструментов разработчика". Под этим подразумевается создание инфраструктуры с открытым кодом, предоставляющей множество базовых сервисов так необходимых разработчикам ПО. Это должен быть "инструментарий для разработки инструментариев". Являясь не просто набором API, инфраструктура Eclipse будет состоять из реального кода, созданного для выполнения реальной работы.

    Как утверждает Эрик Гамма (Erich Gamma): "В Eclipse все является плагинами. У Java IDE нет особого статуса, он всего лишь является другим набором плагинов, демонстрирующим легко интегрируемую расширяемость платформы. Превращение платформы Eclipse в open source позволяет создателям инструментов делать то же самое и не только для создания новых плагинов, но также помогать усовершенствованию уже существующих. В результате, крупные предприятия и представители предприятий имеют равные условия для интеграции инструментов".

    Каковы различия между WebSphere Studio Workbench и платформой Eclipse?

    WebSphere Studio Workbench использует Eclipse в качестве фундамента для предоставления интеграции продуктов, поддерживающих программную платформу WebSphere. WebSphere Studio Workbench является примером использования технологии Eclipse из платформы Eclipse.

    Eclipse является платформой интеграции инструментов с открытым исходным кодом, доступной для использования в любом рабочем окружении.

    Они отличаются в четырех основных моментах:

    1. Поддержка

      Поддержка платформы Eclipse осуществляется через консорциум Eclipse.org, в то время как поддержка WebSphere осуществляется стандартной структурой поддержки IBM (PartnerWorld).

      Лицензирование

      Патформа Eclipse доступна в рамках лицензии "Common Public License", в то время как WebSphere Studio Workbench доступна в рамках лицензии IBM PartnerWorld

      Побочные продукты / Модификации исходного кода

      Платформа Eclipse позволяет разработчикам инструментов исследовать новые границы, выбирать в качестве целей новые платформы и операционные системы путем расширения и изменения кода, полученного из проекта Eclipse. WebSphere Studio Workbench должна интегрироваться и распространяться в том первоначальном виде, в котором она поставляется IBM.

      Брендинг

      Технология Eclipse не заявлена централизованным брендом. Как составная часть бренда, она может быть принята членами сообщества при выпуске совместимых продуктов. WebSphere Studio Workbench содержит собственную индивидуальную марку, партнерские программы и предложения поддержки.

  • Когда следует выбрать Eclipse, а когда WebSphere Studio Workbench?

    Для помощи в выборе используемой технологии создателям инструментов требуется ответить на несколько простых вопросов:

    Определить поддерживаемое рабочее окружение инструмента:

    • Если только WebSphere, то следует выбрать WebSphere Studio Workbench.
    • Другие окружения или расширения для будущих технологий? Следует выбрать платформу Eclipse.
    • Оба окружения. Выбор следует сделать после оценки степени совместной деятельности IBM и партнерских программ IBM.
  • Будет ли вами осуществляться поддержка всего предложения, как кода Eclipse, так и вашего собственного?

    • Если нет, то скорее вам подойдет WebSphere Studio Workbench.
  • Предоставляете ли вы инструменты для платформ, не поддерживаемых IBM?

    • Если да, то следует выбрать платформу Eclipse.
    • Если нет, то выбор следует сделать исходя из двух предыдущих критериев.
  • Желаете ли вы иметь официальную поддержку и участие в доступных партнерских программах IBM.

    • Если да, то следует выбрать WebSphere Studio Workbench.
    • Если нет, то следует выбрать платформу Eclipse.

19.04.2005 Наталья Дубова

Сообщество Open Source ведет несколько ключевых проектов, среди которых, наряду с ОС Linux, - создание платформы разработки Eclipse. Вышедшая несколько лет назад из-под крыла корпорации IBM, сегодня эта открытая платформа интеграции инструментальных средств разработки приложений свободно распространяется в открытых кодах и развивается сообществом пользователей.

Не вдаваясь в обсуждение вопроса, что есть программирование - искусство или ремесло, признаем: в том и другом случае программисту не обойтись без инструментов создания программ. Вместе с эволюцией процесса программирования (от «колдовства» над машинными командами к использованию высокоуровневых языков) совершенствовались и возможности автоматизации нелегкого труда программистов. Первые среды разработки ограничивались последовательным запуском компиляторов, компоновщиков, загрузчиков и отладчиков с помощью интерфейса командной строки. В 80-е годы вместе с персональными компьютерами появился рынок программных продуктов нового класса - интегрированных сред разработки (integrated development environment, IDE) для алгоритмических (Паскаль и др.), а затем и объектно-ориентированных (Smalltalk, C++) языков программирования. Настоящего расцвета данная область достигла благодаря активной адаптации разработчиками языка Java; наиболее известные интегрированные среды для создания программ на этом языке - Borland JBuilder, Symantec Visual Cafe, Microsoft J++, IBM VisualAge и Oracle JDeveloper.

Основное назначение IDE - повысить продуктивность труда разработчика. Первые среды разработки, объединяющие функциональность редакторов текста программ, компиляторов и отладчиков, преимущественно освобождали потребителей от рутинных операций. Со временем набор функций IDE становился все богаче. В него вошли пошаговые компиляторы, браузеры для более логичного представления программ, средства автоматической генерации кода и визуальные редакторы для создания графических пользовательских интерфейсов. Следуя веяниям времени, среды разработки трансформировались из инструментов повышения производительности труда программиста в средства поддержки всех этапов коллективной работы над программным проектом. Последняя тенденция - превращение IDE в ALM (application lifecycle management), интегрированную систему управления жизненным циклом приложений - от определения требований и моделирования до управления конфигурациями и версиями программного обеспечения, развертывания и сопровождения готового решения.

Каждая новая ступень эволюции IDE усложняла среды разработки. Однако пользователи таких продуктов по-прежнему были вынуждены прибегать к помощи средств, не интегрированных в IDE, - хотя бы потому, что создание приложения не ограничивается написанием и отладкой программ на одном языке программирования. Необходимость использовать в прикладной системе, например, HTML-страницы, схемы реляционных баз данных или куски кода на других языках (наподобие Кобола или PL/1) заставляет разработчиков задействовать соответствующий инструментарий, изначально не включенный в IDE.

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

Платформа

Как поясняют инициаторы проекта Eclipse , его идеей было создание «Apache для средств разработки» - открытой платформы, обеспечивающей максимум базовых возможностей для сред разработки и предоставляющей механизмы интеграции различных инструментов. Первая версия этой платформы была разработана корпорацией IBM и выпущена в открытых кодах в конце 2001 года. Вскоре начали появляться коммерческие реализации на основе Eclipse, пионером среди которых стала среда WebSphere Studio Application Developer 4.0. Сейчас вокруг Eclipse сложилась целая экосистема разработки с открытым кодом, которая объединяет поставщиков и пользователей инструментальных средств, исследовательские организации и отдельных разработчиков.

В официальных документах Eclipse Foundation (www.eclipse.org ) Eclipse Platform определяется как независимая от поставщиков открытая платформа разработки, предоставляющая базовые (framework) и типовые (exemplary) возможности, а также расширяемые (extensible) инструментальные средства. Инструментарий в рамках Eclipse Platform является типовым в том смысле, что с его помощью проверяется применимость базовых возможностей платформы, иллюстрируются типовые ситуации их использования, поддерживаются разработка и сопровождение самой платформы Eclipse. Инструментарий является расширяемым, поскольку его функциональность доступна посредством документированных программных интерфейсов. Базовые принципы, которым руководствовались создатели Eclipse Platform и в соответствии с которыми она продолжает развиваться, таковы :

  • поддержка конструирования инструментов для разработки приложений;
  • поддержка неограниченного числа поставщиков инструментальных средств, в том числе независимых разработчиков программного обеспечения;
  • поддержка инструментов работы с произвольными типами контента, включая HTML, Java, C, JavaServer Pages, EJB, XML, GIF и др.;
  • обеспечение «бесшовной» интеграции инструментов работы с различными типами контента разных производителей;
  • поддержка сред разработки приложений с обычным и с графическим пользовательским интерфейсами;
  • обеспечение возможности выполнять среду разработки на базе разных операционных систем (сегодня инструментарий на базе Eclipse реализован для Linux, HP-UX, IBM AIX, Sun Solaris, QNX, Mac OS X, Windows);
  • учет в интересах развития платформы популярности языка Java при создании инструментария разработки.

Eclipse Platform представляет собой написанную на Java среду разработки самого общего назначения, архитектура которой обеспечивает для решения разных задач интеграцию различных инструментов и языков программирования. Механизмы подобной интеграции позволяют использовать Eclipse Platform для построения развитых сред разработки, освобождают от рутины написания базовых средств в пользу создания сложных, специализированных функций. Тем самым не только решается проблема поддержки многофункциональных и многоязыковых сред разработки, но и закладывается база для упрощения перехода от одного типа среды к другому в процессе их эволюции. Развиваемая сообществом разработчиков платформа Eclipse будет аккумулировать последние достижения, делая их доступными для разработчиков конкретных продуктов и устраняя необходимость в коренной переделке их систем.

Среда разработки Eclipse

Основой архитектуры Eclipse Platform является принцип использования подключаемых модулей (plug-in). Платформа реализует механизмы обнаружения, интеграции и выполнения таких модулей (см. рисунок). Разработчик, который хочет воспользоваться возможностями Eclipse Platform, пишет свой инструментарий на Java как отдельный подключаемый модуль. Этот модуль будет работать с файлами в рабочем пространстве, которое реализуется с помощью компонента workspace. А его пользовательский интерфейс базируется на средствах компонента workbench, задающего общую структуру интерфейса и возможности его расширения.

Как правило, с помощью одного подключаемого модуля реализуется простейшая функциональность IDE на базе Eclipse Platform, в то время как более сложные инструментальные средства компонуются из нескольких модулей. При этом почти вся встроенная функциональность Eclipse Platform также реализована с помощью таких модулей - за исключением небольшого ядра Platform Runtime. Для каждого подключаемого модуля есть свой манифестный файл (manifest), в котором описываются связи данного модуля с другими. При запуске среды разработки на базе Eclipse Platform компонент Platform Runtime определяет набор доступных подключаемых модулей, читает их манифестные файлы и строит реестр модулей. После запуска системы дополнительные модули уже не могут быть добавлены. В рамках проекта Eclipse реализована специальная среда для создания подключаемых модулей - Plug-In Development Environment (PDE).

С помощью специальных модулей реализованы компоненты рабочего пространства (workspace) и пользовательского интерфейса (workbench) платформы Eclipse. Рабочее пространство содержит файлы, которые создают пользователи инструментов, реализуемых подключаемыми модулями. Компонент workbench обеспечивает общую структуру и средства, позволяющие расширять возможности пользовательского интерфейса среды разработки на базе Eclipse Platform, включает в себя два компонента для реализации средств предоставления информации пользователю.

  • Standard Widget Toolkit (SWT) - набор интерфейсных элементов и графическая библиотека, которые имеют механизмы интеграции с оконной системой конкретной операционной платформы, но реализуют API, независимые от ОС. Это позволяет по единым принципам строить пользовательские интерфейсы среды разработки, которые соответствуют привычной для потребителя оконной среде, но предназначены для максимально возможного спектра операционных систем;
  • JFace - инструментарий для реализации ряда общих задач, связанных с программированием интерфейсов с использованием средств SWT.

На базе API, предоставляемых компонентами SWT и JFace, строится персонализированный пользовательский интерфейс, который определяет структуру взаимодействия потребителя с инструментарием разработки. Интерфейс Eclipse Platform организуется с помощью редакторов (editor), видов (view) и перспектив (perspective).

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

Организация

Ведение проектов в открытых кодах дает целый ряд преимуществ. Так, одной из задач подобной платформы является предоставление разработчикам инструментария из общей базы, инвариантной для разных сред разработки. Зачем каждому производителю писать заново то, что можно написать один раз? Но чтобы строить на такой платформе свои разработки, производитель должен полностью доверять тому, кто ее создал. А это возможно лишь в том случае, если он сумеет опробовать все то, что в ней заложено, то есть получить платформу в открытых кодах.

Разработка продукта в соответствии с принципами Open Source повышает качество кода, поскольку его совместно «отшлифовывают» множество заинтересованных разработчиков. Проще и качественнее становится отладка - благодаря доступу к исходным текстам программы и опять же привлечению к работе распределенного коллектива. Совместный труд позволяет разделить риски создания сложных технологий. А коллективный орган развития платформы обеспечивает ее поддержку независимо от перипетий, которые могут произойти с поставщиками конкретных сред разработки. Наконец, использование платформы разработки в открытых кодах с гибким механизмом подключаемых модулей для реализации дополнительной функциональности открывает неограниченные возможности ее совершенствования.

Архитектура Eclipse Platform

Однако реализовать преимущества модели разработки с открытым кодом, просто выпустив «в свободное плавание» техническую платформу, не удастся. Нужна организация процесса. С выходом первой версии Eclipse в 2001 году эту заботу взял на себя консорциум, организованный IBM вместе с рядом ведущих игроков рынка, а в феврале 2004 года совет директоров Eclipse решил преобразовать Eclipse Foundation в неприбыльную независимую корпорацию.

Консорциум Eclipse Foundation, объединяющий более 60 компаний, координирует работы по совершенствованию платформы Eclipse и другие проекты с открытым кодом.

Проект Eclipse полностью открыт, участвовать в нем может любой заинтересованный разработчик, который не обязан быть сотрудником какой-либо компании. В принципе, каждый может не только интересоваться деталями разработки и вносить свой вклад в выявление ошибок, но и принимать участие в написании кода и общем проектировании очередной версии платформы. Однако Eclipse следует принципу приоритета профессионализма. Разработчик с подтвержденной профессиональной репутацией может рассчитывать на дополнительную ответственность и возможность активно реализовать свою квалификацию в проектах Eclipse. Часть разработчиков определяются как «ответственные» (committer), поскольку на них возлагается ответственность за исходные коды, и только они имеют право создавать новые версии в открытом репозитарии исходных текстов. Как правило, такие разработчики являются сотрудниками компаний, которые оплачивают их работу в рамках проектов Eclipse.

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

Задачей технологического проекта Eclipse является координация усилий разработчиков, исследователей, членов научных и образовательных организаций по определению перспектив Eclipse Platform и других разработок с открытым кодом. Среди наиболее заметных исследовательских подпроектов в рамках этого направления можно отметить разработку аспектно-ориентированного программного обеспечения (AspectJ и AJDT), создание ядра, альтернативного Eclipse Runtime (Equinox), создание платформы совместной разработки (Koi), управление конфигурациями программного обеспечения (Stellation), инструментарий для XML-схем (XML Schema Definition) и для разработки на базе моделей (Generative Model Transformer).

Сообщество

Использование всех материалов, полученных при реализации проектов Eclipse, регулируется лицензионными правилами Common Public License (CPL), которые одобрены организацией Open Source Initiative. В соответствии с CPL каждый может бесплатно применять и распространять Eclipse в коммерческих и некоммерческих целях. В свободном доступе на сайте eclipse.org имеются:

  • текущие версии Eclipse Platform для непосредственного использования (в двоичной форме);
  • репозитарий исходных кодов, в котором любой может просмотреть содержимое и историю ревизий любого исходного файла, а также получить скрипты для рекомпиляции и сборки платформы Eclipse из исходных кодов;
  • открытые дискуссионные форумы для обсуждения Eclipse Platform;
  • база данных ошибок для отслеживания дефектов и проблем текущих версий платформы. С помощью этой базы пользователи могут выявлять известные дефекты в своих разработках на базе Eclipse и обнародовать новые обнаруженные ими проблемы;
  • планы разработки и контакты разработчиков, участвующих в проектах Eclipse.

Сегодня на eclipse.org в свободном доступе - более сотни подключаемых модулей в исходных кодах для платформы Eclipse. Открытые проекты Eclipse - это в совокупности более 2 млн. строк кода.

Ключевое значение для развития рынка программных средств разработки имеет участие в проекте Eclipse коммерческих компаний. В Eclipse Platform они получают готовые базовые сервисы среды разработки, нейтральные к языкам и операционным платформам, и могут сосредоточить усилия и инвестиции на развитии сложной функциональности, которая обеспечит конкурентоспособность их решений. Есть примеры реализации на базе Eclipse как полнофункциональных сред разработки, продвигающих самые передовые решения в этой области, так и специализированных средств, нацеленных на определенный круг задач.

Так, на платформе Eclipse работают все продукты семейства IBM Rational. Компания Borland намерена перевести на Eclipse все свои средства поддержки жизненного цикла приложений. Существует версия для Eclipse средств разработки встроенных приложений компании QNX; аналогичный проект реализует и Wind River. В свою очередь, Hewlett-Packard предлагает на базе Eclipse среду разработки компонентов для своей системы Internet Usage Manager, целевой аудиторией которой являются операторы связи. Nokia анонсировала поддержку Eclipse как платформы разработки мобильных приложений. IBM реализовала на базе Eclipse специальный инструментарий Autonomic Computing Toolkit, предназначенный для поддержки в разрабатываемых приложениях технологий автономных вычислений. Изо всех ведущих мировых производителей программного обеспечения с Eclipse Foundation не сотрудничают лишь Sun Microsystems и Microsoft.

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

Перечисленные группы по-разному используют разработки Eclipse, но все они вносят свой вклад в их развитие. Тенденцией становится использование платформы Eclipse для построения приложений, отличных от IDE. Это возможно, поскольку в технологическом решении Eclipse Platform не так много специфичных для сред разработки элементов. В третьей версии Eclipse происходит эволюция от платформы для сред разработки к платформе реализации полнофункциональных клиентских рабочих мест (Rich Client Platform). Не случайно IBM реализует свою перспективную среду совместной работы Workplace именно на базе Eclipse.

Литература

  1. Marc R. Erickson, Angus McIntyre. , 2001, November.
  2. J. dea Rivieres, J. Wiegand. Eclipse. A platform for integrating development tools. IBM Systems Journal, 2004, No. 2.

Структура организации Eclipse

Координацию развития Eclipse и участия в проектах с открытым кодом различных организаций и индивидуальных разработчиков осуществляет некоммерческий независимый консорциум Eclipse Foundation

Совет директоров Eclipse Foundation формируется из четырех основных категорий участников:

  • стратегические разработчики (Strategic Developers) - компании Actuate, Borland, IBM, Computer Associates, Intel, QNX, Wind River, Sybase, Scapa Technologies, BEA Systems;
  • стратегические потребители (Strategic Consumers) - HP, Montavista Software, SAP, Serena Software;
  • включенные поставщики (Add-in Providers);
  • руководители проектов с открытым кодом (Open Source project leads).

Все стратегические разработчики и стратегические потребители входят в совет директоров, а две другие группы делегируют в него своих представителей. Стратегические члены консорциума имеют и определенные права на участие в комитетах по управлению проектами и Советах, координирующих процессы разработки.

Консорциум ведет несколько базовых проектов в открытых кодах, которые включают в себя то или иное количество подпроектов. Управление базовым проектом осуществляет комитет Project Management Committee (PMC). Для управления разработкой в целом создаются три основных с овета - по определению требований (Requirements Council), по архитектуре (Architecture Council) и по планированию (Planning Council).

Совет по определению требований анализирует и структурирует требования к проекту. Они объединяют требования, нацеленные на достижение общих целей Eclipse Foundation и частных целей проекта, на решение задач ключевых членов консорциума и развитие экосистемы Eclipse. На основе анализа формулируется список тем и приоритетов, которые определят ход разработки. Совет по архитектуре отвечает за разработку архитектуры Eclipse Platform, ее четкое описание, доведение соответствующих сведений до команд разработчиков и их защиту от неумышленных искажений. Совет по планированию создает скоординированный план релизов платформы.

Проекты реализуются командами разработчиков, возглавляемыми руководителями проектов и включающими в себя разработчиков и ответственных разработчиков. Первые занимаются написанием кода, выявлением ошибок, тестированием и документированием программ, а также выполняют другие задачи в рамках проекта. Ответственные разработчики имею право пополнять репозитарий исходных кодов и должны влиять на ход разработки в рамках проекта. Компании, имеющие в Eclipse Foundation статус стратегических разработчиков, обязаны возглавлять по крайней мере один проект. Поощряется также их руководство комитетами.