Это продолжение работы, проделанной OSGi Alliance (ранее известной как Open Services Gateway Initiative ), которая была организацией по открытым стандартам для программного обеспечения, основанной в марте 1999 года. Фонд изначально специфицировал и поддерживал стандарт OSGi . Альянс передал свою работу Eclipse Foundation в конце 2020 года. [3]
Спецификация OSGi описывает модульную систему и сервисную платформу для языка программирования Java , которая реализует полную и динамическую компонентную модель , чего нет в автономных средах Java или VM . Она имеет сервисно-ориентированную архитектуру, основанную на микросервисах, каждый из которых реализован как расширенный архив файлов классов Java ( JAR (формат файла) ).
Описание
OSGi построен на основе сервисно-ориентированной архитектуры . Приложения или компоненты поставляются в виде пакетов для развертывания , могут быть удаленно установлены, запущены, остановлены, обновлены и удалены без необходимости перезагрузки . Управление пакетами / классами Java описано очень подробно. Управление жизненным циклом приложений реализовано через API, которые позволяют удаленно загружать политики управления. Реестр служб позволяет пакетам обнаруживать добавление новых служб или удаление служб и соответствующим образом адаптироваться.
В октябре 2020 года альянс OSGi объявил о передаче работы по стандартизации в Eclipse Foundation, после чего он будет закрыт. [4] Все артефакты были переданы в Eclipse Foundation, где «рабочая группа OSGi» продолжает поддерживать и развивать спецификацию.
Процесс спецификации
Спецификация OSGi разрабатывается участниками в открытом процессе и предоставляется общественности бесплатно в соответствии с лицензией спецификации OSGi. [5] У альянса OSGi есть программа соответствия , открытая только для участников. По состоянию на ноябрь 2010 года существует семь сертифицированных реализаций фреймворка OSGi . [6] На отдельной странице перечислены как сертифицированные, так и несертифицированные реализации спецификации OSGi , которые включают фреймворки OSGi и другие спецификации OSGi.
Архитектура
OSGi — это Java-фреймворк для разработки и развертывания модульных программ и библиотек. Каждый пакет представляет собой тесно связанную, динамически загружаемую коллекцию классов, jar-файлов и файлов конфигурации, которые явно объявляют свои внешние зависимости (если таковые имеются).
Концептуально структура разделена на следующие области:
Связки
Пакеты — это обычные компоненты JAR с дополнительными заголовками манифеста.
Услуги
Уровень сервисов динамически соединяет пакеты, предлагая модель «публикация-поиск-связывание» для простых старых интерфейсов Java ( POJI ) или простых старых объектов Java (POJO).
Интерфейс прикладного программирования для управления жизненным циклом (установка, запуск, остановка, обновление и удаление) пакетов.
Модули
Уровень, определяющий инкапсуляцию и объявление зависимостей (как пакет может импортировать и экспортировать код).
Безопасность
Уровень, который обрабатывает аспекты безопасности, ограничивая функциональность пакета предопределенными возможностями.
Среда исполнения
Определяет, какие методы и классы доступны на определенной платформе. Не существует фиксированного списка сред выполнения, поскольку он может меняться по мере создания Java Community Process новых версий и редакций Java. Однако в настоящее время большинство реализаций OSGi поддерживают следующий набор:
Пакет — это группа классов Java и дополнительных ресурсов, снабженная подробным MANIFEST.MFфайлом манифеста для всего его содержимого, а также дополнительными службами, необходимыми для придания включенной группе классов Java более сложного поведения, вплоть до того, что вся совокупность может считаться компонентом.
Ниже приведен пример типичного MANIFEST.MFфайла с заголовками OSGi:
Bundle-Name: определяет понятное человеку имя для этого пакета. Просто присваивает пакету короткое имя.
Bundle-SymbolicName: единственный обязательный заголовок, эта запись указывает уникальный идентификатор для пакета, основанный на обратном соглашении об именах доменов (используемом также пакетами Java ).
Bundle-Description: Описание функциональности пакета.
Bundle-ManifestVersion: указывает спецификацию OSGi, используемую для чтения этого пакета.
Bundle-Version: Обозначает номер версии пакета.
Bundle-Activator: указывает имя класса, который будет вызван после активации пакета.
Export-Package: указывает, какие пакеты Java, содержащиеся в комплекте, будут доступны внешнему миру.
Import-Package: указывает, какие пакеты Java потребуются из внешнего мира для удовлетворения зависимостей, необходимых в пакете.
Жизненный цикл
Уровень жизненного цикла добавляет пакеты, которые можно динамически устанавливать, запускать, останавливать, обновлять и удалять. Пакеты полагаются на уровень модуля для загрузки классов, но добавляют API для управления модулями во время выполнения. Уровень жизненного цикла вводит динамику, которая обычно не является частью приложения. Для обеспечения корректной работы среды используются обширные механизмы зависимости. Операции жизненного цикла полностью защищены архитектурой безопасности.
Ниже приведен пример типичного класса Java, реализующего BundleActivatorинтерфейс:
OSGi Alliance указал множество служб. Службы определяются интерфейсом Java . Пакеты могут реализовать этот интерфейс и зарегистрировать службу в Реестре служб. Клиенты службы могут найти ее в реестре или отреагировать на нее, когда она появляется или исчезает.
В таблице ниже приведено описание системных служб OSGi:
В таблице ниже приведено описание служб протокола OSGi:
В таблице ниже приведено описание различных служб OSGi:
Организация
Альянс OSGi был основан компаниями Ericsson , IBM , Motorola , Sun Microsystems и другими в марте 1999 года. До регистрации в качестве некоммерческой корпорации он назывался Connected Alliance.
Альянс имеет совет директоров, который обеспечивает общее управление организацией. Сотрудники 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).
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 с открытым исходным кодом и многофункциональная клиентская платформа
^ "OSGi Alliance | Характеристики / Домашняя страница". osgi.org . 2020 . Получено 3 октября 2022 г. .
^ Группа, OSGi Working. "Что такое OSGi? | The Eclipse Foundation". OSGi Working Group . Получено 2023-11-08 .{{cite web}}: |last=имеет общее название ( помощь )
^ Тайсон, Мэтью (2020-08-13). «Что такое OSGi? Другой подход к модульности Java». InfoWorld . Получено 2023-11-08 .
^ Харгрейв, Б. Дж. «Объявление о переходе в Eclipse Foundation».
МакАффер, Джефф; Вандерлей, Пол; Арчер, Саймон (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
Бартлетт, Нил (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
Внешние ссылки
На Викискладе есть медиафайлы по теме OSGi .
Официальный сайт
Oredev 2008 - Архитектура - OSGi сейчас и завтра
Индекс статей Eclipse Equinox — статьи о реализации OSGi с открытым исходным кодом