Год начался | 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 — это Java-фреймворк для разработки и развертывания модульных программ и библиотек. Каждый пакет представляет собой тесно связанную, динамически загружаемую коллекцию классов, jar-файлов и файлов конфигурации, которые явно объявляют свои внешние зависимости (если таковые имеются).
Концептуально структура разделена на следующие области:
Пакет — это группа классов 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]
Уровень жизненного цикла добавляет пакеты, которые можно динамически устанавливать, запускать, останавливать, обновлять и удалять. Пакеты полагаются на уровень модуля для загрузки классов, но добавляют 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 | С открытым исходным кодом |
Равноденствие OSGi | С открытым исходным кодом |
Затмение Близнецов | Открытый исходный код |
Рыба-нопфлер | Открытый исходный код |
{{cite web}}
: |last=
имеет общее название ( помощь )