konstantin slisenko - osgi, equinox, eclipse plug-in developement
Post on 27-May-2015
859 Views
Preview:
TRANSCRIPT
OSGI, Equinox, Eclipse plug-in developement
Author: Konstantin Slisenko, JazzTeam, 2011
OSGi
• Open Services Gateway Initiative• Спецификация архитектуры для создания
модульных java-приложений• Разрабатывается некоммерческой организацией
OSGI Alliance (osgi.org)
• ПрименениеСначала: автомобильная и промышленная электроникаСейчас: многофункциональные desctop-приложения и enterprise системы
Author: Konstantin Slisenko, JazzTeam, 2011
Основная идея OSGI
• Вся система состоит из плагинов (бандлов)• Бандлы – Содержат java классы и другие ресурсы– Могут взаимодействовать друг с другом– Могут добавляться, удаляться, запускаться,
останавливаться, обновляться в runtime– Работают в рамках одной JVM, но могут быть
destributed
• Бандлом может быть, например, web-сервер, или любое другое приложение
Author: Konstantin Slisenko, JazzTeam, 2011
Жизненный цикл бандла
• Экономия ресурсов– Нет необходимости держать в памяти
неиспользуемые в данный момент бандлы– Не нужно при старте приложения загружать все
бандлы – они подгрузятся по мере необходимости
Author: Konstantin Slisenko, JazzTeam, 2011
Взаимодействие между бандлами
• Бандлы – создают сервисы– используют сервисы других
• Взаимодействуют через Service Registry API– Ничего не знают друг о друге, просто ищут
нужные им сервисы
Author: Konstantin Slisenko, JazzTeam, 2011
Бандл = 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
Архитектура OSGi
Author: Konstantin Slisenko, JazzTeam, 2011
Плюсы• Модульность приложения• Возможность сбора приложения на лету• Позднее и слабое связывание
– Все бандлы взаимодействуют через Service Registry API– Не знают друг о друге
• В системе могут одновременно быть множество различных версий одного бандла
• Возрастает надёжность системы– Пример: в системе 700 бандлов, если один из них валится, не валится
вся система– Неработающий бандл можно перезагрузить, работа системы не
остановится• Экономия ресурсов• Дополнительные возможности спецификации OSGi:
– Security, Logging, Configuration, etc. Author: Konstantin Slisenko, JazzTeam, 2011
Тенденции модульности в Java 7
• Модульность будет реализована в JDK 7 на уровне языка– Сейчас JDK в основном монолитная
Author: Konstantin Slisenko, JazzTeam, 2011
Реализации OSGi
• 4 открытых фреймворка– Apache Felix– Knopflerfish– Equinox (ядро Eclipse с версии 3.0)– Consierge OSGi
• Множество коммерческих– Samsung Service Provider 3.1– RIO framework (Siemens)– …
• Теоретически одни и те же бандлы можно устанавливать в различные реализации контейнеров
Author: Konstantin Slisenko, JazzTeam, 2011
Eclipse
• Больше, чем IDE• Платформа для разработки
интегрированных приложений• Построен в виде набора расширяемых
подсистем, а не как монолитное приложение
• После версии 3.0 был переведён на открытый стандарт OSGi (Equinox)
Author: Konstantin Slisenko, JazzTeam, 2011
Архитектура Eclipse
• Platform – ядро Eclipse– Не содержит полезной для пользователя
функциональности– Основа для работы остальных компонентов Eclipse
Author: Konstantin Slisenko, JazzTeam, 2011
Практически чистый Eclipse
• Все расширения Eclipse - плагины• 761 плагин (я доустановил 2-3)
Author: Konstantin Slisenko, JazzTeam, 2011
Обзор Eclipse
• Perspectives• Views• Editors• Main Menu• Preferences• Toolbar– Action sets
и т.д.Author: Konstantin Slisenko, JazzTeam, 2011
Perspectives
• Набор функциональности для определённой деятельности– Java разработка– Работа с БД– Отладка, и т.д.
Author: Konstantin Slisenko, JazzTeam, 2011
Views
• Окошки для дополнительной навигации и отображения различной информации, изменения настроек и т.д.
Author: Konstantin Slisenko, JazzTeam, 2011
Editors
• Редакторы для различных нужд– Работа с текстом– Подсветка синтаксиса– Работа с XML
• Остаются при смене перспективы
Author: Konstantin Slisenko, JazzTeam, 2011
Eclipse plug-in developement
• Проект Eclipse PDE – http://www.eclipse.org/pde/– 21 мая вебинар для Belarus
Open Source Lab, докладчик Eclipse PDE Lead (Индия, Бангалор)
• Инструментарий для разработки плагинов
Author: Konstantin Slisenko, JazzTeam, 2011
Принципы плагинной системы Eclipse
• Плагины предоставляют точки расширения (Extension Points)
• Плагины создают расширения (Extensions)– Используют точки расширения других плагинов
• Пример – расширяем обычный текстовый редактор в редактор для работы с XML
• Точки расширения описываются в plugin.xmlAuthor: Konstantin Slisenko, JazzTeam, 2011
plugin.xml
• При запуске Equinox загружает plugin.xml каждого плагина
• Строится граф зависимостей• Описывает:– Extension Points, которые мы предоставляем
другим плагинам– Extensions, которые мы реализуем в нашем
плагине– Список плагинов, необходимых для работы нашего
и т.д.
Author: Konstantin Slisenko, JazzTeam, 2011
Пример 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
Создание простого плагина
DEMO
Author: Konstantin Slisenko, JazzTeam, 2011
Спасибо за внимание!
Презентация будет доступна на сайте oslab.by
Author: Konstantin Slisenko, JazzTeam, 2011
top related