OSGi Alliance, ранее известная как Open Services Gateway initiative (инициатива доступа к открытым службам) — организация открытых стандартов (Open Standards Development Organization — SDO). В течение последних нескольких лет она разрабатывала основанную на Java сервисную платформу OSGi (также известна как The Dynamic Module System for Java), которая могла управляться удалённо. Основная часть этой разработки — фреймворк (каркас), который определяет модель жизненного цикла приложения и служебного реестра.

OSGi (Open Services Gateway Initiative) — спецификация динамической модульной системы и сервисной платформы для Java-приложений, разрабатываемая консорциумом OSGi Alliance. Спецификации дают модель для построения приложения из компонентов, связанных вместе посредством сервисов. Суть заключается в возможности переинсталлировать динамически компоненты и составные части приложения без необходимости останавливать и перезапускать его.

Круг применений данной спецификации довольно широк: изначально разрабатывалась для создания встроенных систем (в частности, для автомобилей BMW, также в разработке спецификации активно участвует Siemens), но сейчас на базе OSGi строят многофункциональные автономные настольные приложения (например, Eclipse SDK) и корпоративные системы.

На основе этого фреймворка было создано огромное количество OSGi-служб:

Log Configuration management Preferences Http Service (запускает сервлеты) XML parsing (обработка данных XML) Device Access (доступ к устройствам) Package Admin

Permission Admin Start Level User Admin IO Connector Wire Admin Jini UPnP Exporter

Application Tracking Signed Bundles Declarative Services Power Management (управление питанием) Device Management (управление устройствами) Security Policies Diagnostic/Monitoring and Framework Layering

Версии стандарта OSGi

OSGi Release 1 (R1): май 2000 OSGi Release 2 (R2): октябрь 2001 OSGi Release 3 (R3): март 2003 OSGi Release 4 (R4): октябрь 2005 / сентябрь 2006 Core Specification (R4 Core): октябрь 2005 Mobile Specification (R4 Mobile / JSR-232): сентябрь 2006 OSGi Release 4.1: май 2007 OSGi Release 4.2: сентябрь 2009 Enterprise Specification: март 2010 OSGi Release 4.3 (R4.3): апрель 2011 Core: апрель 2011 Compendium and Residential: май 2012 OSGi Release 5 (R5): июнь 2012 Core and Enterprise: июнь 2012

Существуют 4 реализации стандарта OSGi с открытым исходным кодом: Apache Felix Knopflerfish Equinox Concierge OSGi На основе Equinox построена среда разработки Eclipse 3.0+, претендующая на звание отраслевого стандарта компонентной сборки программ.

Смежные RFC и стандарты Java RFC-2608 (Service Location Protocol) Sun JINI (Java Intelligent Network Infrastructure) Sun JCP JSR-8 (Open Services Gateway Specification) Sun JCP JSR-232 (Mobile Operational Management) Sun JCP JSR-246 (Device Management API) Sun JCP JSR-249 (Mobile Service Architecture for CDC) Sun JCP JSR-277 — JSR-277: Java Module System Sun JCP JSR-291 (Dynamic Component Support for JavaTM SE)

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

Состояние пакетаОписаниеINSTALLEDПакет успешно установленRESOLVEDВсе классы Java, необходимые для пакета, доступны. Это состояние указывает, что пакет готов к запуску или остановлен.STARTINGПакет запускается, вызывается метод BundleActivator.start, но метод start еще не вернулся. Когда пакет имеет политику активации, пакет останется в состоянии STARTING до тех пор, пока пакет не будет активирован в соответствии с его политикой активации.ACTIVEПакет успешно активирован и запущен; Его метод запуска активатора Bundle Activator был вызван и возвращен.STOPPINGПакет остановлен. Вызывается метод BundleActivator.stop, но метод stop еще не вернул результат.UNINSTALLEDПакет удален. Он не может переместиться в другое состояние. Ниже приведен пример типичного Java-класса, реализующего интерфейс BundleActivator:package org.wikipedia;

import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator { private BundleContext context;

@Override public void start(BundleContext context) throws Exception { System.out.println("Starting: Hello World"); this.context = context;

@Override public void stop(BundleContext context) throws Exception { System.out.println("Stopping: Goodbye Cruel World"); this.context = null;

См. также Java Management Extensions CORBA

Примечания

Литература

Ссылки osgi.org Equinox Portal Equinox QuickStart Guide

IBM и Cisco представляют UC2 Client Platform OSGi: Pax construct (part #1)

Категория:Java Категория:Eclipse Категория:Связующее программное обеспечение Категория:OSGi Категория:Организации по стандартизации США