ОСГи
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2023 г. ) |
![]() Логотип Альянса OSGi | |
Год начался | 1999 |
---|---|
Последняя версия | 8.0 октябрь 2020 г. [ 1 ] |
Организация | OSGi Альянс |
Домен | Ява |
Лицензия | Лицензия спецификации OSGi, версия 2.0 |
Веб-сайт | www |
OSGi — это проект с открытой спецификацией и открытым исходным кодом , входящий в состав Eclipse Foundation . [ 2 ]
Это продолжение работы, проделанной OSGi Alliance (ранее известной как инициатива Open Services Gateway ), которая представляла собой организацию по открытым стандартам для программного обеспечения , основанную в марте 1999 года. Фонд изначально определял и поддерживал OSGi стандарт . альянс передал свою работу Eclipse Foundation . В конце 2020 года [ 3 ]
Спецификация OSGi описывает модульную систему и сервисную платформу для языка программирования Java , реализующую полную и динамическую модель компонентов , чего не существует в автономных средах Java или виртуальных машин . Он имеет сервис-ориентированную архитектуру, основанную на микросервисах, каждый из которых реализован как расширенный файловый архив класса Java ( JAR (формат файла) ).
Описание
[ редактировать ]OSGi построен на сервис-ориентированной архитектуре . Приложения или компоненты, поставляемые в виде пакетов для развертывания , можно удаленно устанавливать, запускать, останавливать, обновлять и удалять без необходимости перезагрузки . Управление Java пакетами / классами описано очень подробно. Управление жизненным циклом приложений реализуется через API, которые позволяют удаленно загружать политики управления. Реестр служб позволяет пакетам обнаруживать добавление новых служб или удаление служб и соответствующим образом адаптироваться.
Спецификации OSGi вышли за рамки первоначальной направленности сервисных шлюзов и теперь используются в различных приложениях, от мобильных телефонов с открытым исходным кодом до Eclipse IDE . Другие области применения включают автомобили , промышленную автоматизацию , автоматизацию зданий , КПК , сетевые вычисления , развлечения , управление автопарком и серверы приложений .
В октябре 2020 года OSGi Alliance объявил о передаче усилий по стандартизации Eclipse Foundation, после чего он закрылся. [ 4 ] Все артефакты были переданы в Eclipse Foundation, где «Рабочая группа OSGi» продолжает поддерживать и развивать спецификацию.
Процесс спецификации
[ редактировать ]Спецификация OSGi разрабатывается участниками в открытом процессе и бесплатно предоставляется публике в соответствии с лицензией спецификации OSGi. [ 5 ] OSGi Alliance имеет программу соответствия , открытую только для членов. По состоянию на ноябрь 2010 года существует семь сертифицированных реализаций платформы OSGi . [ 6 ] На отдельной странице перечислены как сертифицированные, так и несертифицированные реализации спецификаций OSGi , которые включают платформы OSGi и другие спецификации OSGi.
Архитектура
[ редактировать ]
OSGi — это платформа Java для разработки и развертывания модульных программ и библиотек. Каждый пакет представляет собой тесно связанную, динамически загружаемую коллекцию классов, jar-файлов и файлов конфигурации, которые явно объявляют свои внешние зависимости (если таковые имеются).
Концептуально система разделена на следующие области:
- Пакеты
- Пакеты — это обычные JAR- компоненты с дополнительными заголовками манифеста.
- Услуги
- Уровень сервисов динамически соединяет пакеты, предлагая модель публикации-поиска-привязки для старых простых интерфейсов Java ( POJI ) или старых простых объектов Java (POJO).
- Реестр услуг
- Интерфейс прикладного программирования для служб управления.
- Жизненный цикл
- Интерфейс прикладного программирования для управления жизненным циклом (установка, запуск, остановка, обновление и удаление) для пакетов.
- Модули
- Уровень, определяющий инкапсуляцию и объявление зависимостей (как пакет может импортировать и экспортировать код).
- Безопасность
- Уровень, который обрабатывает аспекты безопасности, ограничивая функциональность пакета заранее определенными возможностями.
- Среда выполнения
- Определяет, какие методы и классы доступны на конкретной платформе. Не существует фиксированного списка сред выполнения, поскольку он может меняться по мере создания в процессе сообщества Java новых версий и выпусков Java. Однако следующий набор в настоящее время поддерживается большинством реализаций OSGi:
- CDC-1.0/Фонд-1.0
- CDC-1.1/Фонд-1.1
- OSGi/Минимум-1.0
- OSGi/Минимум-1.1
- JRE-1.1
- От J2SE-1.2 до J2SE-1.6
Пакеты
[ редактировать ]
Пакет — это группа Java-классов и дополнительных ресурсов, снабженная подробным манифестом. MANIFEST.MF
файл на все его содержимое, а также дополнительные службы, необходимые для придания включенной группе классов Java более сложного поведения, вплоть до того, что весь агрегат можно считать компонентом.
Ниже приведен пример типичного MANIFEST.MF
файл с заголовками OSGi:
Bundle-Name: Hello World
Bundle-SymbolicName: org.wikipedia.helloworld
Bundle-Description: A Hello World bundle
Bundle-ManifestVersion: 2
Bundle-Version: 1.0.0
Bundle-Activator: org.wikipedia.Activator
Export-Package: org.wikipedia.helloworld;version="1.0.0"
Import-Package: org.osgi.framework;version="1.3.0"
Значение содержимого в примере следующее: [ 7 ]
- Bundle-Name: определяет удобочитаемое имя для этого пакета. Просто присваивает пакету короткое имя.
- Bundle-SymbolicName: единственный обязательный заголовок. Эта запись определяет уникальный идентификатор пакета, основанный на соглашении об обратном доменном имени (также используемом пакетами Java ).
- Bundle-Description: описание функциональности пакета.
- Bundle-ManifestVersion: указывает спецификацию OSGi, которую следует использовать для чтения этого пакета.
- Bundle-Version: Обозначает номер версии пакета.
- Bundle-Activator: указывает имя класса, который будет вызываться после активации пакета.
- Export-Package: указывает, какие пакеты Java, содержащиеся в пакете, будут доступны внешнему миру.
- Import-Package: указывает, какие пакеты Java потребуются из внешнего мира для выполнения зависимостей, необходимых в пакете.
Жизненный цикл
[ редактировать ]
Уровень жизненного цикла добавляет пакеты, которые можно динамически устанавливать, запускать, останавливать, обновлять и удалять. Пакеты полагаются на уровень модуля для загрузки классов, но добавляют API для управления модулями во время выполнения. Уровень жизненного цикла представляет динамику, которая обычно не является частью приложения. Для обеспечения правильной работы среды используются обширные механизмы зависимостей. Операции жизненного цикла полностью защищены архитектурой безопасности.
Состояние пакета | Описание |
---|---|
УСТАНОВЛЕНО | Пакет успешно установлен. |
РЕШЕНО | Доступны все классы Java, необходимые для пакета. Это состояние указывает на то, что пакет либо готов к запуску, либо остановлен. |
НАЧИНАЕМ | Пакет запускается, BundleActivator.start метод был вызван, но метод start еще не вернулся. Если у пакета есть политика активации, он останется в состоянии НАЧАЛО до тех пор, пока пакет не будет активирован в соответствии с его политикой активации.
|
АКТИВНЫЙ | Пакет успешно активирован и запущен; его метод запуска Bundle Activator был вызван и возвращен. |
ОСТАНОВКА | Пакет останавливается. BundleActivator.stop метод был вызван, но метод остановки еще не вернулся.
|
УДАЛЕНО | Пакет удален. Он не может перейти в другое состояние. |
Ниже приведен пример типичного класса Java, реализующего BundleActivator
интерфейс:
package org.wikipedia;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private BundleContext context;
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Starting: Hello World");
this.context = context;
}
@Override
public void stop(BundleContext context) throws Exception {
System.out.println("Stopping: Goodbye Cruel World");
this.context = null;
}
}
Услуги
[ редактировать ]Стандартные услуги
[ редактировать ]Альянс OSGi определил множество услуг. Службы определяются интерфейсом Java . Пакеты могут реализовать этот интерфейс и зарегистрировать службу в реестре служб. Клиенты сервиса могут найти его в реестре или среагировать на него при его появлении или исчезновении.
В таблице ниже показано описание системных служб OSGi:
Системные службы | Описание |
---|---|
Ведение журнала | Регистрация информации, предупреждений, отладочной информации или ошибок осуществляется через службу журнала. Он получает записи журнала, а затем отправляет их другим пакетам, которые подписались на эту информацию. |
Администратор конфигурации | Эта услуга позволяет оператору устанавливать и получать информацию о конфигурации развернутых пакетов. |
Доступ к устройству | Облегчает координацию автоматического обнаружения и подключения существующих устройств. Это используется для сценариев Plug and Play. |
Администратор пользователя | Этот сервис использует базу данных с информацией о пользователях (частной и общедоступной) для целей аутентификации и авторизации. |
Разъем ввода-вывода | Служба соединителя ввода-вывода реализует CDC / CLDC. javax.microedition.io пакет как услуга. Эта услуга позволяет пакетам предоставлять новые и альтернативные схемы протоколов.
|
Предпочтения | Предлагает альтернативный, более дружественный к OSGi механизм использования Java по умолчанию. Properties для хранения предпочтений.
|
Время выполнения компонента | Динамичный характер сервисов (они могут появляться и исчезать в любое время) усложняет написание программного обеспечения. Спецификация среды выполнения компонентов может упростить обработку этих динамических аспектов, предоставляя декларацию зависимостей на основе XML. |
Администратор развертывания | Стандартизирует доступ к некоторым обязанностям агента управления. |
Администратор мероприятия | Предоставляет механизм связи между пакетами, основанный на модели публикации и подписки. |
Администратор приложения | Упрощает управление средой с множеством различных типов приложений, доступных одновременно. |
В таблице ниже показано описание служб протокола OSGi:
Протокольные службы | Описание |
---|---|
HTTP-сервис | Позволяет отправлять и получать информацию от OSGi с использованием HTTP . |
Служба устройств UPnP | Указывает, как можно разрабатывать пакеты OSGi для взаимодействия с устройствами Universal Plug and Play (UPnP). |
Администратор ДМТ | Определяет API для управления устройством с использованием концепций из спецификаций управления устройствами Open Mobile Alliance (OMA). |
В таблице ниже показано описание различных служб OSGi:
Разные услуги | Описание |
---|---|
Проводной администратор | Разрешает соединение между службой производителя и службой потребителя. |
XML-парсер | Служба XML Parser позволяет пакету найти анализатор с нужными свойствами и совместимостью с JAXP . |
Измерение и состояние | Служба «Измерение и состояние» позволяет и упрощает правильную обработку измерений на сервисной платформе OSGi. |
Организация
[ редактировать ]Альянс OSGi был основан Ericsson , IBM , Motorola , Sun Microsystems и другими в марте 1999 года. До регистрации в качестве некоммерческой корпорации он назывался Connected Alliance.
Среди его членов (по состоянию на февраль 2015 г.) [update]) более 35 компаний из совершенно разных сфер бизнеса, например Adobe Systems , Deutsche Telekom , Hitachi , IBM , Liferay , Makewave, NEC , NTT , Oracle , Orange SA , ProSyst , Salesforce , Siemens , Software AG и TIBCO Software . [ 8 ]
У Альянса есть совет директоров, который обеспечивает общее управление организацией. Офицеры OSGi выполняют различные роли и обязанности в поддержке альянса. Техническая работа проводится в рамках экспертных групп (ЭГ), учрежденных советом директоров, а нетехническая работа проводится в различных рабочих группах и комитетах. Техническая работа, проводимая в экспертных группах, включает разработку спецификаций, эталонных реализаций и тесты на соответствие. Эти экспертные группы выпустили пять основных выпусков спецификаций OSGi (по состоянию на 2012 год). [update]).
Существуют специальные экспертные группы для корпоративных, мобильных, транспортных средств и основных платформ.
Enterprise Expert Group (EEG) — это новейшая группа EG, которая занимается корпоративными/серверными приложениями. В ноябре 2007 года Жилая экспертная группа (REG) начала работу над спецификациями для удаленного управления жилыми/домашними шлюзами. В октябре 2003 года Nokia , Motorola , IBM , ProSyst и другие члены OSGi сформировали Mobile Expert Group (MEG), которая определит сервисную платформу на основе MIDP для следующего поколения смартфонов, удовлетворяющую некоторые потребности, с которыми CLDC не может справиться. – кроме CDC . MEG стал частью OSGi, как и R4.
Версии спецификации
[ редактировать ]- OSGi, выпуск 1 (R1): май 2000 г.
- OSGi, выпуск 2 (R2): октябрь 2001 г.
- OSGi, выпуск 3 (R3): март 2003 г.
- OSGi, выпуск 4 (R4): октябрь 2005 г./сентябрь 2006 г.
- Базовая спецификация (ядро R4): октябрь 2005 г.
- Спецификация мобильных устройств (R4 Mobile / JSR-232): сентябрь 2006 г.
- OSGi Release 4.1 (R4.1): май 2007 г. (также известный как JSR-291).
- OSGi, выпуск 4.2 (R4.2): сентябрь 2009 г.
- Спецификация предприятия (R4.2): март 2010 г.
- OSGi, выпуск 4.3 (R4.3): апрель 2011 г.
- Ядро: апрель 2011 г.
- Компендиум и жилой комплекс: май 2012 г.
- OSGi, выпуск 5 (R5): июнь 2012 г.
- Core и Enterprise: июнь 2012 г.
- OSGi, выпуск 6 (R6): июнь 2015 г.
- Ядро: июнь 2015 г.
- OSGi, выпуск 7 (R7): апрель 2018 г.
- Ядро и компендиум: апрель 2018 г.
- OSGi, выпуск 8 (R8): декабрь 2020 г. [ 9 ]
Сопутствующие стандарты
[ редактировать ]- МХП / ОКАП
- Универсальная технология Plug and Play (UPnP)
- ДПВС
- ITU-T G.hn
- ЛонВоркс
- КОРБА
- CEBus
- EHS ( KNX ) / CECED ЦЕПЬ
- Расширения управления Java
Проекты с использованием OSGi
[ редактировать ]- Adobe Experience Manager корпоративным контентом — система управления [ 10 ]
- Apache Aries — реализации контейнера Blueprint и расширения спецификаций, ориентированных на приложения, определенных экспертной группой OSGi Enterprise.
- Apache Sling — уровень приложений на базе OSGi для JCR. репозиториев контента
- Atlassian Confluence и JIRA — архитектура подключаемого модуля для этой корпоративной вики и системы отслеживания проблем использует OSGi.
- Проект инструментов бизнес-аналитики и отчетности (BIRT) — механизм отчетности с открытым исходным кодом.
- Cytoscape - программная платформа биоинформатики с открытым исходным кодом (начиная с версии 3.0).
- DataNucleus - сервисы данных с открытым исходным кодом и платформа персистентности в сервис-ориентированных архитектурах
- DDF – Distributed Data Framework обеспечивает бесплатную интеграцию данных с открытым исходным кодом.
- Dotcms — управление веб-контентом с открытым исходным кодом
- EasyBeans — контейнер EJB 3 с открытым исходным кодом.
- Eclipse — IDE с открытым исходным кодом и богатая клиентская платформа.
- iDempiere - это реализация OSGi ERP Branch GlobalQSS Adempiere 361 с открытым исходным кодом, первоначально созданная Лоу Хенг Сином. [ 11 ]
- Eclipse Virgo - сервер на основе микроядра с открытым исходным кодом, созданный из пакетов OSGi и поддерживающий приложения OSGi.
- GlassFish (v3) – сервер приложений для Java EE
- Fuse ESB — готовый и поддерживаемый выпуск ServiceMix 4.
- Интегрированный браузер генома — настольный графический интерфейс с открытым исходным кодом для визуализации, изучения и анализа данных генома.
- IntelliJ — Java IDE и богатая клиентская платформа с бесплатной версией для сообщества.
- JOnAS 5 – сервер приложений Java EE 5 с открытым исходным кодом
- JOSSO 2 – основанная на стандартах платформа управления идентификацией и доступом Atricore с открытым исходным кодом.
- Liferay Dxp - коммерческая платформа корпоративного портала с открытым исходным кодом, использующая OSGi начиная с версии 7.x.
- Lucee 5 – сервер веб-приложений CFML с открытым исходным кодом
- NetBeans — IDE с открытым исходным кодом и богатая клиентская платформа.
- Nuxeo – ECM с открытым исходным кодом сервисная платформа
- Open Daylight Project – проект, целью которого является ускорение внедрения программно-определяемых сетей.
- OpenEJB — контейнер EJB 3.0 с открытым исходным кодом, поддерживающий OSGi, который можно запускать как в автономном, так и во встроенном режиме.
- openHAB – программное обеспечение для домашней автоматизации с открытым исходным кодом
- OpenWorm — программное обеспечение с открытым исходным кодом для моделирования C. elegans с помощью специальной Geppetto . модульной платформы
- Akana — сервер API-шлюза, портала и аналитики от Akana (ранее SOA Software).
- Weblogic – сервер приложений Oracle Weblogic
- WebSphere – сервер приложений IBM Websphere JEE
- Веб-методы – SoftwareAG WebMethods
- WildFly — сервер приложений Red Hat WildFly, ранее JBoss.
- WSO2 Carbon – базовая платформа для стека промежуточного программного обеспечения с открытым исходным кодом корпоративного уровня WSO2.
- Pentaho — программное обеспечение для бизнес-аналитики (BI), которое обеспечивает интеграцию данных , услуги OLAP , отчетность , информационные панели , интеллектуальный анализ данных и возможности извлечения, преобразования и загрузки (ETL).
Текущие реализации фреймворка
[ редактировать ]Имя | Лицензия |
---|---|
Апач Феликс | Открытый исходный код |
Апач Караф | Открытый исходный код |
Консьерж OSGi | Открытый исходный код |
Равноденствие OSGi | Открытый исходный код |
Затмение Близнецов | Открытый исходный код |
Нопфлерфиш | Открытый исходный код |
Ссылки
[ редактировать ]- ^ «OSGi Alliance | Спецификации / Домашняя страница» . osgi.org . 2020 . Проверено 3 октября 2022 г.
- ^ Группа, OSGi Работает. «Что такое OSGi? | Фонд Eclipse» . Рабочая группа OSGi . Проверено 8 ноября 2023 г.
{{cite web}}
:|last=
имеет общее имя ( справка ) - ^ Тайсон, Мэтью (13 августа 2020 г.). «Что такое OSGi? Другой подход к модульности Java» . Инфомир . Проверено 8 ноября 2023 г.
- ^ Харгрейв, Б.Дж. «Объявление о переходе в Eclipse Foundation» .
- ^ «Лицензия на спецификацию OSGi» . Архивировано из оригинала 14 сентября 2015 г. Проверено 10 мая 2012 г.
- ^ «OSGi Alliance | Рынки / Сертифицировано» . Архивировано из оригинала 25 сентября 2008 г. Проверено 23 июня 2017 г.
- ^ Создание пакетов OSGi Костином Леу.
- ^ «Альянс OSGi | О проекте / Участники» .
- ^ Харгрейв, Б.Дж. «Выпуск OSGi Core 8 стал окончательным и опубликованным» .
- ^ «Forrester называет лидеров в области управления веб-контентом» . CMSWire. 16.11.2018 . Проверено 5 декабря 2018 г.
- ^ "Adempiere Branch_GlobalQSS_361" . adempiere.com/ . Проверено 27 сентября 2014 г.
Дальнейшее чтение
[ редактировать ]- Камминс, Холли; Уорд, Тим (28 марта 2013 г.), Enterprise OSGi в действии (1-е изд.), Manning Publications , стр. 376, ISBN 978-1617290138
- Алвес, Александр де Кастро (28 июля 2011 г.), OSGi in Depth (1-е изд.), Manning Publications , стр. 325, ISBN 978-1-935182-17-7
- МакАффер, Джефф; Вандерлей, Пол; Арчер, Саймон (24 февраля 2010 г.), OSGi и Equinox: Создание высокомодульных Java-систем (1-е изд.), Addison-Wesley Professional , стр. 460, ISBN 978-0-321-58571-4
- Джозеф Гедеон, Валид (5 ноября 2010 г.), Руководство для начинающих по OSGi и Apache Felix 3.0 (1-е изд.), Packt Publishing , стр. 336, ISBN 978-1-84951-138-4
- Уоллс, Крейг (июль 2009 г.), Модульная Java с OSGi и Spring (1-е изд.), Pragmatic Bookshelf, стр. 250, ISBN 978-1-934356-40-1 , заархивировано из оригинала 30 мая 2011 г. , получено 19 февраля 2009 г.
- Холл, Ричард С; Паулс, Карл; Маккаллох, Стюарт (сентябрь 2009 г.), OSGi в действии (1-е изд.), Manning Publications , стр. 375, ISBN 978-1-933988-91-7
- Алвес, Александр де Кастро (март 2009 г.), Платформы приложений OSGi (1-е изд.), Manning Publications , стр. 325, ISBN 978-1-935182-17-7
- Бартлетт, Нил (10 января 2009 г.), OSGi на практике (PDF) (ПРОЕКТ), стр. 229, заархивировано из оригинала (PDF) 16 февраля 2012 г. , получено 11 июня 2009 г.
- МакАффер, Джефф; Вандерлей, Пол; Арчер, Саймон (7 сентября 2009 г.), Equinox и OSGi: The Power Behind Eclipse (1-е изд.), Addison-Wesley Professional , стр. 480, ISBN 978-0-321-58571-4
- Мак, Гэри (2009), Pro SpringSource dm Server , Apress , стр. 250, ISBN 978-1-4302-1640-7 , заархивировано из оригинала 5 декабря 2010 г. , получено 28 декабря 2008 г.
- Рубио, Дэниел (12 февраля 2009 г.), Динамические модули Pro Spring для сервисных платформ OSGi (первое издание), Apress , стр. 392 , ISBN 978-1-4302-1612-4
- Альянс OSGi (2003), Сервисная платформа OSGi, выпуск 3 , IOS Press, стр. 604, ISBN 1-58603-311-5
- Сервисная платформа OSGi, базовая спецификация, выпуск 4, версия 4.1 , OSGi Alliance., 2007, стр. 228, ISBN 978-90-79350-01-8
- Сервисная платформа OSGi, базовая спецификация, выпуск 4, версия 4.2 , OSGi Alliance., 2009, стр. 332, ISBN 978-90-79350-04-9
- Сервисная платформа OSGi, Справочник сервисов, выпуск 4, версия 4.1 , OSGi Alliance., 2007, стр. 594, ISBN 978-90-79350-02-5
- Сервисная платформа OSGi, Спецификация для мобильных устройств, выпуск 4, версия 4 , OSGi Alliance., 2007, стр. 426, ISBN 978-90-79350-03-2
- Кирк Чен, Ли Гонг. (2001), Программирование шлюзов открытых служб с использованием технологии Java Embedded Server(TM) , Prentice Hall PTR , стр. 480, ISBN 0-201-71102-8
- Кайоде Одейеми (2010), Создание декларативной службы OSGI с помощью Maven с использованием Netbeans
- Би Джей Харгрейв (IBM) (2011 г.), Техническое обновление OSGi 4.3: что нового? , The Eclipse Foundation, заархивировано из оригинала 21 июня 2011 г. , получено 11 июня 2011 г.
Внешние ссылки
[ редактировать ]
- Официальный сайт
- Оредев 2008 - Архитектура - OSGi Сейчас и Завтра
- Указатель статей Eclipse Equinox — статьи о реализации OSGi с открытым исходным кодом.