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 관련 표준[편집]

  • 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 (Home Gateway initiative)

대한민국의 OSGi 커뮤니티[편집]

주요 OSGi 적용 프로젝트[편집]

관련 서적[편집]

같이 보기[편집]