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

1,078 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,078
On SlideShare
0
From Embeds
0
Number of Embeds
61
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. OSGI, Equinox, Eclipse plug-in developement<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  2. 2. OSGi<br />Open Services Gateway Initiative<br />Спецификация архитектуры для создания модульных java-приложений<br />Разрабатываетсянекоммерческой организацией OSGI Alliance (osgi.org)<br />Применение<br />Сначала: автомобильная и промышленная электроника<br />Сейчас: многофункциональные desctop-приложения и enterprise системы<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  3. 3. Основная идея OSGI<br />Вся система состоит из плагинов (бандлов)<br />Бандлы<br />Содержат java классы и другие ресурсы<br />Могут взаимодействовать друг с другом<br />Могут добавляться, удаляться, запускаться, останавливаться, обновляться в runtime<br />Работают в рамках одной JVM, но могут быть destributed<br />Бандлом может быть, например, web-сервер, или любое другое приложение<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  4. 4. Жизненный цикл бандла<br />Экономия ресурсов<br />Нет необходимости держать в памяти неиспользуемые в данный момент бандлы<br />Не нужно при старте приложения загружать все бандлы– они подгрузятся по мере необходимости<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  5. 5. Взаимодействие между бандлами<br />Бандлы<br />создают сервисы<br />используют сервисы других<br />Взаимодействуют через Service Registry API<br />Ничего не знают друг о друге, просто ищут нужные им сервисы<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  6. 6. Бандл = jar-файл с метаданными<br />Метаданные описываются в файле манифеста<br />META-INF/MAINFEST.MF<br />Manifest-Version: 1.0 <br />Bundle-ManifestVersion: 2 <br />Bundle-Name: My favorite Plug-in <br />Bundle-SymbolicName: org.my_plugin; singleton:=true Bundle-Version: 1.0.0 <br />Bundle-ClassPath: my_plugin.jar <br />Bundle-Activator: org.my_plugin.demo.MyActivator<br />Bundle-Vendor: Me <br />Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime<br />Eclipse-LazyStart: true <br />Export-Package: org.my_plugin.demo.subpackage; uses:="org.eclipse.swt.graphics, org.eclipse.jface.viewers, org.eclipse.ui.part, org.eclipse.swt.widgets"<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  7. 7. Архитектура OSGi<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  8. 8. Плюсы<br />Модульность приложения<br />Возможность сбора приложения на лету<br />Позднее и слабое связывание <br />Все бандлы взаимодействуют через Service Registry API<br />Не знают друг о друге<br />В системе могут одновременно быть множество различных версий одного бандла<br />Возрастает надёжность системы<br />Пример: в системе 700 бандлов, если один из них валится, не валится вся система<br />Неработающий бандл можно перезагрузить, работа системы не остановится<br />Экономия ресурсов<br />Дополнительные возможности спецификации OSGi:<br />Security, Logging, Configuration, etc.<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  9. 9. Тенденции модульности в Java 7<br />Модульность будет реализована в JDK 7 на уровне языка<br />Сейчас JDK в основном монолитная<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  10. 10. Реализации OSGi<br />4 открытых фреймворка<br />Apache Felix<br />Knopflerfish<br />Equinox (ядро Eclipse сверсии 3.0)<br />ConsiergeOSGi<br />Множество коммерческих<br />Samsung Service Provider 3.1<br />RIO framework (Siemens)<br />…<br />Теоретически одни и те же бандлы можно устанавливать в различные реализации контейнеров<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  11. 11. Eclipse<br />Больше, чем IDE<br />Платформа для разработки интегрированных приложений<br />Построен в виде набора расширяемых подсистем, а не как монолитное приложение<br />После версии 3.0 был переведён на открытый стандарт OSGi (Equinox)<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  12. 12. Архитектура Eclipse<br />Platform – ядро Eclipse<br />Не содержит полезной для пользователя функциональности<br />Основа для работы остальных компонентов Eclipse<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  13. 13. Практически чистый Eclipse<br />Все расширения Eclipse - плагины<br />761 плагин (я доустановил 2-3)<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  14. 14. Обзор Eclipse<br />Perspectives<br />Views<br />Editors<br />Main Menu<br />Preferences<br />Toolbar<br />Action sets<br />и т.д.<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  15. 15. Perspectives<br />Набор функциональности для определённой деятельности<br />Java разработка<br />Работа с БД<br />Отладка, и т.д.<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  16. 16. Views<br />Окошки для дополнительной навигации и отображения различной информации, изменения настроек и т.д.<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  17. 17. Editors<br />Редакторы для различных нужд<br />Работа с текстом<br />Подсветка синтаксиса<br />Работа с XML<br />Остаются при смене перспективы<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  18. 18. Eclipse plug-in developement<br />Проект Eclipse PDE <br />http://www.eclipse.org/pde/<br />21 мая вебинар для Belarus Open Source Lab, докладчик Eclipse PDE Lead (Индия, Бангалор)<br />Инструментарий для разработки плагинов<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  19. 19. Принципы плагиннойсистемы Eclipse<br />Плагины предоставляютточки расширения (Extension Points)<br />Плагины создают расширения (Extensions)<br />Используют точки расширения других плагинов<br />Пример – расширяем обычный текстовый редактор в редактор для работы с XML<br />Точки расширения описываются в plugin.xml<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  20. 20. plugin.xml<br />При запуске Equinox загружает plugin.xml каждого плагина<br />Строится граф зависимостей<br />Описывает:<br />Extension Points, которые мы предоставляем другим плагинам<br />Extensions, которые мы реализуем в нашем плагине<br />Список плагинов, необходимых для работы нашего и т.д.<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  21. 21. Пример plugin.xml<br /><?xml version="1.0" encoding="UTF-8"?><br /><?eclipse version="3.4"?><br /><plugin><br /> <extension<br /> point="org.eclipse.ui.commands"><br /> <category<br /> name="Sample Category"<br /> id="HelloWorldPlugin.commands.category"><br /> </category><br /> <command<br /> name="Sample Command"<br />categoryId="HelloWorldPlugin.commands.category"<br /> id="HelloWorldPlugin.commands.sampleCommand"><br /> </command><br /> </extension><br />....<br /></plugin><br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  22. 22. Создание простого плагина<br />DEMO<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />
  23. 23. Спасибо за внимание!<br />Презентация будет доступна на сайте oslab.by<br />Author: Konstantin Slisenko, JazzTeam, 2011<br />

×