konstantin slisenko - osgi, equinox, eclipse plug-in developement
TRANSCRIPT
![Page 1: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/1.jpg)
OSGI, Equinox, Eclipse plug-in developement
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 2: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/3.jpg)
Основная идея OSGI
• Вся система состоит из плагинов (бандлов)• Бандлы – Содержат java классы и другие ресурсы– Могут взаимодействовать друг с другом– Могут добавляться, удаляться, запускаться,
останавливаться, обновляться в runtime– Работают в рамках одной JVM, но могут быть
destributed
• Бандлом может быть, например, web-сервер, или любое другое приложение
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 4: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/4.jpg)
Жизненный цикл бандла
• Экономия ресурсов– Нет необходимости держать в памяти
неиспользуемые в данный момент бандлы– Не нужно при старте приложения загружать все
бандлы – они подгрузятся по мере необходимости
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 5: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/5.jpg)
Взаимодействие между бандлами
• Бандлы – создают сервисы– используют сервисы других
• Взаимодействуют через Service Registry API– Ничего не знают друг о друге, просто ищут
нужные им сервисы
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 6: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/6.jpg)
Бандл = 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](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/7.jpg)
Архитектура OSGi
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 8: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/8.jpg)
Плюсы• Модульность приложения• Возможность сбора приложения на лету• Позднее и слабое связывание
– Все бандлы взаимодействуют через Service Registry API– Не знают друг о друге
• В системе могут одновременно быть множество различных версий одного бандла
• Возрастает надёжность системы– Пример: в системе 700 бандлов, если один из них валится, не валится
вся система– Неработающий бандл можно перезагрузить, работа системы не
остановится• Экономия ресурсов• Дополнительные возможности спецификации OSGi:
– Security, Logging, Configuration, etc. Author: Konstantin Slisenko, JazzTeam, 2011
![Page 9: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/9.jpg)
Тенденции модульности в Java 7
• Модульность будет реализована в JDK 7 на уровне языка– Сейчас JDK в основном монолитная
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 10: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/10.jpg)
Реализации 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](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/11.jpg)
Eclipse
• Больше, чем IDE• Платформа для разработки
интегрированных приложений• Построен в виде набора расширяемых
подсистем, а не как монолитное приложение
• После версии 3.0 был переведён на открытый стандарт OSGi (Equinox)
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 12: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/12.jpg)
Архитектура Eclipse
• Platform – ядро Eclipse– Не содержит полезной для пользователя
функциональности– Основа для работы остальных компонентов Eclipse
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 13: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/13.jpg)
Практически чистый Eclipse
• Все расширения Eclipse - плагины• 761 плагин (я доустановил 2-3)
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 14: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/14.jpg)
Обзор 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](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/15.jpg)
Perspectives
• Набор функциональности для определённой деятельности– Java разработка– Работа с БД– Отладка, и т.д.
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 16: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/16.jpg)
Views
• Окошки для дополнительной навигации и отображения различной информации, изменения настроек и т.д.
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 17: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/17.jpg)
Editors
• Редакторы для различных нужд– Работа с текстом– Подсветка синтаксиса– Работа с XML
• Остаются при смене перспективы
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 18: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/19.jpg)
Принципы плагинной системы Eclipse
• Плагины предоставляют точки расширения (Extension Points)
• Плагины создают расширения (Extensions)– Используют точки расширения других плагинов
• Пример – расширяем обычный текстовый редактор в редактор для работы с XML
• Точки расширения описываются в plugin.xmlAuthor: Konstantin Slisenko, JazzTeam, 2011
![Page 20: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/20.jpg)
plugin.xml
• При запуске Equinox загружает plugin.xml каждого плагина
• Строится граф зависимостей• Описывает:– Extension Points, которые мы предоставляем
другим плагинам– Extensions, которые мы реализуем в нашем
плагине– Список плагинов, необходимых для работы нашего
и т.д.
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 21: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/21.jpg)
Пример 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](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/22.jpg)
Создание простого плагина
DEMO
Author: Konstantin Slisenko, JazzTeam, 2011
![Page 23: Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement](https://reader036.vdocuments.mx/reader036/viewer/2022070317/55657e61d8b42a723f8b4a07/html5/thumbnails/23.jpg)
Спасибо за внимание!
Презентация будет доступна на сайте oslab.by
Author: Konstantin Slisenko, JazzTeam, 2011