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
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