ОСГи

Организация открытых стандартов
ОСГи
Логотип Альянса OSGi
Год начался1999
Последняя версия8.0
Октябрь 2020 [1] ( 2020-10 )
ОрганизацияАльянс OSGi
ДоменЯва
ЛицензияЛицензия спецификации OSGi, версия 2.0
Веб-сайтwww.osgi.org

OSGi — это проект с открытой спецификацией и открытым исходным кодом под эгидой Eclipse Foundation . [2]

Это продолжение работы, проделанной OSGi Alliance (ранее известной как Open Services Gateway Initiative ), которая была организацией по открытым стандартам для программного обеспечения, основанной в марте 1999 года. Фонд изначально специфицировал и поддерживал стандарт OSGi . Альянс передал свою работу Eclipse Foundation в конце 2020 года. [3]

Спецификация OSGi описывает модульную систему и сервисную платформу для языка программирования Java , которая реализует полную и динамическую компонентную модель , чего нет в автономных средах Java или VM . Она имеет сервисно-ориентированную архитектуру, основанную на микросервисах, каждый из которых реализован как расширенный архив файлов классов Java ( JAR (формат файла) ).

Описание

OSGi построен на основе сервисно-ориентированной архитектуры . Приложения или компоненты поставляются в виде пакетов для развертывания , могут быть удаленно установлены, запущены, остановлены, обновлены и удалены без необходимости перезагрузки . Управление пакетами / классами Java описано очень подробно. Управление жизненным циклом приложений реализовано через API, которые позволяют удаленно загружать политики управления. Реестр служб позволяет пакетам обнаруживать добавление новых служб или удаление служб и соответствующим образом адаптироваться.

Спецификации OSGi вышли за рамки первоначальной направленности сервисных шлюзов и теперь используются в приложениях от мобильных телефонов до среды разработки Eclipse с открытым исходным кодом . Другие области применения включают автомобили , промышленную автоматизацию , автоматизацию зданий , КПК , сетевые вычисления , развлечения , управление автопарком и серверы приложений .

В октябре 2020 года альянс OSGi объявил о передаче работы по стандартизации в Eclipse Foundation, после чего он будет закрыт. [4] Все артефакты были переданы в Eclipse Foundation, где «рабочая группа OSGi» продолжает поддерживать и развивать спецификацию.

Процесс спецификации

Спецификация OSGi разрабатывается участниками в открытом процессе и предоставляется общественности бесплатно в соответствии с лицензией спецификации OSGi. [5] У альянса OSGi есть программа соответствия , открытая только для участников. По состоянию на ноябрь 2010 года существует семь сертифицированных реализаций фреймворка OSGi . [6] На отдельной странице перечислены как сертифицированные, так и несертифицированные реализации спецификации OSGi , которые включают фреймворки OSGi и другие спецификации OSGi.

Архитектура

Архитектура шлюза служб OSGi

OSGi — это Java-фреймворк для разработки и развертывания модульных программ и библиотек. Каждый пакет представляет собой тесно связанную, динамически загружаемую коллекцию классов, jar-файлов и файлов конфигурации, которые явно объявляют свои внешние зависимости (если таковые имеются).

Концептуально структура разделена на следующие области:

Связки
Пакеты — это обычные компоненты JAR с дополнительными заголовками манифеста.
Услуги
Уровень сервисов динамически соединяет пакеты, предлагая модель «публикация-поиск-связывание» для простых старых интерфейсов Java ( POJI ) или простых старых объектов Java (POJO).
Реестр услуг
Интерфейс прикладного программирования для служб управления.
Жизненный цикл
Интерфейс прикладного программирования для управления жизненным циклом (установка, запуск, остановка, обновление и удаление) пакетов.
Модули
Уровень, определяющий инкапсуляцию и объявление зависимостей (как пакет может импортировать и экспортировать код).
Безопасность
Уровень, который обрабатывает аспекты безопасности, ограничивая функциональность пакета предопределенными возможностями.
Среда исполнения
Определяет, какие методы и классы доступны на определенной платформе. Не существует фиксированного списка сред выполнения, поскольку он может меняться по мере создания Java Community Process новых версий и редакций Java. Однако в настоящее время большинство реализаций OSGi поддерживают следующий набор:

Связки

Классификация: OSGi

Пакет — это группа классов Java и дополнительных ресурсов, снабженная подробным MANIFEST.MFфайлом манифеста для всего его содержимого, а также дополнительными службами, необходимыми для придания включенной группе классов Java более сложного поведения, вплоть до того, что вся совокупность может считаться компонентом.

Ниже приведен пример типичного MANIFEST.MFфайла с заголовками OSGi:

 Название пакета : Hello World  Bundle-SymbolicName : org.wikipedia.helloworld  Описание пакета : Пакет Hello World  Bundle-ManifestVersion : 2  Версия пакета : 1.0.0  Bundle-Activator : org.wikipedia.Activator  Экспорт-Пакет : org.wikipedia.helloworld;version="1.0.0"  Импорт-Пакет : org.osgi.framework;version="1.3.0" 

Значение содержания в примере следующее: [7]

  1. Bundle-Name: определяет понятное человеку имя для этого пакета. Просто присваивает пакету короткое имя.
  2. Bundle-SymbolicName: единственный обязательный заголовок, эта запись указывает уникальный идентификатор для пакета, основанный на обратном соглашении об именах доменов (используемом также пакетами Java ).
  3. Bundle-Description: Описание функциональности пакета.
  4. Bundle-ManifestVersion: указывает спецификацию OSGi, используемую для чтения этого пакета.
  5. Bundle-Version: Обозначает номер версии пакета.
  6. Bundle-Activator: указывает имя класса, который будет вызван после активации пакета.
  7. Export-Package: указывает, какие пакеты Java, содержащиеся в комплекте, будут доступны внешнему миру.
  8. Import-Package: указывает, какие пакеты Java потребуются из внешнего мира для удовлетворения зависимостей, необходимых в пакете.

Жизненный цикл

Жизненный цикл пакета OSGi

Уровень жизненного цикла добавляет пакеты, которые можно динамически устанавливать, запускать, останавливать, обновлять и удалять. Пакеты полагаются на уровень модуля для загрузки классов, но добавляют API для управления модулями во время выполнения. Уровень жизненного цикла вводит динамику, которая обычно не является частью приложения. Для обеспечения корректной работы среды используются обширные механизмы зависимости. Операции жизненного цикла полностью защищены архитектурой безопасности.

Состояние пакетаОписание
УСТАНОВЛЕНОПакет успешно установлен.
РЕШЕНОВсе классы Java, необходимые для пакета, доступны. Это состояние указывает на то, что пакет либо готов к запуску, либо остановлен.
НАЧАЛОBundle запускается, BundleActivator.startметод был вызван, но метод start еще не вернулся. Если у bundle есть политика активации, bundle останется в состоянии STARTING, пока bundle не будет активирован в соответствии с его политикой активации.
АКТИВНЫЙПакет успешно активирован и запущен; его метод запуска Bundle Activator был вызван и возвращен.
ОСТАНОВКАПакет останавливается. BundleActivator.stopМетод был вызван, но метод остановки еще не вернулся.
УДАЛЕНПакет был удален. Он не может перейти в другое состояние.

Ниже приведен пример типичного класса Java, реализующего BundleActivatorинтерфейс:

пакет org.wikipedia ; импорт org.osgi.framework.BundleActivator ;  открытый класс Activator реализует BundleActivator { частный контекст BundleContext ;       @Override public void start ( BundleContext context ) throws Exception { System.out.println ( " Запуск : Hello World " ) ; this.context = context ; }        @Override public void stop ( BundleContext context ) throws Exception { System.out.println ( " Остановка : Прощай , жестокий мир" ) ; this.context = null ; } }        

Услуги

Стандартные услуги

OSGi Alliance указал множество служб. Службы определяются интерфейсом Java . Пакеты могут реализовать этот интерфейс и зарегистрировать службу в Реестре служб. Клиенты службы могут найти ее в реестре или отреагировать на нее, когда она появляется или исчезает.

В таблице ниже приведено описание системных служб OSGi:

Системные службыОписание
Ведение журналаРегистрация информации, предупреждений, отладочной информации или ошибок осуществляется через Log Service. Он получает записи журнала, а затем отправляет эти записи другим пакетам, которые подписались на эту информацию .
Конфигурация АдминистратораЭта услуга позволяет оператору устанавливать и получать информацию о конфигурации развернутых пакетов.
Доступ к устройствуОблегчает координацию автоматического обнаружения и присоединения существующих устройств. Используется для сценариев Plug and Play.
Пользователь АдминистраторЭтот сервис использует базу данных с информацией о пользователях (личной и публичной) для аутентификации и авторизации.
Разъем ввода-выводаСлужба IO Connector реализует пакет CDC / CLDC javax.microedition.io как службу. Эта служба позволяет пакетам предоставлять новые и альтернативные схемы протоколов.
ПредпочтенияПредлагает альтернативный, более дружественный к OSGi механизм использования стандартных настроек Java Propertiesдля хранения предпочтений.
Компонент времени выполненияДинамическая природа служб — они могут появляться и исчезать в любое время — усложняет написание программного обеспечения. Спецификация Component Runtime может упростить обработку этих динамических аспектов, предоставляя основанную на 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 выполняют различные роли и обязанности по поддержке альянса. Техническая работа проводится в экспертных группах (EG), учрежденных советом директоров, а нетехническая работа проводится в различных рабочих группах и комитетах. Техническая работа, проводимая в экспертных группах, включает разработку спецификаций, эталонных реализаций и тестов на соответствие. Эти экспертные группы выпустили пять основных выпусков спецификаций OSGi (по состоянию на 2012 год [update]).

Существуют специализированные экспертные группы для корпоративных, мобильных, транспортных областей и основных платформ.

Группа экспертов по корпоративным сетям (EEG) является новейшей группой экспертов и занимается корпоративными/серверными приложениями. В ноябре 2007 года группа экспертов по резидентным сетям (REG) начала работу над спецификациями для удаленного управления домашними/жилыми шлюзами. В октябре 2003 года Nokia , Motorola , IBM , ProSyst и другие члены OSGi сформировали группу экспертов по мобильным сетям (MEG), которая определит сервисную платформу на основе MIDP для следующего поколения смартфонов, удовлетворяя некоторые потребности, с которыми CLDC не может справиться, кроме CDC . MEG стала частью OSGi, как и в R4.

Спецификации версий

  • OSGi Release 1 (R1): май 2000 г.
  • OSGi Release 2 (R2): октябрь 2001 г.
  • OSGi Release 3 (R3): март 2003 г.
  • OSGi, выпуск 4 (R4): октябрь 2005 г. / сентябрь 2006 г.
    • Спецификация ядра (ядро R4): октябрь 2005 г.
    • Спецификация мобильных устройств (R4 Mobile / JSR-232): сентябрь 2006 г.
  • OSGi Release 4.1 (R4.1): май 2007 г. (AKA JSR-291).
  • OSGi Release 4.2 (R4.2): сентябрь 2009 г.
    • Спецификация Enterprise (R4.2): март 2010 г.
  • OSGi Release 4.3 (R4.3): Апрель 2011 г.
    • Ядро: Апрель 2011 г.
    • Компендиум и резиденция: май 2012 г.
  • OSGi Release 5 (R5): июнь 2012 г.
    • Core и Enterprise: июнь 2012 г.
  • OSGi Release 6 (R6): июнь 2015 г.
    • Ядро: июнь 2015 г.
  • OSGi Release 7 (R7): Апрель 2018 г.
    • Ядро и сборник: апрель 2018 г.
  • OSGi Release 8 (R8): декабрь 2020 г. [9]

Проекты с использованием OSGi

  • Adobe Experience Manager – корпоративная система управления контентом [10]
  • Apache Aries – реализации Blueprint Container и расширения спецификаций, ориентированных на приложения, определенные OSGi Enterprise Expert Group
  • Apache Sling – уровень приложений на базе OSGi для репозиториев контента JCR
  • Atlassian Confluence и JIRA — архитектура подключаемого модуля для этой корпоративной вики и системы отслеживания ошибок использует OSGi
  • Проект Business Intelligence and Reporting Tools (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 и многофункциональная клиентская платформа с бесплатной версией Community Edition
  • JOnAS 5 – сервер приложений Java EE 5 с открытым исходным кодом
  • JOSSO 2 – платформа управления идентификацией и доступом с открытым исходным кодом от Atricore, основанная на стандартах
  • Liferay Dxp – корпоративная платформа портала с открытым исходным кодом, коммерческая, использующая OSGi, начиная с версии 7.x
  • Lucee 5 – сервер веб-приложений CFML с открытым исходным кодом
  • NetBeans – IDE с открытым исходным кодом и многофункциональная клиентская платформа
  • Nuxeo – платформа ECM- сервисов с открытым исходным кодом
  • Проект Open Daylight – проект, целью которого является ускорение внедрения программно-определяемых сетей.
  • OpenEJB – контейнер EJB 3.0 с открытым исходным кодом и поддержкой OSGi, который может работать как в автономном, так и во встроенном режиме.
  • openHAB – программное обеспечение для автоматизации дома с открытым исходным кодом
  • OpenWorm – программное обеспечение с открытым исходным кодом для моделирования C. elegans с помощью специализированной модульной платформы Geppetto
  • Akana – API-шлюз, портал и сервер аналитики от Akana (ранее SOA Software)
  • Weblogic – сервер приложений Oracle Weblogic
  • WebSphere – сервер приложений IBM Websphere JEE
  • WebMethods – SoftwareAG WebMethods
  • WildFly – сервер приложений WildFly компании Red Hat, ранее JBoss
  • WSO2 Carbon – Базовая платформа для корпоративного стека промежуточного программного обеспечения с открытым исходным кодом WSO2
  • Pentaho — программное обеспечение для бизнес-аналитики (BI), обеспечивающее интеграцию данных , службы OLAP , создание отчетов , информационные панели , возможности интеллектуального анализа данных , а также извлечения, преобразования и загрузки (ETL).

Текущие реализации фреймворка

ИмяЛицензия
Апач ФеликсС открытым исходным кодом
Апачи КарафС открытым исходным кодом
Консьерж OSGiС открытым исходным кодом
Равноденствие OSGiС открытым исходным кодом
Затмение БлизнецовОткрытый исходный код
Рыба-нопфлерОткрытый исходный код

Ссылки

  1. ^ "OSGi Alliance | Характеристики / Домашняя страница". osgi.org . 2020 . Получено 3 октября 2022 г. .
  2. ^ Группа, OSGi Working. "Что такое OSGi? | The Eclipse Foundation". OSGi Working Group . Получено 2023-11-08 . {{cite web}}: |last=имеет общее название ( помощь )
  3. ^ Тайсон, Мэтью (2020-08-13). «Что такое OSGi? Другой подход к модульности Java». InfoWorld . Получено 2023-11-08 .
  4. ^ Харгрейв, Б. Дж. «Объявление о переходе в Eclipse Foundation».
  5. ^ "OSGi Specification License". Архивировано из оригинала 2015-09-14 . Получено 2012-05-10 .
  6. ^ "OSGi Alliance | Markets / Certified". Архивировано из оригинала 2008-09-25 . Получено 2017-06-23 .
  7. ^ Создание пакетов OSGi Костина Лиу
  8. ^ "Альянс OSGi | О нас / Участники".
  9. ^ Харгрейв, Б. Дж. «OSGi Core Release 8 теперь окончательный и опубликован».
  10. ^ "Forrester называет лидеров в области управления веб-контентом". CMSWire. 2018-11-16 . Получено 5 декабря 2018 г.
  11. ^ "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 г.), Modular Java с OSGi и Spring (1-е изд.), Pragmatic Bookshelf, стр. 250, ISBN 978-1-934356-40-1, архивировано из оригинала 2011-05-30 , извлечено 2009-02-19
  • Холл, Ричард С.; Полс, Карл; Маккалок, Стюарт (сентябрь 2009 г.), OSGi в действии (1-е изд.), Manning Publications , стр. 375, ISBN 978-1-933988-91-7
  • Алвес, Александр де Кастро (март 2009 г.), OSGi Application Frameworks (1-е изд.), Manning Publications , стр. 325, ISBN 978-1-935182-17-7
  • Бартлетт, Нил (10.01.2009), OSGi на практике (PDF) (черновик), стр. 229, архивировано из оригинала (PDF) 16.02.2012 , извлечено 11.06.2009
  • МакАффер, Джефф; Вандерлей, Пол; Арчер, Саймон (7 сентября 2009 г.), Equinox и OSGi: сила, стоящая за 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, архивировано из оригинала 2010-12-05 , извлечено 2008-12-28
  • Рубио, Дэниел (2009-02-12), Pro Spring Dynamic Modules для сервисных платформ OSGi (первое издание), Apress , стр. 392, ISBN 978-1-4302-1612-4
  • Альянс OSGi (2003), Платформа услуг OSGi, Выпуск 3 , IOS Press, стр. 604, ISBN 1-58603-311-5
  • OSGi Service Platform, Основная спецификация, Выпуск 4, Версия 4.1 , OSGi Alliance., 2007, стр. 228, ISBN 978-90-79350-01-8
  • OSGi Service Platform, Основная спецификация, Выпуск 4, Версия 4.2 , OSGi Alliance., 2009, стр. 332, ISBN 978-90-79350-04-9
  • Платформа услуг OSGi, Сборник услуг, Выпуск 4, Версия 4.1 , Альянс OSGi., 2007, стр. 594, ISBN 978-90-79350-02-5
  • OSGi Service Platform, Мобильная спецификация, Выпуск 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
  • BJ Hargrave (IBM) (2011), Техническое обновление OSGi 4.3: Что нового?, The Eclipse Foundation, архивировано из оригинала 21.06.2011 , извлечено 11.06.2011
  • Официальный сайт
  • Oredev 2008 - Архитектура - OSGi сейчас и завтра
  • Индекс статей Eclipse Equinox — статьи о реализации OSGi с открытым исходным кодом
Retrieved from "https://en.wikipedia.org/w/index.php?title=OSGi&oldid=1227015254"