Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement

23
OSGI, Equinox, Eclipse plug-in developement Author: Konstantin Slisenko, JazzTeam, 2011

Transcript of Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement

Page 1: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

OSGI, Equinox, Eclipse plug-in developement

Author: Konstantin Slisenko, JazzTeam, 2011

Page 2: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

OSGi

• Open Services Gateway Initiative• Спецификация архитектуры для создания

модульных java-приложений• Разрабатывается некоммерческой организацией

OSGI Alliance (osgi.org)

• ПрименениеСначала: автомобильная и промышленная электроникаСейчас: многофункциональные desctop-приложения и enterprise системы

Author: Konstantin Slisenko, JazzTeam, 2011

Page 3: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Основная идея OSGI

• Вся система состоит из плагинов (бандлов)• Бандлы – Содержат java классы и другие ресурсы– Могут взаимодействовать друг с другом– Могут добавляться, удаляться, запускаться,

останавливаться, обновляться в runtime– Работают в рамках одной JVM, но могут быть

destributed

• Бандлом может быть, например, web-сервер, или любое другое приложение

Author: Konstantin Slisenko, JazzTeam, 2011

Page 4: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Жизненный цикл бандла

• Экономия ресурсов– Нет необходимости держать в памяти

неиспользуемые в данный момент бандлы– Не нужно при старте приложения загружать все

бандлы – они подгрузятся по мере необходимости

Author: Konstantin Slisenko, JazzTeam, 2011

Page 5: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Взаимодействие между бандлами

• Бандлы – создают сервисы– используют сервисы других

• Взаимодействуют через Service Registry API– Ничего не знают друг о друге, просто ищут

нужные им сервисы

Author: Konstantin Slisenko, JazzTeam, 2011

Page 6: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Бандл = jar-файл с метаданными

Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: My favorite Plug-in Bundle-SymbolicName: org.my_plugin; singleton:=true Bundle-Version: 1.0.0 Bundle-ClassPath: my_plugin.jar Bundle-Activator: org.my_plugin.demo.MyActivator Bundle-Vendor: Me Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime Eclipse-LazyStart: true Export-Package: org.my_plugin.demo.subpackage; uses:="org.eclipse.swt.graphics, org.eclipse.jface.viewers, org.eclipse.ui.part, org.eclipse.swt.widgets"

• Метаданные описываются в файле манифеста

• META-INF/MAINFEST.MF

Author: Konstantin Slisenko, JazzTeam, 2011

Page 7: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Архитектура OSGi

Author: Konstantin Slisenko, JazzTeam, 2011

Page 8: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Плюсы• Модульность приложения• Возможность сбора приложения на лету• Позднее и слабое связывание

– Все бандлы взаимодействуют через Service Registry API– Не знают друг о друге

• В системе могут одновременно быть множество различных версий одного бандла

• Возрастает надёжность системы– Пример: в системе 700 бандлов, если один из них валится, не валится

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

остановится• Экономия ресурсов• Дополнительные возможности спецификации OSGi:

– Security, Logging, Configuration, etc. Author: Konstantin Slisenko, JazzTeam, 2011

Page 9: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Тенденции модульности в Java 7

• Модульность будет реализована в JDK 7 на уровне языка– Сейчас JDK в основном монолитная

Author: Konstantin Slisenko, JazzTeam, 2011

Page 10: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Реализации OSGi

• 4 открытых фреймворка– Apache Felix– Knopflerfish– Equinox (ядро Eclipse с версии 3.0)– Consierge OSGi

• Множество коммерческих– Samsung Service Provider 3.1– RIO framework (Siemens)– …

• Теоретически одни и те же бандлы можно устанавливать в различные реализации контейнеров

Author: Konstantin Slisenko, JazzTeam, 2011

Page 11: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Eclipse

• Больше, чем IDE• Платформа для разработки

интегрированных приложений• Построен в виде набора расширяемых

подсистем, а не как монолитное приложение

• После версии 3.0 был переведён на открытый стандарт OSGi (Equinox)

Author: Konstantin Slisenko, JazzTeam, 2011

Page 12: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

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

• Platform – ядро Eclipse– Не содержит полезной для пользователя

функциональности– Основа для работы остальных компонентов Eclipse

Author: Konstantin Slisenko, JazzTeam, 2011

Page 13: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Практически чистый Eclipse

• Все расширения Eclipse - плагины• 761 плагин (я доустановил 2-3)

Author: Konstantin Slisenko, JazzTeam, 2011

Page 14: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Обзор Eclipse

• Perspectives• Views• Editors• Main Menu• Preferences• Toolbar– Action sets

и т.д.Author: Konstantin Slisenko, JazzTeam, 2011

Page 15: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Perspectives

• Набор функциональности для определённой деятельности– Java разработка– Работа с БД– Отладка, и т.д.

Author: Konstantin Slisenko, JazzTeam, 2011

Page 16: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Views

• Окошки для дополнительной навигации и отображения различной информации, изменения настроек и т.д.

Author: Konstantin Slisenko, JazzTeam, 2011

Page 17: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Editors

• Редакторы для различных нужд– Работа с текстом– Подсветка синтаксиса– Работа с XML

• Остаются при смене перспективы

Author: Konstantin Slisenko, JazzTeam, 2011

Page 18: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Eclipse plug-in developement

• Проект Eclipse PDE – http://www.eclipse.org/pde/– 21 мая вебинар для Belarus

Open Source Lab, докладчик Eclipse PDE Lead (Индия, Бангалор)

• Инструментарий для разработки плагинов

Author: Konstantin Slisenko, JazzTeam, 2011

Page 19: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Принципы плагинной системы Eclipse

• Плагины предоставляют точки расширения (Extension Points)

• Плагины создают расширения (Extensions)– Используют точки расширения других плагинов

• Пример – расширяем обычный текстовый редактор в редактор для работы с XML

• Точки расширения описываются в plugin.xmlAuthor: Konstantin Slisenko, JazzTeam, 2011

Page 20: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

plugin.xml

• При запуске Equinox загружает plugin.xml каждого плагина

• Строится граф зависимостей• Описывает:– Extension Points, которые мы предоставляем

другим плагинам– Extensions, которые мы реализуем в нашем

плагине– Список плагинов, необходимых для работы нашего

и т.д.

Author: Konstantin Slisenko, JazzTeam, 2011

Page 21: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Пример plugin.xml<?xml version="1.0" encoding="UTF-8"?><?eclipse version="3.4"?><plugin>

<extension point="org.eclipse.ui.commands"> <category name="Sample Category" id="HelloWorldPlugin.commands.category"> </category> <command name="Sample Command" categoryId="HelloWorldPlugin.commands.category" id="HelloWorldPlugin.commands.sampleCommand"> </command> </extension>

....

</plugin>Author: Konstantin Slisenko, JazzTeam, 2011

Page 22: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Создание простого плагина

DEMO

Author: Konstantin Slisenko, JazzTeam, 2011

Page 23: Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement

Спасибо за внимание!

Презентация будет доступна на сайте oslab.by

Author: Konstantin Slisenko, JazzTeam, 2011