SlideShare uma empresa Scribd logo
1 de 23
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-файл с метаданными Метаданные описываются в файле манифеста 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 бандлов, если один из них валится, не валится вся система Неработающий бандл можно перезагрузить, работа системы не остановится Экономия ресурсов Дополнительные возможности спецификации 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 Больше, чем 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.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
Создание простого плагина DEMO Author: Konstantin Slisenko, JazzTeam, 2011
Спасибо за внимание! Презентация будет доступна на сайте oslab.by Author: Konstantin Slisenko, JazzTeam, 2011

Mais conteúdo relacionado

Mais procurados

Deep FitNesse
Deep FitNesseDeep FitNesse
Deep FitNesseSQALab
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами7bits
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Dmitry Lobasev
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...MskDotNet Community
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проектаYova Stoika
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"LogeekNightUkraine
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуAndrew Gubskiy
 
Continous Integration
Continous IntegrationContinous Integration
Continous IntegrationGetDev.NET
 
системы контроля версий
системы контроля версийсистемы контроля версий
системы контроля версийNicki Feathers
 
Spring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny BorisovSpring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny BorisovJavaDayUA
 
Murano: каталог приложений для OpenStack
Murano: каталог приложений для OpenStackMurano: каталог приложений для OpenStack
Murano: каталог приложений для OpenStackOpenStackRussia
 
Виртуализация приложений с помощью Microsoft APP-V
Виртуализация приложений с помощью Microsoft APP-VВиртуализация приложений с помощью Microsoft APP-V
Виртуализация приложений с помощью Microsoft APP-VТ.Т.Консалтинг
 
Делаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsДелаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsГлеб Тарасов
 
системы сборок проектов
системы сборок проектовсистемы сборок проектов
системы сборок проектовRomero78
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETAndrew Gubskiy
 
Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Fwdays
 

Mais procurados (20)

Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)Непрерывная интеграция (Марина Пестова)
Непрерывная интеграция (Марина Пестова)
 
Deep FitNesse
Deep FitNesseDeep FitNesse
Deep FitNesse
 
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверамиСтажировка 2015. Разработка. Занятие 7. Работа с серверами
Стажировка 2015. Разработка. Занятие 7. Работа с серверами
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)Виртуальные среды тестирования (ADD2010)
Виртуальные среды тестирования (ADD2010)
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
 
Maven как средство сборки проекта
Maven как средство сборки проектаMaven как средство сборки проекта
Maven как средство сборки проекта
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
системы контроля версий
системы контроля версийсистемы контроля версий
системы контроля версий
 
Spring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny BorisovSpring the Ripper by Evgeny Borisov
Spring the Ripper by Evgeny Borisov
 
Murano: каталог приложений для OpenStack
Murano: каталог приложений для OpenStackMurano: каталог приложений для OpenStack
Murano: каталог приложений для OpenStack
 
Виртуализация приложений с помощью Microsoft APP-V
Виртуализация приложений с помощью Microsoft APP-VВиртуализация приложений с помощью Microsoft APP-V
Виртуализация приложений с помощью Microsoft APP-V
 
Делаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPodsДелаем жизнь лучше с CocoaPods
Делаем жизнь лучше с CocoaPods
 
системы сборок проектов
системы сборок проектовсистемы сборок проектов
системы сборок проектов
 
Самодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NETСамодиагностика сервисов на базе платформы .NET
Самодиагностика сервисов на базе платформы .NET
 
Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"
 

Destaque

Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...
Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...
Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...MicheleSullivan
 
Environment (protection) act, 1986
Environment (protection) act, 1986Environment (protection) act, 1986
Environment (protection) act, 1986Leo Lukose
 
PC: Blue Creek - Hoofdstuk 1.1b
PC: Blue Creek - Hoofdstuk 1.1bPC: Blue Creek - Hoofdstuk 1.1b
PC: Blue Creek - Hoofdstuk 1.1bMarieke -
 
The antiquities and art treasures act
The antiquities and art treasures actThe antiquities and art treasures act
The antiquities and art treasures actLeo Lukose
 
Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo campMr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo campbeloslab
 
Effective Mobile & Social Media Marketing Strategies
Effective Mobile & Social Media Marketing StrategiesEffective Mobile & Social Media Marketing Strategies
Effective Mobile & Social Media Marketing StrategiesMicheleSullivan
 
Copyright crash course revision 2
Copyright crash course revision 2Copyright crash course revision 2
Copyright crash course revision 2pea403colt798
 

Destaque (11)

Social media plan
Social media planSocial media plan
Social media plan
 
Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...
Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...
Effective Mobile & Social Media Marketing Strategies - Handout Reference Mate...
 
Environment (protection) act, 1986
Environment (protection) act, 1986Environment (protection) act, 1986
Environment (protection) act, 1986
 
PC: Blue Creek - Hoofdstuk 1.1b
PC: Blue Creek - Hoofdstuk 1.1bPC: Blue Creek - Hoofdstuk 1.1b
PC: Blue Creek - Hoofdstuk 1.1b
 
The antiquities and art treasures act
The antiquities and art treasures actThe antiquities and art treasures act
The antiquities and art treasures act
 
Jisha joseph
Jisha josephJisha joseph
Jisha joseph
 
Recursos informacionais
Recursos informacionaisRecursos informacionais
Recursos informacionais
 
Mr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo campMr. Keil Werner - Stem demo camp
Mr. Keil Werner - Stem demo camp
 
Effective Mobile & Social Media Marketing Strategies
Effective Mobile & Social Media Marketing StrategiesEffective Mobile & Social Media Marketing Strategies
Effective Mobile & Social Media Marketing Strategies
 
Copyright crash course revision 2
Copyright crash course revision 2Copyright crash course revision 2
Copyright crash course revision 2
 
De 10 geboden van email marketing - WINOB
De 10 geboden van email marketing - WINOBDe 10 geboden van email marketing - WINOB
De 10 geboden van email marketing - WINOB
 

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

Среда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekСреда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekYa_Cheburek
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 
сравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntuсравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntuAnyuta Roschina
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
сравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntuсравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntureeds62
 
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
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»Unguryan Vitaliy
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская qasib
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.Igor Shkulipa
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Frameworkbeloslab
 

Semelhante a Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in developement (20)

Среда разработки Eclipse by Cheburek
Среда разработки Eclipse by CheburekСреда разработки Eclipse by Cheburek
Среда разработки Eclipse by Cheburek
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
сравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntuсравнение Mac-os-x-linux-ubuntu
сравнение Mac-os-x-linux-ubuntu
 
Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
V1
V1V1
V1
 
сравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntuсравнение Mac os x & linux ubuntu
сравнение Mac os x & linux ubuntu
 
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.
 
Java 9 - кратко о новом
Java 9 -  кратко о новомJava 9 -  кратко о новом
Java 9 - кратко о новом
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
TypeScript
TypeScriptTypeScript
TypeScript
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская
 
Java 9 - Back to the Future
Java 9 - Back to the FutureJava 9 - Back to the Future
Java 9 - Back to the Future
 
Lesson 01
Lesson 01Lesson 01
Lesson 01
 
C# Web. Занятие 13.
C# Web. Занятие 13.C# Web. Занятие 13.
C# Web. Занятие 13.
 
openSUSE Build Server от Б до Ю
openSUSE Build Server от Б до ЮopenSUSE Build Server от Б до Ю
openSUSE Build Server от Б до Ю
 
0. hello java world
0. hello java world0. hello java world
0. hello java world
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Framework
 

Mais de beloslab

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

Mais de beloslab (14)

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

  • 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