OSGi

섬네일 **OSGi**(Open Service Gateway initiative) Alliance는 1999년에 썬 마이크로시스템즈, IBM, 에릭손 등이 구성한 개방형 표준 단체이다. (OSGi Alliance는 처음에 Connected Alliance라고 불렸음) 그 뒤 여러 해 동안 OSGi Alliance는 원격 관리 될 수 있는 자바 기반의 서비스 플랫폼을 제정해왔다. 이 표준 사양의 핵심은 응용 프로그램의 생명주기(Life cycle) 모델과 서비스 레지스트리(Service Registry)를 정의하는 프레임워크(Framework)이다. OSGi 표준 사양에는 이 프레임워크에 기반하여 매우 다양한 OSGi 서비스가 정의되어 있다. OSGi 프레임워크는 독립적인 자바/가상 머신 환경에서 제공되지 않는 세련되고, 완전하며 동적인 SOA(Service Oriented Architecture) 기반의 컴포넌트 모델을 구현한다. 응용 프로그램 또는 구성 요소(번들, Bundle)는 재시동 과정 없이 원격지를 통해 설치(installed), 시작(started), 정지(stopped), 업데이트(updated) 그리고 제거(uninstalled)를 할 수 있다.
# OSGi 적용 분야
OSGi의 본래 적용 분야는 RG(Residential Gateway), 홈게이트웨이였으나 OSGi의 응용 가능성으로 인해 훨씬 폭넓고 다양한 분야에 적용되고 있다. 현재 OSGi 표준 사양은 차세대 스마트폰 뿐만 아니라 이클립스 IDE와 같은 데스크톱 응용 프로그램에까지 적용되고 있다. OSGi 서비스 플랫폼은 홈게이트웨이, 텔레매틱스 단말(예:BMW, SimensVDO), 모바일 단말, 산업 자동화, 빌딩 자동화, PDA / 스마트폰 / 태블릿 등의 모바일 단말, 그리드 컴퓨팅, 백색가전(예: BSH, 보쉬-지멘스 가전 합작회사의 Serve@Home, Clare Controls, Xanboo, AlertMe 등), 엔터테인먼트 (예: 필립스의 iPronto), 기업 차량 관리(예: Acunia의 Fleet Management Solution 등), 로봇 미들웨어와 데스크톱, 엔터프라이즈 서버 등에 응용할 수 있다.
# Architecture
OSGi (개방형 서비스 게이트웨이 이니셔티브) 은 모듈형 소프트웨어 프로그램과 라이브러리를 개발하고 배포하기 위한 자바 프레임 워크이다. 각 번들은 강하게 결합하고, 동적으로 로딩이 가능한 class, jar 그리고 명시적으로 외부 종속성을 선언하는 환경설정파일의 모음이다. 프레임 워크는 개념적으로 다음 부분으로 구성되어 있다.
## Bundles
Bundles은 추가적인 manifest 헤더를 가진 jar 로 구성된다.
## Services
Service층은 Plain Old Java Interfaces (POJI) 혹은 Plain Old Java Objects (POJO)를 위한 publish-find-bind model 을 제공함으로써 bundle을 동적인 방식으로 연결한다.
## Services Registry
관리 서비스( 서비스등록, 서비스추적, 서비스참조)를 위한 응용프로그램 인터페이스이다.
## Life-Cycle
생명주기 관리((install, start, stop, update, and uninstall)를 위한 응용프로그램 인터페이스이다.
## Modules
캡슐화를 정의하고 종속성을 선언하는 층이다. ( 어떻게 bundle이 코드를 불러오고 내보내는지)
## Security
번들로 하여금 미리 정의된 기능을 제한하는 보안측면을 다루는 층이다.
## Execution Environment
특정 플랫폼에서 어떤 method와 class가 가용한지 정의한다. 정해진 실행환경은 없다. 왜냐하면, 실행환경은 Java Community Process가 Java의 새로운 version과 에디션을 생성할 때마다 그 변경사항에 종속적이기 때문이다. 어째튼, 아래 목록이 현재 대부분의 OSGi 실현체에 의해 지원되는 실행환경이다. * CDC-1.0/Foundation-1.0 * CDC-1.1/Foundation-1.1 * OSGi/Minimum-1.0 * OSGi/Minimum-1.1 * JRE-1.1 * J2SE-1.2부터 J2SE-1.6까지
# OSGi 표준 사양
* OSGi Release 1 (R1): 2000년 5월 * OSGi Release 2 (R2): 2001년 10월 * OSGi Release 3 (R3): 2003년 3월 * OSGi Release 4 (R4): 2005년 10월 / 2006년 9월 ** Core Specification (R4 Core): 2005년 10월 ** Mobile Specification (R4 Mobile / JSR-232): 2006년 9월 * OSGi Release 4.1 (R4.1): 2007년 3월 (별칭: JSR-291) * OSGi Release 4.2 (R4.2): 2009년 9월 ** Core and Compendium Version 4.2: 2009년 9월 ** Enterprise Version 4.2: 2010년 3월 * OSGi Release 4.3 (R4.3): 2011년 4월 ** Compendium Version 4.3 and Residential Version 4.3: 2012년 5월 * OSGi Release 5 (R5): 2012년 6월 ** Core and Enterprise: 2012년 6월 * OSGi Release 6 (R6): 2015년 6월 ** Core: 2015년 6월 * OSGi Release 7 (R7): 2018년 4월 ** Core and Compendium: 2018년 4월
# OSGi 관련 표준
* RFC-2608 (Service Location Protocol) * Sun Jini * 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 (Java Module System) * Sun JCP JSR-291 (Dynamic Component Support for Java SE - AKA OSGi 4.1) * Sun JCP JSR-294 (Improved Modularity Support in the Java Programming Language) * HGi url=https://web.archive.org/web/20170201101632/http://www.homegatewayinitiative.org/ (Home Gateway initiative)
# 대한민국의 OSGi 커뮤니티
* OSGi User Forum Korea url=https://web.archive.org/web/20130616094328/http://korea.osgiusers.org/Main/HomePage
# 주요 OSGi 적용 프로젝트
* Apache Aries * Apache Karaf * Apache Felix * Apache Sling * Business Intelligence and Reporting Tools (BIRT) Project * Cytoscape * DataNucleus * EasyBeans * Eclipse * Paremus Service Fabric * Eclipse Virgo * Event Insight * GlassFish * Fuse ESB * GX WebManager Community Edition * JBoss * JOnAS 5 * JOSSO 2 * Netbeans * Nuxeo * OpenEJB * SpringSource dm Server * Weblogic * WebSphere * WSO2 Carbon * Atlassian Confluence & JIRA * IntelliJIDEA * Liferay DXP
# 관련 서적
* OSGi 관련 서적 목록 url=https://web.archive.org/web/20130511002242/http://www.osgi.org/Links/Books * Programming Open Service Gateways with Java Embedded Server(TM) Technology,