Java является высокоуровневым языком программирования, который был разработан компанией Sun Microsystems ещё в 1995 году. На сегодняшний день развитием данной технологии занимается компания JCP (Java Community Process ). Одной из главных особенностей языка является компиляция, выполняющаяся непосредственно при сборке программы.

Код превращается в байт-код, после чего выполняется в виртуальной машине Java. JVM выступает транслятором, связывающим язык программирования с необходимыми компонентами компьютера. Такой принцип позволяет программам работать на любых системах, где установлена виртуальная машина.

Особенности языка программирования

Объекто-ориентированный и типизированный язык Java обладает множеством полезных для разработчиков особенностей. Среди них можно выделить следующее:

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

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

Особенности программных платформ Java

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

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

Что такое Eclipse?

Eclipse - среда разработки, в настоящее время контролируемая компанией Eclipse Foundation. Она предоставляет открытый исходный код, что обеспечивает новые возможности для разработчиков. Написана она на Java и предназначена для улучшения процесса создания программного обеспечения.

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

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

Особенности платформы

Среда программирования обладает следующими особенностями:

  • Широкая сборка API для добавления новых модулей, а также фреймворк для программирования любых расширений.
  • Поддержка всех популярных операционных систем.
  • Программирование в большинстве известных языков позволяет именно Eclipse - среда разработки. Си шарп (C#), Java, PHP, C, Python, C++ и многие другие языки поддерживаются данной программой.
  • Доступна технология RCP, возможностей которой будет достаточно для разработки клиентского ПО любой сложности и масштаба.
  • Модульность программы обеспечивает невероятное удобство и гибкость в работе.

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

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

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

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

Такие плагины, как PDE и Java Development Tools, также включены в Eclipse. Среда разработки Java-программ и новых дополнений с использованием этих плагинов становится в разы функциональнее.

Примеры других специализированных сборок

Вышеуказанная Eclipse SDK является одной из версий платформы. Доступно ещё несколько сборок IDE с уникальными особенностями, а именно:

  • For Java EE Developers. Версия предназначена для программирования корпоративных или веб-приложений с применением Java EE.
  • For JavaScript Web Developers. Сборка для создания веб-продуктов с использованием CSS, XML, HTML и JavaScript.
  • For Java Developers. Версия для программирования на Java.
  • For C/C++ Developers. Сборка для программирования на языках C++ и C.

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

Конкурирующие продукты

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

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

Главным конкурентом рассматриваемой программы является продукт NetBeans, и он полностью бесплатен. За лицензию Eclipse же придётся заплатить, и некоторых это отпугивает. Среди остальных конкурирующих продуктов можно выделить также IntelliJ IDEA, JDeveloper, Android Studio, DrJava и MyEclipse. Но лучшей многие считают именно 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 – Окно нашего приложения с добавленным видом

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

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 статус стратегических разработчиков, обязаны возглавлять по крайней мере один проект. Поощряется также их руководство комитетами.



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

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

В Eclipse 3.0 (2003 год) были выбраны спецификации сервисной платформы OSGi, как архитектура времени выполнения. С версии 3.0 Eclipse перестал быть монолитной IDE, поддерживающей расширения, а сам стал набором расширений. В основе лежат фреймворк OSGi и SWT/JFace, на основе которых разработан следующий слой -- RCP (Rich Client Platform, платформа для разработки полноценных клиентских приложений). RCP служит основой не только для Eclipse, но и для других RCP-приложений, например Azureus и File Arranger. Следующий слой -- сам Eclipse, представляющий собой набор расширений RCP -- редакторы, панели, перспективы, модуль CVS и модуль Java Development Tools (JDT).

С 2006 года фонд Eclipse координирует ежегодный общий релиз (Simultaneous Release), который происходит в июне. Каждый выпуск включает в себя платформу Eclipse, а также ряд других проектов Eclipse.

Eclipse служит в первую очередь платформой для разработки расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют Java Development Tools (JDT), C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков Ada (GNATbench, Hibachi), COBOL, FORTRAN, PHP и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse менеджерами для работы с базами данных, серверами приложений и др.

Eclipse JDT (Java Development Tools) -- наиболее известный модуль, нацеленный на групповую разработку: среда интегрирована с системами управления версиями -- CVS,GIT в основной поставке, для других систем (например, Subversion, MS SourceSafe) существуют плагины. Также предлагает поддержку связи между IDE и системой управления задачами (ошибками). В основной поставке включена поддержка трекера ошибок Bugzilla, также имеется множество расширений для поддержки других трекеров (Trac, Jira и др.). В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений.

Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ (см. ниже). Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений. Основой Eclipse является платформа расширенного клиента (RCP -- от англ. rich client platform). Её составляют следующие компоненты:

OSGi (стандартная среда поставки комплектов (англ. bundles));

SWT (портируемый инструментарий виджетов);

JFace (файловые буферы, работа с текстом, текстовые редакторы);

Рабочая среда Eclipse (панели, редакторы, проекции, мастеры).

GUI в Eclipse, написан с использованием инструментария SWT. Последний, в отличие от Swing (который самостоятельно эмулирует графические элементы управления), использует графические компоненты данной операционной системы. Пользовательский интерфейс Eclipse также зависит от промежуточного слоя GUI, называемого JFace, который упрощает построение пользовательского интерфейса, базирующегося на SWT.

Гибкость Eclipse обеспечивается за счёт подключаемых модулей, благодаря чему возможна разработка не только на Java, но и на других языках, таких как C/C++, Perl, Groovy, Ruby, Python, PHP, Erlang, Компонентного Паскаля, Zonnon и прочих.

Если вы когда-нибудь пристально следили за событиями, происходящими в мире open-source или Java-технологий, то вы просто не могли никогда не слышать всего этого шума, развернутого вокруг Eclipse. Eclipse – это расширяемая, open-source интегрированная среда разработки (IDE, Integrated Development Environment). Этот проект был запущен в ноябре 2001 года, когда IBM выделили исходный код из Websphere Studio Workbench, ценой в 40 миллионов долларов, и сформировали Eclipse Consortium для управления разработкой этого инструмента.

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

  1. The Eclipse Project (http://www.eclipse.org/eclipse/index.html) – ответственен за разработку непосредственно Eclipse IDE (платформу для сборки прочих инструментов Eclipse), Java Development Tools (JDT) и Plug-In Development Environment (PDE), используемую для предоставления возможности расширения самой платформы.
  2. The Eclipse Tools Project (http://www.eclipse.org/tools/index.html) – занимается созданием оптимальных инструментальных средств для платформы Eclipse. В текущие подпроекты входят: Cobol IDE, C/C++ IDE, а также инструмент моделирования EMF.
  3. The Eclipse Technology Project (http://www.eclipse.org/technology/index.html) – занимается технологическими исследованиями, инкубацией и образованием по части использования платформы Eclipse.

Совместно с JDT, платформа Eclipse предоставляют множество различных возможностей, которые вы могли наблюдать в коммерческих IDE: подсветка синтаксиса в редакторе, компиляция кода, отладчик уровня исходного кода с поддержкой "нитей" (threads), навигатор по классам, файловый менеджер и менеджер проектов, интерфейсы для стандартных контролирующих систем исходного кода, таких как, например, CVS и ClearCase.

Помимо этого Eclipse содержит ряд уникальных возможностей, например, рефакторинг кода (http://www.refactoring.com/), автоматическое обновление и сборка кода (посредством Update Manager), список задач, поддержка возможности тестирования модулей с помощью JUnit (http://www.junit.org/), а также интеграция с инструментом сборки приложений Jakarta Ant (http://jakarta.apache.org/ant/index.html).

Несмотря на большое количество стандартного набора возможностей, Eclipse отличается от традиционных IDE по нескольким фундаментальным особенностям. Может быть, самая интересная возможность Eclipse – это абсолютная нейтральность относительно платформы и языка программирования. Вдобавок к эклектичному набору языков программирования, которые поддерживаются Eclipse Consortium (Java, C/C++, Cobol), существует множество сторонних проектов, с помощью которых вы можете обеспечить поддержку интересующего вас языка программирования в Eclipse. На сегодняшний день существуют реализации следующих популярных языков программирования: Python, Eiffel, PHP, Ruby, и C#.

Платформа Eclipse предоставляется, благодаря Eclipse Consortium, в виде заранее скомпилированных исполняемых файлов для Windows, Linux, Solaris, HP-UX, AIX, QNX, и Mac OS X. Очень много внимания концентрируется вокруг архитектурной системы plug-in"ов этой платформы, а также "богатых" API (Application Programming Interface), поставляемых с Plug-in Development Environment для расширения Eclipse. Добавить поддержку нового типа редактора, просмотрщика (панели) или языка программирования до безобразия просто, благодаря хорошо спроектированным API и строительным блокам, которые предоставляет Eclipse.

Имея приблизительно сотню проектов, по разработке plug-in"ов, имея ресурсы, предоставляемые такими промышленными гигантами, как IBM, HP и Rational (которая недавно была куплена IBM), и дизайн Erich Gamma, который помогает быстро разобраться в процессе разработки – будущему Eclipse предстоит быть весьма ярким, интересным и перспективным.

Установка

Бьюсь об заклад, что вы сейчас только и думаете о том, где бы достать копию этого самого Eclipse для вашей платформы и как бы это его установить? :) Первое, о чем вам для начала нужно позаботиться – это убедиться в наличии подходящей, рабочей JRE (Java Runtime Evironment). Хотя Eclipse и создавался в расчете на возможность компиляции кода как для JVM (Java Virtual Machine) версии 1.3, так и для версии 1.4, однако текущие версии Eclipse были спроектированы таким образом, чтобы запускаться на JVM версии 1.3. Если вы не уверены, где можно достать "виртуальную" Java-машину (JVM) для вашей платформы, вы можете найти подробные инструкции и дополнительную информацию об этом на сайте

Как только вы убедились в наличии JVM или установили подходящую ее версию, вы готовы к установке Eclipse. Для этого посетите download-раздел сайта проекта Eclipse (http://www.eclipse.org/downloads/) и скачайте оттуда последний релиз, собранный специально под используемую вами платформу. Все дистрибутивы представляют собой.zip-архивы. Распакуйте скачанный архив в подходящую директорию и потратьте немного времени на изучение всех файлов, содержащихся в директории readme.

Хотите - верьте, хотите – нет, но на этом инсталляция завершена. Если вы правильно установили JVM и корректно распаковали архив с Eclipse – вы можете приступать к процессу первого запуска этой IDE. Все дистрибутивы, содержащие скомпилированную версию платформы, предоставляют программы для запуска, которые располагаются в основной директории: eclipse. Имя этой программы запуска изменяется в зависимости от платформы, под которую вы скачали дистрибутив: eclipse.exe под Windows, eclipse под Solaris, и так далее. При первом запуске приложение Eclipse выполнит некоторые оставшиеся задачи по установке (например, создание workspace-директории для хранения файлов проектов) до того, как приложение окончательно будет готово к работе.

Интерфейс

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

Рисунок 1

Как вы можете заметить, Eclipse IDE имеет вполне стандартное содержание меню:

Рисунок 2

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

Пример приложения

Панели File Navigator , Code Outline и Task List отображены, но на данный момент не содержат никаких данных. Чтобы продолжить знакомство с Eclipse мы создадим простое Swing-приложение программу-калькулятор. Распишем действия по шагам:

1. Выберите пункт меню File->New->Project..., чтобы начать создание вашего первого Java-проекта. В окне "мастера" выберите Java среди предложенных типов проектов из левого списка и Java Project в правом списке, после чего нажмите кнопку Next .


Рисунок 3

2. В качестве имени проекта введите Calculator и продолжите создание проекта, нажав кнопку Next .


Рисунок 4

3. И, наконец, на завершающем этапе "мастер" создания нового проекта дает вам возможность определить директории, где будут храниться файлы исходного кода и class-файлы, определить подпроекты, которые могут быть использованы создаваемым нами, текущим проектом, а также любые библиотеки, которые мы предполагаем использовать в своем приложении. Установите переключатель на значение Use source folder contained in the project , после чего нажмите кнопку Create New Folder... . В качестве имени новой директории для хранения исходного кода введите src. Нажмите Yes , когда Eclipse спросит вас о том, изменить ли директорию с собираемым приложением на Calculator/bin .


Рисунок 5

4. Нажмите кнопку Finish , чтобы дать возможность Eclipse завершить создание нового проекта.

Как только вы создали новый проект, вы можете заметить, что внешний вид Eclipse несколько изменился (этого и следовало ожидать): панель Outline переместила в другую часть окна, панель Navigator была заменена панелью Package Explorer и т.д.

Вот какой вид приняло окно Eclipse после того, как мы создали новый проект:


Рисунок 6

Такая планировка называется Java Perspective . "Ракурс", в понятии Eclipse, определяет какой-либо сохраненный порядок расположения любого количества различных панелей редактора и просмотрщиков. Eclipse поставляется с рядом "ракурсов" определенных по умолчанию (Resource , Java , Debug и другие), которые могут быть изменены в соответствии с вашими нуждами, или же вы можете создавать свои собственные ракурсы. Ракурсы управляются при помощью элементов меню Window или специальной панели инструментов, которая обычно располагается вдоль левой границы окна Eclipse.

Рисунок 7

Следующим шагом в создании нашего Java-проекта нужно создать директории, которые будут содержать весь наш исходный код. Для этого переключитесь в ракурс Resource , используя пункт меню Window->Open Perspective->Resource . В панели Navigator разверните узлы дерева структуры папок таким образом, чтобы вы могли видеть узел-папку src. Выделите этот узел, и после выполните пункт меню File->New->Folder . В появившемся диалоговом окне, убедитесь, что директория src выбрана и затем введите в качестве имени новой, в поле Folder Name , имя com .

Создавать большое количество папок с помощью диалога New Folder было бы не очень удобно и утомительно. К счастью, Eclipse может предоставить вам возможность самим создавать нужные директории с помощью вашего любимого файлового менеджера: командной строки, Windows Explorer и прочих. Используя один из предложенных методов, создайте в папке com папку devious , а в ней папку calculator . Как только вы создали эти папки, выберите любую папку-узел в панели Navigator и, с помощью элемента меню File->Refresh , обновите содержимое этой панели. Таким образом, Eclipse произведет просмотр файловой системы и обновит панель проекта в соответствии с теми изменениями, что вы внесли (создали новые директории). На этом этапе ваше окно Eclipse должно иметь примерно следующий вид:


Рисунок 8

И еще одно замечание по поводу создания файлов: на ранних этапах создания проекта, вы, скорее всего, достаточно часто будете запускать свое приложений, создавать новые файлы и папки, добавлять новый код, компилировать, и тестировать свой код снова. Важно помнить, что расположение меню в Eclipse зависит от используемого ракурса. Так, если вы переключаетесь в ракурс Resource , чтобы создать новый файл или папку в панели Navigator , вы обнаружите, что меню Run , например, в корне отличается от меню Run в ракурсе Java . Одно из решений этой часто встречающейся проблемы – это использование меню Windows->Show View с тем, чтобы отобразить панель Navigator в ракурсе Java . Если вас полностью устроит полученный ракурс то, воспользовавшись элементом меню Window->Save Perspective As... , вы сможете сохранить ваши изменения в новом ракурсе, либо переписать существующий ракурс Java .

Добавление кода

Теперь, когда у нас есть созданная структура директорий, мы можем начинать добавление исходного кода в наш проект. Мы разделим нашу программу-калькулятор на три класса (файла): CalcModel.java , CalcPanel.jav a, и Calculator.java . Скачайте.zip-архив с исходным кодом этой программы отсюда http://www.onjava.com/onjava/2002/12/11/examples/calculator.zip . После этого распакуйте этот архив и поместите три упомянутых выше файла в директорию com/devious/calculator . Снова воспользуемся пунктом меню File->Refresh , чтобы обновить содержимое панели Project Manager. Вот, что вы должны увидеть после выполнения этих действий:


Рисунок 9

CalcPanel.java представляет основу интерфейса пользователя нашего калькулятора. Calculator.java выполняет подготовительные инициализационные функции и запускает GUI (графический интерфейс пользователя). Самая же важная часть нашей программы находится в файле CalcModel.java , который занимается непосредственно реализацией фактической математики нашего калькулятора: реагирование на события, выполнение математических вычислений, обновление отображаемой информации, и т.д. Самый простой способ просмотреть исходный код – это переключиться из ракурса Java в Java Browsing . Для этого используйте Open Perspetive из меню Window или кликните на кнопке Open , которая находится на панели инструментов для работы с ракурсами.

В то время как вы перемещаетесь по исходному коду на панели Package Explorer , вы можете заметить, что панель Outline становится ненужной вам на данном этапе. Ее можно на время убрать с экрана, кликнув по крестику в правом углу этой панели. Когда она вам понадобится, вы можете воспользоваться пунктом меню Window->Show View->Outline , чтобы отобразить ее вновь.


Рисунок 10

Запуск и отладка кода

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

1. Из основного меню Run выберите элемент Run...

2. В появившемся диалоге "мастера" запуска, выберите "Java Application" из списка Launch Configurations и нажмите кнопку New


Рисунок 11

3. В качестве имени новой конфигурации введите Calculator

4. Нажмите кнопку Search... и выберите основным классом класс Calculator в поле Main class , или просто введите в поле ввода полное имя класса: com.devious.calculator.Calculator .


Рисунок 12


Рисунок 13

Создав однажды конфигурацию запуска своего приложения, вы можете запускать его вновь с помощью меню Run->Run History или кнопки Run на панели инструментов. Если вы потратите достаточно времени, "играя" с этим калькулятором, вы обнаружите, что он работает в основном правильно, но только с одном "но": он не хочет правильно выполнять операцию вычитания! Время пустить в ход отладчик исходного кода Eclipse и обнаружить эту злосчастную ошибку. Если вы следовали всем инструкциям, приведенным выше в этой статье, то вы можете запустить это приложение с отладчиком с той же конфигурацией, которую мы определили для обычного запуска. Для этого выберите в меню пункт Run->Debug History->Calculator .

Когда вы запускаете свое приложение вместе с отладчиком, Eclipse автоматически переключается в ракурс Debug :


Рисунок 14

Поскольку, обнаруженная нами, проблема сконцентрирована вокруг функции вычитания, мы установим точку прерывания (breakpoint) в обработчик события для кнопок "-" и "=". Для начала, нам нужно переключиться в закладку редактора класса CalcPanel . (Если у вас нет закладки с исходным кодом этого класса, вам нужно открыть файл с именем CalcPanel.java , предварительно переключившись в ракурс Java или Resource и потом вернуться обратно в ракурс Debug ).

Воспользуйтесь панелью Outline , чтобы определить местонахождение метода actionPerformed . Переместитесь немного ниже, пока не обнаружите выражение case для знака "-" (строка 126). Если вы выполните двойной клик на левой границе этой строки, Eclipse автоматически установит точку прерывания в ней. Переместитесь немного ниже и установите еще одну точку прерывания на вызове метода model.calculate() в обработчике события кнопки "=" (строка 138).


Рисунок 15

Теперь переключитесь в окно калькулятора и нажмите несколько кнопок. Например, "2", "4", "6" и "-". Как только отладчик натыкается на точку прерывания, вы можете видеть появившиеся кнопки на панели инструментов Debug , которые служат для пошагового прохождения по исходному коду, причем можно делать шаги по коду и, не заходя внутрь методов, выполнять их автоматически, или же, заходя внутрь, проходиться и по их исходному коду.

Рисунок 16

Если мы зайдем внутрь метода setOperation() , станет понятно, что он выполняют достаточно тривиальную функцию: сохраняет код операции в поле pendingOp . Теперь нажмите кнопку Resume на панели инструментов Debug , чтобы продолжить выполнение программы.

Замечание: Основная ошибка новых пользователей Eclipse в том, что они иногда нажимают кнопки Debug или Run на основной панели инструментов (что приводит к запуску еще одной копии приложения) вместо того, чтобы нажать Resume .

Теперь нажмите еще пару кнопок (например, "1", "2", "3") и после этого кнопку "=". Таким образом, мы оказываемся внутри метода calculate() , проблема оказалась очевидна: кто-то скопировал код из варианта OP_ADD, но забыл заменить знак + на -. Проблема решена! :)

Исправление ошибки методом HotSwap

Если для запуска приложения вы использовали JVM версии 1.4, то нам остался всего один завершающий шаг на пути к исправлению этой ошибки в нашем примере. Вместо того, чтобы выходить из программы-калькулятора, вносить изменения в исходный код, компилировать заново весь проект, и только потом запускать новую сессию отладчика, мы можем изменить все "налету". В то время как отладчик все еще запущен, измените в исходном коде строку с:

SetDisplay(previousValue + currentValue); // на: setDisplay(previousValue - currentValue);

Сохраните этот файл, после чего нажмите кнопку Resume , чтобы "отпустить" приложение и продолжить работу с ним. Используя кнопку C , чтобы сбросить его, и повторите действия, которые мы проделали ранее. Теперь все работает, как положено!

То, что мы сейчас продемонстрировали – это поддержка Eclipse"ом новой возможности (которая носит название HotSwap) JVM версии 1.4. Теперь Java Platform Debugger Architecture (JPDA) поддерживает возможность замены исходного кода у выполняющегося приложения. Это особенно полезно, когда запуск приложения или нахождение места, где оно "рушится", отнимает много времени.

Интересные возможности в ближайших версиях Eclipse

Одна весьма интересная особенность Eclipse – это скорость, с которой отлавливаются ошибки, и с которой разработчики реагируют на различные нужды и пожелания пользователей. Eclipse Consortium ежемесячно выпускают последние релизы, которые включают в себя стабильные версии различных возможностей, которыми интересуются пользователи (такие релизы содержит в названии идентификаторы M1, M2, M3 и т.д.) Среди возможностей, включенных в релиз 2.1 M3 можно выделить следующие, наиболее значимые:

  • - настраиваемые связи "горячих" комбинаций клавиш, включая набор связей, схожий с тем, что есть в Emacs;
  • - возможность автоматической вставки TODO , FIXME и других тэговых комментариев в Java-код, в различные элементы и списки задач;
  • - улучшенная поддержка CVS, включая возможность определять "working sets", которые ограничивают количество отображаемых проектов на панели CVS Repositories ;
  • - новые заготовки в Java-редакторе, которые могут использоваться для показа исходного кода, Javadoc, детальных сообщений об ошибках для каждой строки кода или выражения в "выпадающем" (tooltip) окне;
  • - поддержка нескольких новых рефакторингов;
  • - новая панель Threads and Monitors в отладчике, которые позволяют определить какие из "нитей" (потоков) блокируют ресурсы, какие из них находятся в ожидании, и прочую полезную информацию для отладки мультипотоковых приложений;
  • - более тесная интеграция с инструментом сборки Jakarta Ant;

Эта последняя особенность и делает Eclipse хорошо скомпонованной средой разработки Java-приложений и, в частности, разработки Web-приложений. Eclipse объединяет в себе все инструменты, которые необходимы разработчику чтобы успешно разрабатывать Web-приложения: расширяемую IDE, стандартный компилятор, возможность удаленной отладки, поддержка Ant, тестирование с помощью JUnit, plug-in"ы для взаимодействия, практически, со всеми серверами приложений, а также EJB-контейнер.

Ресурсы

  • eclipse.org (http://www.eclipse.org/)
  • Eclipse Project FAQ (http://www.eclipse.org/eclipse/faq/eclipse-faq.html)
  • Eclipse Platform Technical Overview (