SlideShare une entreprise Scribd logo
1  sur  32
OSGI, Equinox, Eclipse plug-in development Author: Konstantin Slisenko, JazzTeam, 2011
План Спецификация OSGi Реализация OSGi – Equinox, Eclipse plug-in development История одного плагина + demo Author: Konstantin Slisenko, JazzTeam, 2011
OSGi Open Services Gateway Initiative Спецификация архитектуры для создания модульных java-приложений Разрабатываетсянекоммерческой организацией OSGI Alliance (osgi.org) Применение Сначала: автомобильная и промышленная электроника Сейчас: многофункциональные desktop-приложения и enterprise системы Author: Konstantin Slisenko, JazzTeam, 2011
Основная идея OSGI Вся система состоит из плагинов (бандлов) Бандлы Содержат java классы и другие ресурсы Могут взаимодействовать друг с другом Могут добавляться, удаляться, запускаться, останавливаться, обновляться в runtime Работают в рамках одной JVM, но могут быть distributed Имеют версию Бандлом может быть, например, web-сервер, или любое другое приложение Author: Konstantin Slisenko, JazzTeam, 2011
Жизненный цикл бандла Экономия ресурсов Нет необходимости держать в памяти неиспользуемые в данный момент бандлы Не нужно при старте приложения загружать все бандлы– они подгрузятся по мере необходимости Author: Konstantin Slisenko, JazzTeam, 2011
Взаимодействие между бандлами Бандлы создают сервисы используют сервисы других Взаимодействуют через Service Registry API Ничего не знают друг о друге, просто ищут нужные им сервисы Взаимодействие похоже на SOA-приложениев одной JVM Author: Konstantin Slisenko, JazzTeam, 2011
Бандл = 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
Архитектура OSGi Author: Konstantin Slisenko, JazzTeam, 2011
Плюсы Модульность приложения Возможность сбора приложения на лету Позднее и слабое связывание  Все бандлы взаимодействуют через Service Registry API Не знают друг о друге В системе могут одновременно быть множество различных версий одного бандла Возрастает надёжность системы Пример: в системе 700 бандлов, если один из них валится, не валится вся система Неработающий бандл можно перезагрузить, работа системы не остановится Экономия ресурсов Возможность поддержки системы 24 часа в сутки, 365 дней в году Система не отключается даже при замене оборудования Дополнительные возможности спецификации 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) ConsiergeOSGi Множество коммерческих Samsung Service Provider 3.1 RIO framework (Siemens) … Теоретически одни и те же бандлы можно устанавливать в различные реализации контейнеров Author: Konstantin Slisenko, JazzTeam, 2011
Eclipse 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 и т.д. 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 development Проект Eclipse PDE  http://www.eclipse.org/pde/ 4июнявебинар для Belarus Open Source Lab, докладчик Eclipse PDE Team Lead (Индия, Бангалор) Инструментарий для разработки плагинов Author: Konstantin Slisenko, JazzTeam, 2011
Принципы плагиннойсистемы Eclipse Плагины предоставляютточки расширения (Extension Points) Плагины создают расширения (Extensions) Используют точки расширения других плагинов Пример – расширяем обычный текстовый редактор в редактор для работы с XML Точки расширения описываются в plugin.xml Author: 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
История одного плагина Проект Snipple: Используй готовый код, а не пиши его каждый раз Сохраняй различные фрагменты кода Обменивайся ими с другими разработчиками Фрагменты кода называются сниппетами Рейтинговая система – сниппеты от более авторитетного разработчика будут имеют больший вес Категории, теги, генерация pdfиз подборки сниппетов по определённой технологии И ещё много других весёлых штук Author: Konstantin Slisenko, JazzTeam, 2011
История одного плагина Имеется: J2EE web-приложение web-интерфейс для поиска, добавления, удаления сниппетов Приложение использует БД Приложение предоставляет web-сервисы Задача:  Разработать плагин для Eclipse для работы с системой прямо из IDE Author: Konstantin Slisenko, JazzTeam, 2011
Use Case Author: Konstantin Slisenko, JazzTeam, 2011
Внешний вид Author: Konstantin Slisenko, JazzTeam, 2011
Функционал плагина Два вида (views): Для локальных сниппетов, поддержка категорий Для поиска сниппетов в web-приложении Snipple Страница настроек плагина Перенос сниппетов из видов в редактор перетягиванием Редактирование свойств сниппетов в стандартном Properties view Author: Konstantin Slisenko, JazzTeam, 2011
Часть архитектуры плагина Author: Konstantin Slisenko, JazzTeam, 2011
DEMO Author: Konstantin Slisenko, JazzTeam, 2011
С чего начать изучать разработку плагинов? vogella.de/eclipse.html eclipsepluginsite.com EclipsePlug-ins: Third Edition,Eric Clayberg, Dan Rubel Мастер создания плагинов в самом Eclipse Author: Konstantin Slisenko, JazzTeam, 2011
Спасибо за внимание! Презентация будет доступна на сайте oslab.by Author: Konstantin Slisenko, JazzTeam, 2011

Contenu connexe

Tendances

Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшнеEugeni Feudorov
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETAndrew Gubskiy
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаSQALab
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidSQALab
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)Ontico
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Fwdays
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Dmitry Lobasev
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проектаYova Stoika
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
Heroku for Java developer
Heroku for Java developerHeroku for Java developer
Heroku for Java developerVRPInc
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеKirill Vechera
 
Spring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny BorisovSpring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny BorisovJavaDayUA
 
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникSQALab
 

Tendances (20)

Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
React Native в продакшне
React Native в продакшнеReact Native в продакшне
React Native в продакшне
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NET
 
Тестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях ИнтернетаТестируем мобильное приложение в суровых реалиях Интернета
Тестируем мобильное приложение в суровых реалиях Интернета
 
Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проекта
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Heroku for Java developer
Heroku for Java developerHeroku for Java developer
Heroku for Java developer
 
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальшеКак devops исчерпывает себя и что будет дальше
Как devops исчерпывает себя и что будет дальше
 
Spring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny BorisovSpring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny Borisov
 
C#5 What's new?
C#5 What's new?C#5 What's new?
C#5 What's new?
 
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
 

Similaire à Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0

Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.UNETA
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
сравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntuсравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntuAnyuta Roschina
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»Unguryan Vitaliy
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Pavel Chertorogov
 
Среда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekСреда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekYa_Cheburek
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesWhite Nights Conference
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская qasib
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 

Similaire à Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0 (20)

Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
 
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
Uneta 17.04.15 Dekhtiar - Entity framework 7 and co.
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
0. hello java world
0. hello java world0. hello java world
0. hello java world
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
сравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntuсравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntu
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Среда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekСреда разработки Eclipse by Cheburek
Среда разработки Eclipse by Cheburek
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Appery.io Ukraine_2016
Appery.io Ukraine_2016Appery.io Ukraine_2016
Appery.io Ukraine_2016
 
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
 
TypeScript
TypeScriptTypeScript
TypeScript
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская
 
Deep storm presentation
Deep storm presentationDeep storm presentation
Deep storm presentation
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 

Plus de beloslab

Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo campMr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo campbeloslab
 
Mr. Keil Werner - UOMO 2011
Mr. Keil Werner - UOMO 2011Mr. Keil Werner - UOMO 2011
Mr. Keil Werner - UOMO 2011beloslab
 
Mr. Ankur Sharma - PDE good practices
Mr. Ankur Sharma - PDE good practicesMr. Ankur Sharma - PDE good practices
Mr. Ankur Sharma - PDE good practicesbeloslab
 
Konstantin Slisenko - Belarus Open Source Lab
Konstantin Slisenko - Belarus Open Source LabKonstantin Slisenko - Belarus Open Source Lab
Konstantin Slisenko - Belarus Open Source Labbeloslab
 
Yuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 LaunchYuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 Launchbeloslab
 
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practicesYuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practicesbeloslab
 
Yuri Trukhin - Microsoft4students
Yuri Trukhin - Microsoft4studentsYuri Trukhin - Microsoft4students
Yuri Trukhin - Microsoft4studentsbeloslab
 
Yuri Trukhin - Windows Phone 7
Yuri Trukhin - Windows Phone 7Yuri Trukhin - Windows Phone 7
Yuri Trukhin - Windows Phone 7beloslab
 
Pavel Rumantsev - Java Script
Pavel Rumantsev - Java ScriptPavel Rumantsev - Java Script
Pavel Rumantsev - Java Scriptbeloslab
 
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11Sergey Gavruk - Mix11
Sergey Gavruk - Mix11beloslab
 
Pavel Rumantsev - Html5
Pavel Rumantsev - Html5Pavel Rumantsev - Html5
Pavel Rumantsev - Html5beloslab
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Frameworkbeloslab
 
Aleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - ASP.NET MVC3 data processingAleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - ASP.NET MVC3 data processingbeloslab
 
Aleksei Gomza - Web-applications and ASP
Aleksei Gomza - Web-applications and ASPAleksei Gomza - Web-applications and ASP
Aleksei Gomza - Web-applications and ASPbeloslab
 
Sergey Gavruk - WebMatrix
Sergey Gavruk - WebMatrixSergey Gavruk - WebMatrix
Sergey Gavruk - WebMatrixbeloslab
 
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patternsKonstantin slisenko - Design patterns
Konstantin slisenko - Design patternsbeloslab
 

Plus de beloslab (16)

Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo campMr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo camp
 
Mr. Keil Werner - UOMO 2011
Mr. Keil Werner - UOMO 2011Mr. Keil Werner - UOMO 2011
Mr. Keil Werner - UOMO 2011
 
Mr. Ankur Sharma - PDE good practices
Mr. Ankur Sharma - PDE good practicesMr. Ankur Sharma - PDE good practices
Mr. Ankur Sharma - PDE good practices
 
Konstantin Slisenko - Belarus Open Source Lab
Konstantin Slisenko - Belarus Open Source LabKonstantin Slisenko - Belarus Open Source Lab
Konstantin Slisenko - Belarus Open Source Lab
 
Yuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 LaunchYuri Trukhin - IE9 Launch
Yuri Trukhin - IE9 Launch
 
Yuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practicesYuri Trukhin - Software developement best practices
Yuri Trukhin - Software developement best practices
 
Yuri Trukhin - Microsoft4students
Yuri Trukhin - Microsoft4studentsYuri Trukhin - Microsoft4students
Yuri Trukhin - Microsoft4students
 
Yuri Trukhin - Windows Phone 7
Yuri Trukhin - Windows Phone 7Yuri Trukhin - Windows Phone 7
Yuri Trukhin - Windows Phone 7
 
Pavel Rumantsev - Java Script
Pavel Rumantsev - Java ScriptPavel Rumantsev - Java Script
Pavel Rumantsev - Java Script
 
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11Sergey Gavruk - Mix11
Sergey Gavruk - Mix11
 
Pavel Rumantsev - Html5
Pavel Rumantsev - Html5Pavel Rumantsev - Html5
Pavel Rumantsev - Html5
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Framework
 
Aleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - ASP.NET MVC3 data processingAleksei Gomza - ASP.NET MVC3 data processing
Aleksei Gomza - ASP.NET MVC3 data processing
 
Aleksei Gomza - Web-applications and ASP
Aleksei Gomza - Web-applications and ASPAleksei Gomza - Web-applications and ASP
Aleksei Gomza - Web-applications and ASP
 
Sergey Gavruk - WebMatrix
Sergey Gavruk - WebMatrixSergey Gavruk - WebMatrix
Sergey Gavruk - WebMatrix
 
Konstantin slisenko - Design patterns
Konstantin slisenko - Design patternsKonstantin slisenko - Design patterns
Konstantin slisenko - Design patterns
 

Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0

  • 1. OSGI, Equinox, Eclipse plug-in development Author: Konstantin Slisenko, JazzTeam, 2011
  • 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
  • 8. Архитектура OSGi 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
  • 12. Eclipse 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
  • 23. Пример 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
  • 24. История одного плагина Проект Snipple: Используй готовый код, а не пиши его каждый раз Сохраняй различные фрагменты кода Обменивайся ими с другими разработчиками Фрагменты кода называются сниппетами Рейтинговая система – сниппеты от более авторитетного разработчика будут имеют больший вес Категории, теги, генерация pdfиз подборки сниппетов по определённой технологии И ещё много других весёлых штук Author: Konstantin Slisenko, JazzTeam, 2011
  • 25. История одного плагина Имеется: J2EE web-приложение web-интерфейс для поиска, добавления, удаления сниппетов Приложение использует БД Приложение предоставляет web-сервисы Задача: Разработать плагин для Eclipse для работы с системой прямо из IDE Author: Konstantin Slisenko, JazzTeam, 2011
  • 26. Use Case Author: Konstantin Slisenko, JazzTeam, 2011
  • 27. Внешний вид Author: Konstantin Slisenko, JazzTeam, 2011
  • 28. Функционал плагина Два вида (views): Для локальных сниппетов, поддержка категорий Для поиска сниппетов в web-приложении Snipple Страница настроек плагина Перенос сниппетов из видов в редактор перетягиванием Редактирование свойств сниппетов в стандартном Properties view Author: Konstantin Slisenko, JazzTeam, 2011
  • 29. Часть архитектуры плагина Author: Konstantin Slisenko, JazzTeam, 2011
  • 30. DEMO 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