OSGi - OSGi

OSGi
OSGi Logo.png
Логотип OSGi Alliance
Год начался1999
Последняя версия7.0
Апрель 2018 г. (2018-04)[1]
ОрганизацияOSGi Alliance
ДоменЯва
ЛицензияЛицензия на спецификацию OSGi, версия 2.0
Интернет сайтwww.osgi.org

В OSGi Alliance, ранее известный как Инициатива Open Services Gateway, является открытые стандарты организация, основанная в марте 1999 г., которая первоначально указала и продолжает поддерживать Стандарт OSGi.

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

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

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

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

Архитектура

Архитектура сервисного шлюза OSGi

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

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

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

Связки

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

Пакет - это группа классов Java и дополнительных ресурсов, снабженная подробным манифестом. МАНИФЕСТ.MF file на все его содержимое, а также дополнительные службы, необходимые для придания включенной группе классов Java более сложного поведения, вплоть до того, что весь агрегат может считаться компонентом.

Ниже приведен пример типичного МАНИФЕСТ.MF файл с заголовками OSGi:

1  Bundle-Name: Привет, мир2  Bundle-SymbolicName: org.wikipedia.helloworld3  Комплект-Описание: Комплект Hello World4  Bundle-ManifestVersion: 25  Пакет-версия: 1.0.06  Связка-Активатор: org.wikipedia.Activator7  Экспортный пакет: org.wikipedia.helloworld; version = "1.0.0"8  Импорт-Пакет: org.osgi.framework; version = "1.3.0"

Смысл содержания в примере следующий:[4]

  1. Название пакета: Определяет удобочитаемое имя для этого пакета. Просто присваивает пакету короткое имя.
  2. Bundle-SymbolicName: Единственный обязательный заголовок, эта запись определяет уникальный идентификатор для пакета на основе обратное соглашение о доменном имени (используется также пакеты Java ).
  3. Комплект-Описание: Описание функциональности пакета.
  4. Пакет-манифест Версия: Указывает спецификацию OSGi для использования при чтении этого пакета.
  5. Пакет-версия: Обозначает номер версии для пакета.
  6. Связка-Активатор: Указывает имя класса, который будет вызываться после активации пакета.
  7. Экспортный пакет: Указывает, какие пакеты Java, содержащиеся в комплекте, будут доступны для внешнего мира.
  8. Импорт-пакет: Указывает, какие пакеты Java потребуются от внешнего мира для выполнения зависимостей, необходимых в пакете.

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

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

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

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

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

упаковка org.wikipedia;импорт org.osgi.framework.BundleActivator;импорт org.osgi.framework.BundleContext;общественный учебный класс Активатор орудия ПакетАктиватор {	частный BundleContext контекст;	@Override	общественный пустота Начните(BundleContext контекст) бросает Исключение {		Система.из.println("Запуск: Hello World");		это.контекст = контекст;	}	@Override	общественный пустота остановка(BundleContext контекст) бросает Исключение {		Система.из.println(«Остановка: прощай, жестокий мир»);		это.контекст = ноль;	}}

Услуги

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

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

В таблице ниже показано описание системных служб OSGi:

Системные услугиОписание
логированиеВ протоколирование информации, предупреждений, отладочной информации или ошибок обрабатывается через Службу журналов. Он получает записи журнала и затем отправляет эти записи другим пакетам, которые подписались на эту информацию.
Администратор конфигурацииЭта услуга позволяет оператору устанавливать и получать информацию о конфигурации развернутых пакетов.
Доступ к устройствуОблегчает координацию автоматического обнаружения и подключения существующих устройств. Это используется для сценариев Plug and Play.
Администратор пользователяЭта служба использует базу данных с информацией о пользователях (частной и общедоступной) для аутентификации и авторизации.
Разъем ввода-выводаСлужба соединителя ввода-вывода реализует CDC /CLDC javax.microedition.io пакет как услуга. Эта услуга позволяет пакетам предоставлять новые и альтернативные схемы протоколов.
ПредпочтенияПредлагает альтернативный, более удобный для OSGi механизм для использования по умолчанию Java Характеристики для хранения предпочтений.
Компонент RuntimeДинамический характер сервисов - они могут появляться и исчезать в любое время - затрудняет написание программного обеспечения. Спецификация Component Runtime может упростить обработку этих динамических аспектов, предоставляя декларацию зависимостей на основе XML.
Администратор развертыванияСтандартизирует доступ к некоторым обязанностям агента управления.
Администратор мероприятияПредоставляет механизм обмена данными между пакетами на основе модели публикации и подписки.
Администратор приложенияУпрощает управление средой с множеством различных типов приложений, которые доступны одновременно.

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

Услуги протоколаОписание
HTTP-сервисПозволяет отправлять и получать информацию из OSGi с помощью HTTP.
Служба устройства UPnPОпределяет, как пакеты OSGi могут быть разработаны для взаимодействия с Универсальный Plug and Play (UPnP) устройства.
DMT AdminОпределяет API для управления устройством с использованием концепций из Открытый мобильный альянс (OMA) спецификации управления устройством.

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

Разные услугиОписание
Администратор проводовРазрешает соединение между сервисом-производителем и сервисом-потребителем.
XML-парсерСлужба XML Parser позволяет пакету найти синтаксический анализатор с желаемыми свойствами и совместимостью с JAXP.
Измерение и состояниеСервис «Измерение и состояние» позволяет и упрощает правильную обработку измерений в сервисной платформе OSGi.

Организация

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

Среди его членов (по состоянию на февраль 2015 г.) более 35 компаний из самых разных сфер бизнеса, например Adobe Systems, Deutsche Telekom, Hitachi, IBM, Liferay, Макевэйв, NEC, NTT, Oracle, Orange S.A., ProSyst, Salesforce.com, Сименс, Software AG и Программное обеспечение TIBCO.[5]

В Альянсе есть совет директоров, который обеспечивает общее управление организацией. Офицеры OSGi выполняют различные функции и обязанности по поддержке альянса. Техническая работа ведется в экспертных группах (ЭГ), учрежденных советом директоров, а нетехническая работа ведется в различных рабочих группах и комитетах. Техническая работа, проводимая в рамках экспертных групп, включает разработку спецификаций, эталонные реализации и тесты на соответствие. Эти экспертные группы выпустили пять основных выпусков спецификаций OSGi (по состоянию на 2012 г.).

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

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

Версии спецификации

  • OSGi Release 1 (R1): май 2000 г.
  • OSGi Release 2 (R2): октябрь 2001 г.
  • OSGi Release 3 (R3): март 2003 г.
  • OSGi Release 4 (R4): октябрь 2005 г. / сентябрь 2006 г.
    • Базовая спецификация (R4 Core): октябрь 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 г.
    • Core: апрель 2011 г.
    • Компендиум и жилая: май 2012 г.
  • OSGi Release 5 (R5): июнь 2012 г.
    • Core и Enterprise: июнь 2012 г.
  • OSGi Release 6 (R6): июнь 2015 г.
    • Core: июнь 2015 г.
  • OSGi Release 7 (R7): апрель 2018 г.
    • Ядро и компендиум: апрель 2018 г.
  • OSGi выпуска 8 (R8): Предлагаемый окончательный проект Август 2020 г.[6]

Связанные стандарты

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

  • Adobe Experience Manager - предприятие Система управления контентом[7]
  • Апач-Овен - Реализации Blueprint Container и расширения ориентированных на приложения спецификаций, определенных OSGi Enterprise Expert Group
  • Слинг Apache - Уровень приложений на основе OSGi для JCR репозитории контента
  • Атласское слияние и JIRA - архитектура подключаемых модулей для корпоративной вики и системы отслеживания проблем использует OSGi
  • Проект "Инструменты бизнес-аналитики и отчетности" (BIRT) - Механизм отчетности с открытым исходным кодом
  • Cytoscape - программная платформа для биоинформатики с открытым исходным кодом (начиная с версии 3.0)
  • DataNucleus - сервисы данных с открытым исходным кодом и постоянная платформа в сервис-ориентированных архитектурах
  • DDF - Distributed Data Framework обеспечивает бесплатную интеграцию данных с открытым исходным кодом.
  • Dotcms - Управление веб-контентом с открытым исходным кодом
  • EasyBeans - контейнер EJB 3 с открытым исходным кодом
  • Затмение - IDE с открытым исходным кодом и многофункциональная клиентская платформа
  • Умный дом Eclipse - фреймворк с открытым исходным кодом для автоматизации зданий
  • iDempiere - это реализация OSGi с открытым исходным кодом ERP Филиал GlobalQSS Адемпьер 361, первоначально начатый Лоу Хенг Сином[8]
  • Затмение Девы - сервер на базе микроядра с открытым исходным кодом, созданный из пакетов OSGi и поддерживающий приложения OSGi
  • Стеклянная рыба (v3) - сервер приложений для Java EE
  • Предохранитель ESB - производимая и поддерживаемая версия ServiceMix 4.
  • GX WebManager Community Edition - Система управления корпоративным веб-контентом на основе OSGi, spring и JCR
  • Встроенный браузер генома - графический интерфейс с открытым исходным кодом для настольных ПК для визуализации, изучения и анализа данных генома
  • IntelliJ - Java IDE и многофункциональная клиентская платформа с бесплатной версией сообщества
  • JBoss - Сервер приложений Red Hat JBoss
  • ЙОНАС 5 - сервер приложений Java EE 5 с открытым исходным кодом
  • Иорам - сервер обмена сообщениями с открытым исходным кодом (JMS, MQTT, AMQP и т. д.)
  • JOSSO 2 - Платформа управления идентификацией и доступом Atricore на основе стандартов с открытым исходным кодом
  • Liferay Dxp - Платформа корпоративного портала с открытым исходным кодом и коммерческая платформа используют OSGi начиная с версии 7.x.
  • Люси 5 - сервер веб-приложений CFML с открытым исходным кодом
  • NetBeans - IDE с открытым исходным кодом и многофункциональная клиентская платформа
  • Nuxeo - Открытый исходный код ECM Платформа обслуживания
  • Открыть проект Daylight - Проект с целью ускорения внедрения программно-определяемая сеть
  • OpenEJB - контейнер EJB 3.0 с открытым исходным кодом, поддерживающий OSGi, который может работать как в автономном, так и в встроенном режиме
  • openHAB - ПО с открытым исходным кодом для домашней автоматизации
  • OpenWorm - программное обеспечение с открытым исходным кодом для моделирования C. elegans через специальный Джеппетто модульная платформа
  • Акана - API-шлюз, портал и сервер аналитики от Akana (ранее SOA Software)
  • Сервер SpringSource dm - сервер на базе микроядра с открытым исходным кодом, созданный из пакетов OSGi и поддерживающий приложения OSGi
  • Weblogic - Сервер приложений Oracle Weblogic
  • WebSphere - Сервер приложений IBM Websphere JEE
  • WebMethods - SoftwareAG WebMethods
  • WSO2 Углерод - Базовая платформа для стека промежуточного программного обеспечения с открытым исходным кодом WSO2 корпоративного уровня

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

ИмяЛицензия
Апач ФеликсОткрытый исходный код
Консьерж OSGiОткрытый исходный код
Эквинокс OSGiОткрытый исходный код
KnopflerfishОткрытый исходный код
Программное обеспечение Bosch IoT GatewayКоммерческий
Затмение БлизнецыОткрытый исходный код

Смотрите также

Рекомендации

  1. ^ "OSGi Alliance | Технические характеристики / Домашняя страница". osgi.org. 2015. Получено 30 июня, 2016.
  2. ^ «Лицензия на спецификацию OSGi». Архивировано из оригинал на 2015-09-14. Получено 2012-05-10.
  3. ^ https://www.osgi.org/osgi-compliance/osgi-certification/osgi-certified-products/
  4. ^ Создание пакетов OSGi Костин Ло
  5. ^ OSGi Alliance | О компании / Члены
  6. ^ https://blog.osgi.org/2020/08/osgi-core-r8-proposed-final-and.html
  7. ^ «Forrester называет лидеров в области управления веб-контентом». CMSWire. 2018-11-16. Получено 5 декабря 2018.
  8. ^ "Adempiere Branch_GlobalQSS_361". http://www.adempiere.com/. Получено 27 сентября 2014. Внешняя ссылка в | сайт = (помощь)

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

внешняя ссылка