Your SlideShare is downloading. ×
Konstantin Slisenko -  OSGi, Equinox, Eclipse plug-in developement
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

833
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
833
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. OSGI, Equinox, Eclipse plug-in developement
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 2. OSGi
    Open Services Gateway Initiative
    Спецификация архитектуры для создания модульных java-приложений
    Разрабатываетсянекоммерческой организацией OSGI Alliance (osgi.org)
    Применение
    Сначала: автомобильная и промышленная электроника
    Сейчас: многофункциональные desctop-приложения и enterprise системы
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 3. Основная идея OSGI
    Вся система состоит из плагинов (бандлов)
    Бандлы
    Содержат java классы и другие ресурсы
    Могут взаимодействовать друг с другом
    Могут добавляться, удаляться, запускаться, останавливаться, обновляться в runtime
    Работают в рамках одной JVM, но могут быть destributed
    Бандлом может быть, например, web-сервер, или любое другое приложение
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 4. Жизненный цикл бандла
    Экономия ресурсов
    Нет необходимости держать в памяти неиспользуемые в данный момент бандлы
    Не нужно при старте приложения загружать все бандлы– они подгрузятся по мере необходимости
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 5. Взаимодействие между бандлами
    Бандлы
    создают сервисы
    используют сервисы других
    Взаимодействуют через Service Registry API
    Ничего не знают друг о друге, просто ищут нужные им сервисы
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 6. Бандл = jar-файл с метаданными
    Метаданные описываются в файле манифеста
    META-INF/MAINFEST.MF
    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"
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 7. Архитектура OSGi
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 8. Плюсы
    Модульность приложения
    Возможность сбора приложения на лету
    Позднее и слабое связывание
    Все бандлы взаимодействуют через Service Registry API
    Не знают друг о друге
    В системе могут одновременно быть множество различных версий одного бандла
    Возрастает надёжность системы
    Пример: в системе 700 бандлов, если один из них валится, не валится вся система
    Неработающий бандл можно перезагрузить, работа системы не остановится
    Экономия ресурсов
    Дополнительные возможности спецификации OSGi:
    Security, Logging, Configuration, etc.
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 9. Тенденции модульности в Java 7
    Модульность будет реализована в JDK 7 на уровне языка
    Сейчас JDK в основном монолитная
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 10. Реализации OSGi
    4 открытых фреймворка
    Apache Felix
    Knopflerfish
    Equinox (ядро Eclipse сверсии 3.0)
    ConsiergeOSGi
    Множество коммерческих
    Samsung Service Provider 3.1
    RIO framework (Siemens)

    Теоретически одни и те же бандлы можно устанавливать в различные реализации контейнеров
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 11. Eclipse
    Больше, чем IDE
    Платформа для разработки интегрированных приложений
    Построен в виде набора расширяемых подсистем, а не как монолитное приложение
    После версии 3.0 был переведён на открытый стандарт OSGi (Equinox)
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 12. Архитектура Eclipse
    Platform – ядро Eclipse
    Не содержит полезной для пользователя функциональности
    Основа для работы остальных компонентов Eclipse
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 13. Практически чистый Eclipse
    Все расширения Eclipse - плагины
    761 плагин (я доустановил 2-3)
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 14. Обзор Eclipse
    Perspectives
    Views
    Editors
    Main Menu
    Preferences
    Toolbar
    Action sets
    и т.д.
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 15. Perspectives
    Набор функциональности для определённой деятельности
    Java разработка
    Работа с БД
    Отладка, и т.д.
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 16. Views
    Окошки для дополнительной навигации и отображения различной информации, изменения настроек и т.д.
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 17. Editors
    Редакторы для различных нужд
    Работа с текстом
    Подсветка синтаксиса
    Работа с XML
    Остаются при смене перспективы
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 18. Eclipse plug-in developement
    Проект Eclipse PDE
    http://www.eclipse.org/pde/
    21 мая вебинар для Belarus Open Source Lab, докладчик Eclipse PDE Lead (Индия, Бангалор)
    Инструментарий для разработки плагинов
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 19. Принципы плагиннойсистемы Eclipse
    Плагины предоставляютточки расширения (Extension Points)
    Плагины создают расширения (Extensions)
    Используют точки расширения других плагинов
    Пример – расширяем обычный текстовый редактор в редактор для работы с XML
    Точки расширения описываются в plugin.xml
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 20. plugin.xml
    При запуске Equinox загружает plugin.xml каждого плагина
    Строится граф зависимостей
    Описывает:
    Extension Points, которые мы предоставляем другим плагинам
    Extensions, которые мы реализуем в нашем плагине
    Список плагинов, необходимых для работы нашего и т.д.
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 21. Пример 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
  • 22. Создание простого плагина
    DEMO
    Author: Konstantin Slisenko, JazzTeam, 2011
  • 23. Спасибо за внимание!
    Презентация будет доступна на сайте oslab.by
    Author: Konstantin Slisenko, JazzTeam, 2011

×