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

 

 

СОДЕРЖАНИЕ

Введение 3

1 Установка 5

2 Интерфейс 7

2.1 Приложение - пример 7

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

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

3 Структура и состав Eclipse 20

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

Заключение 22

Библиографический список 23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

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

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

1.      Проект The Eclipse непосредственно Eclipse IDE ("платформы", содержащей и исполняющей инструменты Eclipse), инструментов разработки для Java (Java Development Tools, далее JDT) и среды разработки Plug-In (Plug-In Development Environment, далее PDE), позволяющих расширять платформу.

2.      Проект Eclipse Tools имеет своей целью создание инструментов для платформы Eclipse (в текущей разработке находятся подпроекты создания IDE для Cobol, IDE для C/C++, а также инструмента для построения EMF моделей).

3.      Проект The Eclipse Technology ответственен за технологические разработки, эволюцию и обучение использованию платформы Eclipse.

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

Проект Eclipse представляет собой первую столь мощно поддержанную мировым IT-сообществом попытку создания единой открытой интегрированной платформы разработки приложений, обладающей надежностью, функциональностью и уровнем качества коммерческого продукта. Фактически эта платформа представляет собой основу, имеющую блочную структуру и интегрирующую инструменты разработки ПО различных производителей для создания приложений на любом языке, с использованием любых технологий и для любой программной платформы. Вокруг проекта Eclipse в настоящее время сформировано сообщество крупнейших IT-компаний, среди которых Borland, IBM, SAP AG, RedHat и другие.

Также Eclipse предлагает множество уникальных возможностей, например рефакторинг кода, автоматическое обновление/установка кода (с помощью Менеджера Обновлений), список текущих задач, отладку модулей с помощью JUnit и интеграцию с инструментом компоновки Jakarta Ant.

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

Консорциум предоставляет  готовые исполняемые файлы для Windows, Linux, Solaris, HP-UX, AIX, QNX и Mac OS X. Большой интерес в Eclipse представляет plug-in архитектура, а также богатый API, предоставляемый PDE, позволяющий расширять Eclipse. Добавление поддержки для нового редактора, представления или языка программирования является достаточно простым, благодаря грамотно разработанным API и большим строительным блокам, предоставляемым Eclipse.

Учитывая сотни  проектов по разработке plug-in, ведущихся в настоящее время, таких индустриальных гигантов как IBM, HP и Rational, предоставляющих ресурсы, а также проектных тяжеловесов вроде Erich Gamma, помогающих направлять процесс эволюции в нужное русло - у Eclipse большое будущее.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 Установка

Eclipse написана на Java, поэтому для работы требуется Java Runtime Environment (java-машина). Дистрибутив можно взять на сайте фирмы Sun: http://java.sun.com. Далее идем на официальный сайт Eclipse Foundation (www.eclipse.org) и скачаем архив eclipse-SDK-3.1.2-win32.zip из раздела Download (весит чуть больше 100 Мб). Можно поискать дистрибутив Eclipse и на CD-дисках.

Теперь можно приступать к самой  установке, хотя «установка» — громко сказано. Достаточно просто распаковать zip-архив в нужную папку, скажем C:\Program Files\Eclipse, и все — среда готова к использованию. Для сохранения настроек Eclipse использует файловую систему, а не реестр, поэтому для разных языков программирования можно установить Eclipse в разные папки, но ничто не мешает поставить плагины для нескольких языков и на один экземпляр среды.

Если вы верно установили вашу JVM и правильно распаковали архив, то вы готовы к первому запуску Eclipse. Во всех распространяемых версиях имеется запускающее приложение. Название загрузчика eclipse.exe. Для запуска Eclipse нужно написать файл .bat с двумя строчками, в первой из которых указывается путь к установленной Java VM, а во второй вызывается сам загрузчик eclipse.exe, собственно теперь запуск Eclipse происходит через .bat файл. Например:          

set PATH=C:\j2sdk1.4.2_04\bin

eclipse.exe. 

 

Рисунок 1 Запуск Eclipse

При первом запуске  загрузчика Eclipse перед появлением самой  среды выполняется ряд завершающих  установочных шагов (например, создание директории workspace для хранения файлов проектов).  

 

Рисунок 2 Создание директории workspace для хранения файлов проектов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 Интерфейс

После того, как  вы установили и запустили Eclipse, пришло время его использовать. После  первого запуска вы должны увидеть  окно, похожее на это: 

 

 

 

Рисунок 3 Первоначальный вид окна Eclipse 

 

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

Рисунок 4 Меню

и панель инструментов:

Рисунок 5 Панель инструментов

2.1 Приложение - пример

На экране присутствуют Файловый Навигатор (Navigator), Список Текущих Задач (Tasks) и Группировщик Кода (Outline), но пока что не содержат никакой информации. Для продолжения нашего исследования Eclipse, мы создадим простое приложение калькулятора на базе Swing.

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

Рисунок 6 Первая страница мастера Нового Проекта

2.      В качестве названия проекта введите Calculator и снова нажмите Next. Можно указать место для хранения исходных и скомпилированных файлов, а также создать отдельные каталоги для таких файлов.

Рисунок 7 Вторая страница мастера Нового Проекта 

 

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

Рисунок 8 Третья страница мастера Нового Проекта

4.      Щелкните на кнопке Finish. В появившемся окошке предлагающем переключить перспективу жмем на YES и Eclipse создаст новый проект.

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

 

Рисунок 9 Перспектива Java

 

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

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

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

 

Рисунок 10 Создание папок завершено 

 

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

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

Теперь, когда  мы построили структуру папок, мы можем начать добавлять код к  нашему проекту. Мы разделим нашу программу  калькулятора на три отдельных файла  кода: CalcMode.java,CalcPanel.java и Calculator.java. 

 

CalcModel.java

package com.devious.calculator;

import java.util.Observable;

public class CalcModel extends Observable

{   

 public static final int OP_NONE = 0; public static final int OP_ADD  = 1;   

 public static final int OP_SUB  = 2; public static final int OP_MUL  = 3;   

 public static final int OP_DIV  = 4;   

 private int pendingOp = 0; private int previousValue = 0;   

 private int currentValue = 0; public String getValue()   

{       

 return Integer.toString(currentValue);    

}   

 public void addDigit(String s)   

{       

 char c = s.charAt(0);       

String val = getValue() + c;        

 setDisplay(Integer.parseInt(val));    

}   

 public void addDigit(char c)   

{   

   String val = getValue() + c;   

   setDisplay(Integer.parseInt(val));    

}   

 public void setOperation(int op)   

{       

 if (pendingOp != OP_NONE)            

 calculate();    

    previousValue = currentValue; this.pendingOp = op; currentValue = 0;   

}   

 public void setDisplay(int value)   

{       

 currentValue = value; setChanged(); notifyObservers();   

}   

 public void clear()   

{  

      this.pendingOp = OP_NONE; previousValue = 0; setDisplay(0);     

}   

 public void calculate()    

{       

 switch (pendingOp)       

{       

 case OP_ADD:           

 setDisplay(previousValue + currentValue);           

 break;       

 case OP_SUB:           

 setDisplay(previousValue + currentValue);           

 break;       

 case OP_MUL:           

 setDisplay(previousValue * currentValue);           

 break;       

 case OP_DIV:           

 setDisplay(previousValue / currentValue);           

 break;       

}        

 pendingOp = OP_NONE;       

 previousValue = 0; }} 

 

CalcPanel.java

package com.devious.calculator;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class CalcPanel     

 extends JPanel     

 implements ActionListener, Observer

{   

 private CalcModel model;    

 private JLabel display = new JLabel("0");   

 public CalcPanel(CalcModel model)   

{       

 super(); this.model = model; model.addObserver(this);   

}   

 protected JButton addButton(String label)   

{       

 JButton b = new JButton(label); b.addActionListener(this); return b;   

}   

 protected JPanel createButtonPanel()    

{       

 JPanel panel = new JPanel();        

 panel.setLayout(new GridLayout(0, 4));         

 panel.add(addButton("1")); panel.add(addButton("2")); panel.add(addButton("3"));        

 panel.add(addButton("+")); panel.add(addButton("4")); panel.add(addButton("5"));        

 panel.add(addButton("6")); panel.add(addButton("-")); panel.add(addButton("7"));        

 panel.add(addButton("8")); panel.add(addButton("9")); panel.add(addButton("*"));        

 panel.add(addButton("C")); panel.add(addButton("0")); panel.add(addButton("="));        

 panel.add(addButton("/"));        

 return panel;   

}   

 public void init()   

{       

 this.setLayout(new BorderLayout());        

 display.setVerticalTextPosition(JLabel.CENTER);        

 display.setHorizontalTextPosition(JLabel.RIGHT);        

 display.setVerticalAlignment(JLabel.TOP);        

 display.setHorizontalAlignment(JLabel.TRAILING);        

 display.setBorder(BorderFactory.createLineBorder(Color.black));        

 

 

        this.add(display, BorderLayout.NORTH);        

 this.add(createButtonPanel(), BorderLayout.CENTER);   

}   

 public void actionPerformed(ActionEvent evt)   

{       

 System.out.println(evt.paramString());        

 try {           

 switch (evt.getActionCommand().charAt(0)) {           

 case '+':               

 model.setOperation(CalcModel.OP_ADD);                

 break;           

 case '-':               

 model.setOperation(CalcModel.OP_SUB);                

 break;           

 case '*':               

 model.setOperation(CalcModel.OP_MUL);                

 break;           

 case '/':               

 model.setOperation(CalcModel.OP_DIV);                

 break;           

 case '=':               

 model.calculate();               

 break;           

 case 'C':               

 model.clear();               

 break;           

 default:               

 model.addDigit(evt.getActionCommand());                

 break;           

}       

} catch (NumberFormatException ex) {}   

}   

 public void update(Observable o, Object arg)   

{       

 display.setText(model.getValue());}}  

 

Calculator.java

package com.devious.calculator;

import javax.swing.*;

public class Calculator

{   

 public static void main(String[] args)   

{      

  try {           

 UIManager.setLookAndFeel(                

 UIManager.getCrossPlatformLookAndFeelClassName());        

} catch (Exception e) {}       

 JFrame calcFrame = new JFrame("Calculator");       

 CalcModel model = new CalcModel();               

 CalcPanel calcPanel = new CalcPanel(model);       

 calcPanel.init();       

 calcFrame.setContentPane(calcPanel);        

 calcFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        

 calcFrame.pack();       

 calcFrame.setVisible(true);  }}

Создайте и  поместите эти файлы в подпапку com/devious/calculator. Используйте команду File->Refresh для обновления проекта Eclipse. 

 

Рисунок 11 Проект с добавленными исходными файлами

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

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

 

Рисунок 12 Перспектива просмотра Java Browsing

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

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

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

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

 

Рисунок 13 Диалог Run

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

4.      Нажмите кнопку Search... и выберите Calculator в качестве главного класса (Main Class) введите в текстовом поле com.delirious.calculator.Calculator. 

 

Рисунок 14 Выбор главного класса

5.      Щелкните кнопку Run для сохранения конфигурации и запуска приложения.

Рисунок 15 Приложение Calculator

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

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

Рисунок 16 Перспектива Отладки

Поскольку кажется, что наша проблема центрирована вокруг функции вычитания, мы установим точки прерывания (breakpoints) в обработчиках клавиш "минус" и "равно". Сначала нам нужно переключиться на закладку редактирования для класса CalcPanel. (Если у вас нет открытой закладки для класса CalcPanel, вам следует переключиться обратно в перспективу Java или перспективу Ресурсов, открыть файл там и снова перейти в перспективу Отладки).

Используйте представление  Группировки Кода и выберите метод actionPerformed. Прокрутите несколько строк вниз, пока не увидите оператор case для клавиши "минус". Если вы выполните двойной щелчок по левой границе этой строки, Eclipse установит там точку прерывания. Прокрутите вниз еще несколько строк, чтобы установить еще одну точку прерывания на вызовmodel.calculate() в обработчике клавиши "равно".

Рисунок 17 Установка точки прерывания

Далее переключитесь  на окно калькулятора и пощелкайте на нескольких кнопках. Что-нибудь вроде "2 4 6 -" должно сработать. Как только отладчик попадает на точку прерывания, вы можете использовать кнопки на панели инструментов для представления  Отладчика (Debug view): для захода внутрь метода (step into), прохода по нему (step over) или выхода их него (step out).

Если мы зайдем внутрь метода setOperation, мы увидим, что он просто сохраняет код операции в поле pendingOp. Для продолжения исполнения программы нажмите кнопку Resume на панели инструментов отладчика.

Совет: Распространенной ошибкой для новых пользователей Eclipse является нажатие на кнопки Run или Debug вместо Resume. Такое действие вместо продолжения отладки приведет к запуску еще одной копии приложения.

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

 

 

3 Структура и состав Eclipse

Eclipse состоит из проектов, каждый из  которых курируется Комитетом  по управлению проектом (Project Management Committee, PMC) в соответствии с Уставом проекта. 
 
Проекты делятся на подпроекты (subprojects). Для оформления нового проекта (подпроекта) инициативной группой вносится предложение на проект (project proposal), основным документом которого является декларация проекта (project declaration), и проект получает статус предложенного (proposed project). Для предложенных проектов проводится обсуждение их целей, тематического охвата, организационной структуры проекта, результатов проекта и формирование проектной команды.

Более подробно организационная структура, проектные роли и жизненный цикл проектов в рамках Eclipse описаны в  документе The Eclipse Development Process.

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

Основой Eclipse является платформа расширенного клиента (RCP — от англ. rich client platform). Её составляют следующие компоненты:

  • Ядро платформы (загрузка Eclipse, запуск модулей);
  • OSGi (стандартная среда поставки комплектов (англ. bundles));
  • SWT (портируемый инструментарий виджетов);
  • JFace (файловые буферы, работа с текстом, текстовые редакторы);
  • Рабочая среда Eclipse (панели, редакторы, проекции, мастеры).

 

Графически  архитектура платформы Eclipse может  быть выражена схемой:

Рисунок 6 Aрхитектура платформы Eclipse

 

Каждое  инструментальное средство разработки оформляется в виде плагина (plug-in), реализующего определенный набор функций, присоединяемого к платформе Eclipse посредством своего API и написанного на Java. Как правило, плагин представляет собой Java-код, оформленный в виде архива JAR, несколько файлов для чтения и набор других ресурсов, необходимых для работы плагина, например, библиотеки, графические изображения, шаблоны и т. д.

 

 

Заключение

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

Более подробную информацию об API платформы Eclipse, точках расширения и стандартных компонентах содержится в Руководстве Разработчика Плагинов Платформы (Platform Plug-in Developer Guide), которое доступно в виде online-справки в Eclipse SDK.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Библиографический список

    1. Официальный сайт сообщества Eclipse: http://www.eclipse.org/;
    2. Реестр Eclipse-плагинов: http://www.eclipse-plugins.info/eclipse/index.jsp;
    3. Сайт разработчиков на Eclipse и IBM WebSphere, статьи, форумы: http://www.eclipse-workbench.com/;
    4. Последние новости об Eclipse: http://www.eclipsenews.com/;
    5. Обширный ресурс, содержащий реестр плагинов Eclipse, последние новости, статьи, аналитика, апдейты, форумы, maillist-ы: http://www.eclipseplugincentral.com/;
    6. Проект The Eclipse: http://www.eclipse.org/eclipse/index.html;
    7. Проект Eclipse Tools: http://www.eclipse.org/tools/index.html;
    8. Проект The Eclipse Technology: http://www.eclipse.org/technology/index.html

 


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