stringtranslate.com

ОСГи

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, реализующего 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:

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

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

Организация

Альянс OSGi был основан компаниями Ericsson , IBM , Motorola , Sun Microsystems и другими в марте 1999 года. До регистрации в качестве некоммерческой корпорации он назывался Connected Alliance.

Среди ее членов (по состоянию на февраль 2015 года ) более 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 год ).

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

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

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

Сопутствующие стандарты

Проекты с использованием 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 г. .

Дальнейшее чтение

Внешние ссылки