2. План Спецификация OSGi Реализация OSGi – Equinox, Eclipse plug-in development История одного плагина + demo Author: Konstantin Slisenko, JazzTeam, 2011
3. OSGi Open Services Gateway Initiative Спецификация архитектуры для создания модульных java-приложений Разрабатываетсянекоммерческой организацией OSGI Alliance (osgi.org) Применение Сначала: автомобильная и промышленная электроника Сейчас: многофункциональные desktop-приложения и enterprise системы Author: Konstantin Slisenko, JazzTeam, 2011
4. Основная идея OSGI Вся система состоит из плагинов (бандлов) Бандлы Содержат java классы и другие ресурсы Могут взаимодействовать друг с другом Могут добавляться, удаляться, запускаться, останавливаться, обновляться в runtime Работают в рамках одной JVM, но могут быть distributed Имеют версию Бандлом может быть, например, web-сервер, или любое другое приложение Author: Konstantin Slisenko, JazzTeam, 2011
5. Жизненный цикл бандла Экономия ресурсов Нет необходимости держать в памяти неиспользуемые в данный момент бандлы Не нужно при старте приложения загружать все бандлы– они подгрузятся по мере необходимости Author: Konstantin Slisenko, JazzTeam, 2011
6. Взаимодействие между бандлами Бандлы создают сервисы используют сервисы других Взаимодействуют через Service Registry API Ничего не знают друг о друге, просто ищут нужные им сервисы Взаимодействие похоже на SOA-приложениев одной JVM Author: Konstantin Slisenko, JazzTeam, 2011
7. Бандл = 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
9. Плюсы Модульность приложения Возможность сбора приложения на лету Позднее и слабое связывание Все бандлы взаимодействуют через Service Registry API Не знают друг о друге В системе могут одновременно быть множество различных версий одного бандла Возрастает надёжность системы Пример: в системе 700 бандлов, если один из них валится, не валится вся система Неработающий бандл можно перезагрузить, работа системы не остановится Экономия ресурсов Возможность поддержки системы 24 часа в сутки, 365 дней в году Система не отключается даже при замене оборудования Дополнительные возможности спецификации OSGi: Security, Logging, Configuration, etc. Author: Konstantin Slisenko, JazzTeam, 2011
10. Тенденции модульности в Java 7 Модульность будет реализована в JDK 7 на уровне языка Сейчас JDK в основном монолитная Author: Konstantin Slisenko, JazzTeam, 2011
11. Реализации OSGi 4 открытых фреймворка Apache Felix Knopflerfish Equinox (ядро Eclipse сверсии 3.0) ConsiergeOSGi Множество коммерческих Samsung Service Provider 3.1 RIO framework (Siemens) … Теоретически одни и те же бандлы можно устанавливать в различные реализации контейнеров Author: Konstantin Slisenko, JazzTeam, 2011
13. Eclipse Больше, чем IDE Платформа для разработки интегрированных приложений Построен в виде набора расширяемых подсистем, а не как монолитное приложение После версии 3.0 был переведён на открытый стандарт OSGi (Equinox) Author: Konstantin Slisenko, JazzTeam, 2011
14. Архитектура Eclipse Platform – ядро Eclipse Не содержит полезной для пользователя функциональности Основа для работы остальных компонентов Eclipse Author: Konstantin Slisenko, JazzTeam, 2011
15. Практически чистый Eclipse Все расширения Eclipse - плагины 761 плагин (я доустановил 2-3) Author: Konstantin Slisenko, JazzTeam, 2011
16. Обзор Eclipse Perspectives Views Editors Main Menu Preferences Toolbar и т.д. Author: Konstantin Slisenko, JazzTeam, 2011
17. Perspectives Набор функциональности для определённой деятельности Java разработка Работа с БД Отладка, и т.д. Author: Konstantin Slisenko, JazzTeam, 2011
18. Views Окошки для дополни-тельной навигации и отображения различной информации, измене-ния настроек и т.д. Author: Konstantin Slisenko, JazzTeam, 2011
19. Editors Редакторы для различных нужд Работа с текстом Подсветка синтаксиса Работа с XML Остаются при смене перспективы Author: Konstantin Slisenko, JazzTeam, 2011
20. Eclipse plug-in development Проект Eclipse PDE http://www.eclipse.org/pde/ 4июнявебинар для Belarus Open Source Lab, докладчик Eclipse PDE Team Lead (Индия, Бангалор) Инструментарий для разработки плагинов Author: Konstantin Slisenko, JazzTeam, 2011
21. Принципы плагиннойсистемы Eclipse Плагины предоставляютточки расширения (Extension Points) Плагины создают расширения (Extensions) Используют точки расширения других плагинов Пример – расширяем обычный текстовый редактор в редактор для работы с XML Точки расширения описываются в plugin.xml Author: Konstantin Slisenko, JazzTeam, 2011
22. plugin.xml При запуске Equinox загружает plugin.xml каждого плагина Строится граф зависимостей Описывает: Extension Points, которые мы предоставляем другим плагинам Extensions, которые мы реализуем в нашем плагине Список плагинов, необходимых для работы нашего и т.д. Author: Konstantin Slisenko, JazzTeam, 2011
24. История одного плагина Проект Snipple: Используй готовый код, а не пиши его каждый раз Сохраняй различные фрагменты кода Обменивайся ими с другими разработчиками Фрагменты кода называются сниппетами Рейтинговая система – сниппеты от более авторитетного разработчика будут имеют больший вес Категории, теги, генерация pdfиз подборки сниппетов по определённой технологии И ещё много других весёлых штук Author: Konstantin Slisenko, JazzTeam, 2011
25. История одного плагина Имеется: J2EE web-приложение web-интерфейс для поиска, добавления, удаления сниппетов Приложение использует БД Приложение предоставляет web-сервисы Задача: Разработать плагин для Eclipse для работы с системой прямо из IDE Author: Konstantin Slisenko, JazzTeam, 2011
28. Функционал плагина Два вида (views): Для локальных сниппетов, поддержка категорий Для поиска сниппетов в web-приложении Snipple Страница настроек плагина Перенос сниппетов из видов в редактор перетягиванием Редактирование свойств сниппетов в стандартном Properties view Author: Konstantin Slisenko, JazzTeam, 2011
31. С чего начать изучать разработку плагинов? vogella.de/eclipse.html eclipsepluginsite.com EclipsePlug-ins: Third Edition,Eric Clayberg, Dan Rubel Мастер создания плагинов в самом Eclipse Author: Konstantin Slisenko, JazzTeam, 2011
32. Спасибо за внимание! Презентация будет доступна на сайте oslab.by Author: Konstantin Slisenko, JazzTeam, 2011