OSGi

OSGi
OSGi
OSGi Logo.png
OSGi Alliance 로고
시작한 해1999
최신 버전8.0
2020년 12월 (2020-12)[1]
조직OSGi 얼라이언스
도메인자바
면허증.OSGi 사양 라이선스 버전 2.0
웹 사이트www.osgi.org

OSGi Alliance(이전의 Open Services Gateway 이니셔티브)는 1999년 3월에 설립된 컴퓨터 소프트웨어의 오픈 스탠다드 조직입니다.OSGi 표준은 원래 규정되어 있으며 계속 유지되고 있습니다.OSGi 사양독립형 Java/VM 환경에는 존재하지 않는 완전하고 동적인 컴포넌트 모델을 구현하는 Java 프로그래밍 언어용 모듈러 시스템 및 서비스 플랫폼을 기술합니다.

묘사

애플리케이션 또는 컴포넌트는 도입용 번들의 형태로 리모트로 설치, 기동, 정지, 갱신, 언인스톨 할 수 있습니다.Java 패키지/클래스관리는 매우 상세하게 지정되어 있습니다.애플리케이션 라이프 사이클 관리는 관리 정책을 원격으로 다운로드할 수 있는 API를 통해 구현됩니다.서비스 레지스트리를 사용하면 번들이 새로운 서비스의 추가 또는 삭제를 감지하고 그에 따라 조정할 수 있습니다.

OSGi 사양은 서비스 게이트웨이의 본래 초점을 넘어 발전하여 현재 휴대폰에서 오픈 소스 Eclipse IDE에 이르기까지 다양한 애플리케이션에 사용되고 있습니다.기타 응용 분야에는 자동차, 산업 자동화, 빌딩 자동화, PDA, 그리드 컴퓨팅, 엔터테인먼트, 플리트 관리응용 프로그램 서버가 포함됩니다.

2020년 10월, OSGi Alliance는 표준화 노력의 이행을 Eclipse Foundation으로 발표했으며, 그 후 이 재단은 [2]폐쇄될 예정입니다.

사양 프로세스

OSGi 사양은 회원이 공개 프로세스로 개발하여 OSGi 사양 [3]라이선스에 따라 일반에 무료로 공개됩니다.OSGi Alliance에는 회원만 참가할 수 있는 컴플라이언스 프로그램이 있습니다.2010년 11월 현재 7개의 인정 OSGi 프레임워크 [4]구현이 있습니다.다른 페이지에는 OSGi 프레임워크 및 기타 OSGi 사양이 포함된 인증 OSGi 사양 구현과 인증되지 않은 OSGi 사양 구현이 모두 나열됩니다.

아키텍처

OSGi 서비스 게이트웨이 아키텍처

OSGi는 모듈러 소프트웨어 프로그램 및 라이브러리를 개발 및 배치하기 위한 Java 프레임워크입니다.각 번들은 긴밀하게 결합되어 동적으로 로드 가능한 클래스, jar 및 구성 파일의 모음으로, 외부 종속성을 명시적으로 선언합니다(있는 경우).

프레임워크는 개념적으로 다음 영역으로 나뉩니다.

번들
번들은 매니페스트 헤더가 추가된 일반 JAR 컴포넌트입니다.
서비스
서비스 레이어는 Plain Old Java Interface(POJI; 플레인오래된 Java 인터페이스) 또는 Plain Old Java Object(POJO; 플레인오래된 Java 오브젝트)의 퍼블리시-파인드바인드 모델을 제공함으로써 번들을 동적으로 연결합니다.
서비스 레지스트리
관리 서비스를 위한 응용 프로그램 프로그래밍 인터페이스입니다.
라이프 사이클
번들에 대한 수명 주기 관리(설치, 시작, 중지, 업데이트 및 제거)를 위한 애플리케이션 프로그래밍 인터페이스입니다.
모듈
캡슐화 및 의존관계 선언을 정의하는 레이어(번들이 코드를 Import 및 내보낼 수 있는 방법).
보안.
번들 기능을 미리 정의된 기능으로 제한하여 보안 측면을 처리하는 계층입니다.
실행 환경
특정 플랫폼에서 사용할 수 있는 메서드 및 클래스를 정의합니다.Java Community Process에 의해 Java의 새로운 버전 및 에디션이 생성될 때 변경될 수 있으므로 실행 환경의 고정 목록은 없습니다.단, 현재 대부분의 OSGi 구현에서 지원되는 세트는 다음과 같습니다.

번들

분류:OSGi

번들은 Java 클래스와 상세 매니페스토를 갖춘 추가 리소스 그룹입니다.MANIFEST.MF포함된 Java 클래스 그룹에 더 정교한 동작을 제공하기 위해 필요한 추가 서비스뿐만 아니라 전체 Aggregate를 구성 요소로 간주할 수 있습니다.

다음으로 일반적인 예를 제시하겠습니다.MANIFEST.MFOSGi 헤더가 있는 파일:

번들명: 안녕 세계 Bundle-SymbolicName: org.module을 클릭합니다.안녕 세계 번들 설명: Hello World 번들 번들 매니페스트 버전: 2 번들 버전: 1.0.0 번들 액티베이터: org.module을 클릭합니다.액티베이터 내보내기 패키지: org.module을 클릭합니다.hellowold;version="1.0.0" Import-Package(가져오기 패키지): org.osgi.http;version="1.3.0" 

이 예의 내용은 다음과 같습니다.[5]

  1. 번들명:이 번들에 대해 사람이 읽을 수 있는 이름을 정의합니다. 번들에 간단한 이름을 할당합니다.
  2. Bundle-SymbolicName:유일하게 필요한 헤더입니다.이 엔트리는 역방향 도메인 이름 규칙(Java 패키지에서도 사용)에 따라 번들의 고유 식별자를 지정합니다.
  3. 번들 설명:번들 기능에 대한 설명입니다.
  4. 번들 매니페스트 버전:이 번들을 읽는 데 사용할 OSGi 규격을 나타냅니다.
  5. 번들 버전:번들에 버전 번호를 지정합니다.
  6. 번들 액티베이터:번들이 활성화되면 호출되는 클래스 이름을 나타냅니다.
  7. 내보내기 패키지:번들에 포함된 Java 패키지를 외부에서 사용할 수 있도록 합니다.
  8. Import-Package:번들에 필요한 종속성을 충족하기 위해 외부에서 필요한 Java 패키지를 나타냅니다.

라이프 사이클

OSGi 번들의 라이프 사이클

라이프 사이클 계층은 동적으로 설치, 시작, 중지, 업데이트 및 제거할 수 있는 번들을 추가합니다.번들은 클래스를 로드하기 위해 모듈 층에 의존하지만 런타임에 모듈을 관리하기 위해 API를 추가합니다.라이프 사이클 레이어는, 통상은 애플리케이션의 일부가 아닌 역학을 도입합니다.환경의 올바른 작동을 보장하기 위해 광범위한 종속성 메커니즘이 사용됩니다.라이프 사이클 운영은 보안 아키텍처를 통해 완벽하게 보호됩니다.

번들 상태 묘사
설치된. 번들이 성공적으로 설치되었습니다.
해결했다 번들에 필요한 모든 Java 클래스를 사용할 수 있습니다.이 상태는 번들을 시작할 준비가 되었거나 중지되었음을 나타냅니다.
시작하는 번들을 시작하고 있습니다.BundleActivator.start메서드가 호출되었지만 시작 메서드가 아직 반환되지 않았습니다.번들에 액티베이션정책이 있는 경우 번들은 액티베이션정책에 따라 활성화 될 때까지 STARTING 상태로 유지됩니다.
활동적인 번들이 정상적으로 활성화되어 실행 중입니다.번들 액티베이터 시작 메서드가 호출되어 반환되었습니다.
정지하고 있다 번들을 중지하고 있습니다.BundleActivator.stop메서드가 호출되었지만 중지 메서드가 아직 반환되지 않았습니다.
언인스톨 완료 번들이 제거되었습니다.다른 상태로 이행할 수 없습니다.

다음 예시는 일반적인 Java 클래스의 구현 예입니다.BundleActivator인터페이스:

패키지 org.module (조직.module);  수입품 org.osgi.disc.disc.disc.번들 액티베이터; 수입품 org.osgi.disc.disc.disc.번들 콘텍스트;  일반의 학급 액티베이터 용구 번들 액티베이터 {  사적인 번들 콘텍스트 맥락;   @오버라이드  일반의 무효 개시하다(번들 콘텍스트 맥락) 던지다 예외. {   시스템..나가..인쇄("시작:헬로 월드");   이것..맥락 = 맥락;  }   @오버라이드  일반의 무효 이제 그만(번들 콘텍스트 맥락) 던지다 예외. {   시스템..나가..인쇄('스톱핑: 잔혹한 세상 굿바이');   이것..맥락 = 무효;  } } 

서비스

표준 서비스

OSGi Alliance는 많은 서비스를 지정했습니다.서비스는 Java 인터페이스에 의해 지정됩니다.번들은 이 인터페이스를 구현하고 서비스를 서비스 레지스트리에 등록할 수 있습니다.서비스의 클라이언트는 레지스트리에서 서비스를 찾거나 서비스가 나타나거나 사라졌을 때 대응할 수 있습니다.

다음 표에 OSGi 시스템 서비스에 대한 설명을 나타냅니다.

시스템 서비스 묘사
로깅 정보, 경고, 디버깅 정보 또는 오류 기록은 로그 서비스를 통해 처리됩니다.로그 엔트리를 수신하여 이 정보를 서브스크라이브한 다른 번들에 디스패치합니다.
구성 관리자 이 서비스를 통해 오퍼레이터는 배포된 번들의 구성 정보를 설정하고 가져올 수 있습니다.
디바이스 액세스 기존 디바이스의 자동 검출 및 접속 조정을 용이하게 합니다.플러그 앤 플레이 시나리오에 사용됩니다.
사용자 관리자 이 서비스는 인증 및 인가 목적으로 사용자 정보(프라이빗 및 퍼블릭)가 포함된 데이터베이스를 사용합니다.
IO 커넥터 IO 커넥터 서비스는 CDC/CLDC를 구현합니다. javax.microedition.io서비스로서의 패키지이 서비스를 통해 번들은 새로운 대체 프로토콜 체계를 제공할 수 있습니다.
우선권 Java의 디폴트를 사용하는 대신 OSGi를 사용하기 쉬운 메커니즘을 제공합니다.Properties기본 설정을 저장합니다.
컴포넌트 런타임 서비스의 동적인 특성(언제든지 출입이 가능)으로 인해 소프트웨어 쓰기가 어려워집니다.Component Runtime 사양은 종속성에 대한 XML 기반 선언을 제공함으로써 이러한 동적 측면을 쉽게 처리할 수 있습니다.
도입 관리자 관리 에이전트의 일부 책임에 대한 액세스를 표준화합니다.
이벤트 관리자 퍼블리시 및 서브스크라이브 모델에 근거한 번들간 통신 메커니즘을 제공합니다.
응용 프로그램 관리자 동시에 사용할 수 있는 다양한 유형의 응용 프로그램이 있는 환경의 관리를 단순화합니다.

다음 표에 OSGi Protocol Services에 대한 설명을 나타냅니다.

프로토콜 서비스 묘사
HTTP 서비스 HTTP 를 사용해 OSGi 로부터 정보를 송수신 할 수 있습니다.
UPnP 디바이스 서비스 Universal Plug and Play(UPnP; 유니버설플러그 앤 플레이) 디바이스와 상호 운용하기 위해 OSGi 번들을 개발하는 방법을 지정합니다.
DMT 관리자 Open Mobile Alliance(OMA) 디바이스 관리 사양의 개념을 사용하여 디바이스를 관리하기 위한 API를 정의합니다.

다음 표에 OSGi 기타 서비스에 대한 설명을 나타냅니다.

기타 서비스 묘사
회선 관리 Producer 서비스와 Consumer 서비스 간의 연결을 허용합니다.
XML 파서 XML 파서 서비스를 사용하면 번들은 원하는 속성 및 JAXP와의 호환성을 가진 파서를 찾을 수 있습니다.
측정 및 상태 Measurement and State 서비스를 통해 OSGi 서비스 플랫폼에서 측정을 올바르게 처리할 수 있습니다.

조직

OSGi Alliance는 Ericson, IBM, Motorola, Sun Microsystems 등에 의해 1999년 3월에 설립되었습니다.비영리 법인으로 설립되기 전에는 Connected Alliance라고 불렸습니다.

회원 중에는 Adobe Systems, Deutsche Telekom, Hitachi, IBM, Liferay, Makewave, NEC, NTT, Oracle, Orange SA, ProSysst, Salesforce, Siemens, Software AG 및 TIBCO [6]Software 등 상당히 다른 비즈니스 영역에서 온 35개 이상의 회사가 있습니다.

Alliance에는 조직의 전반적인 거버넌스를 제공하는 이사회가 있습니다.OSGi 담당자는 제휴를 지원하는 다양한 역할과 책임이 있다.기술 작업은 이사회가 인가한 전문가 그룹(EG) 내에서 수행되며, 비기술 작업은 다양한 작업 그룹 및 위원회에서 수행됩니다.Expert Group 내에서 수행되는 기술 작업에는 사양 개발, 참조 구현 및 컴플라이언스 테스트가 포함됩니다.이러한 전문가 그룹은 OSGi 사양의 5가지 주요 릴리스(2012년 기준)를 작성했습니다.

엔터프라이즈, 모바일, 차량 및 핵심 플랫폼 분야에 전담 전문가 그룹이 존재합니다.

엔터프라이즈 엑스퍼트 그룹(EEG)은 최신 EG로 엔터프라이즈/서버측 애플리케이션에 대응하고 있습니다.2007년 11월 REG(Residential Expert Group)는 주택/홈게이트웨이를 원격으로 관리하기 위한 사양 작업을 시작했습니다.2003년 10월, Nokia, Motorola, IBM, ProSyst 및 다른 OSGi 멤버는 차세대 스마트폰용 MIDP 기반 서비스 플랫폼을 지정하는 Mobile Expert Group(MEG; 모바일 익스퍼트 그룹)을 결성했습니다. 그룹은 CDC MEG가 OS4의 일부로서 CLDC가 관리할 수 없는 요구에 대응하고 있습니다.

사양 버전

  • OSGi Release 1 (R1) : 2000년 5월
  • OSGi 릴리즈 2 (R2) : 2001년 10월
  • OSGi Release 3 (R3) : 2003년 3월
  • OSGi Release 4 (R4) : 2005년 10월 / 2006년9월
    • 코어 사양(R4 코어):2005년 10월
    • 모바일 사양 (R4 Mobile / JSR-232):2006년 9월
  • OSGi Release 4.1 (R4.1): 2007년5월 (AKA JSR-291)
  • OSGi Release 4.2 (R4.2): 2009년9월
    • 엔터프라이즈 사양(R4.2): 2010년 3월
  • OSGi Release 4.3 (R4.3) : 2011년 4월
    • 핵심: 2011년 4월
    • 개요 및 주거용:2012년 5월
  • OSGi Release 5 (R5) : 2012년6월
    • 핵심 및 엔터프라이즈:2012년 6월
  • OSGi Release 6 (R6) : 2015년 6월
    • 핵심: 2015년 6월
  • OSGi Release 7 (R7) : 2018년 4월
    • 핵심 및 개요:2018년 4월
  • OSGi Release 8 (R8) : 2020년 12월[7]

관련 기준

OSGi를 사용한 프로젝트

  • Adobe Experience Manager - 엔터프라이즈 콘텐츠 관리[8] 시스템
  • Apache Aries - OSGi Enterprise Expert Group에 의해 정의된 애플리케이션 중심의 사양 구현 및 확장
  • Apache Sling - JCR 콘텐츠 저장소용 OSGi 기반 애플리케이션 계층
  • Atlassian ConversenceJIRA - 이 엔터프라이즈 Wiki 및 문제 추적기용 플러그인 아키텍처는 OSGi를 사용합니다.
  • 비즈니스 인텔리전스 및 보고서 작성 도구(BIRT) 프로젝트 - 오픈 소스 보고서 작성 엔진
  • Cytoscape - 오픈 소스 바이오 인포매틱스 소프트웨어 플랫폼 (버전 3.0 이후)
  • Data Nucleus - 서비스 지향 아키텍처의 오픈 소스 데이터 서비스 및 지속성 플랫폼
  • DDF - 분산 데이터 프레임워크는 무료 오픈 소스 데이터 통합을 제공합니다.
  • Dotcms - 오픈 소스 웹 콘텐츠 관리
  • EasyBeans - 오픈 소스 EJB 3 컨테이너
  • Eclipse - 오픈 소스 IDE 및 리치 클라이언트 플랫폼
  • iDempiere - 오픈소스 ERP 브랜치 GlobalQ의 OSGi 구현SS Adempiere361은 원래 Low Heng[9] Sin에 의해 시작되었습니다.
  • Eclipse Virgo - OSGi 번들로 구성되어 OSGi 애플리케이션을 지원하는 오픈 소스 마이크로커널 기반 서버
  • GlassFish(v3) - Java EE용 응용 프로그램 서버
  • Fuse ESB - ServiceMix 4의 제품화된 지원 릴리스입니다.
  • 통합 게놈 브라우저 - 게놈 데이터 시각화, 탐색 및 분석을 위한 오픈 소스 데스크톱 GUI
  • IntelliJ - Java IDE 및 리치 클라이언트 플랫폼(공짜 커뮤니티 에디션 포함)
  • JBoss - Red Hat의 JBoss 응용 프로그램 서버
  • JOnAS 5 - 오픈 소스 Java EE 5 응용 프로그램 서버
  • Joram - 오픈소스 메시징 서버(JMS, MQTT, AMQP 등)
  • JOSO 2 - Atricore의 오픈 소스 표준 기반 ID 및 액세스 관리 플랫폼
  • Liferay Dxp - 오픈 소스 및 상용 엔터프라이즈 포털 플랫폼은 버전 7.x에서 OSGi를 사용합니다.
  • Lucee 5 - 오픈 소스 CFML 웹 애플리케이션 서버
  • NetBeans - 오픈 소스 IDE 및 리치 클라이언트 플랫폼
  • Nuxeo - 오픈 소스 ECM 서비스 플랫폼
  • 오픈 데이라이트 프로젝트 - 소프트웨어 정의 네트워킹의 도입을 가속화하는 것을 목적으로 하는 프로젝트
  • OpenEJB - 독립 실행형 모드 또는 임베디드 모드에서 모두 실행할 수 있는 오픈 소스 OSGi 지원 EJB 3.0 컨테이너
  • openHAB - 오픈 소스 홈 자동화 소프트웨어
  • OpenWorm - 전용 Geppetto 모듈러 플랫폼을 통한 C. elegans 오픈 소스 소프트웨어 시뮬레이션
  • Akana - Akana(구 SOA 소프트웨어)의 API 게이트웨이, 포털 및 Analytics 서버
  • Weblogic - Oracle Weblogic 응용 프로그램 서버
  • WebSphere - IBM Websphere JE 응용 프로그램 서버
  • Web Methods - 소프트웨어AG Web Methods
  • WSO2 Carbon - WSO2의 엔터프라이즈급 오픈 소스 미들웨어 스택용 기본 플랫폼

현재의 프레임워크 구현

이름. 면허증.
아파치 펠릭스 오픈 소스
아파치 카라프 오픈 소스
컨시어지 OSGi 오픈 소스
Equinox OSGi 오픈 소스
이클립스 제미니 오픈 소스
노플러피시 오픈 소스

「 」를 참조해 주세요.

레퍼런스

  1. ^ "OSGi Alliance Specifications / HomePage". osgi.org. 2020. Retrieved December 10, 2020.
  2. ^ "Announcement of Transition to Eclipse Foundation".
  3. ^ "OSGi Specification License". Archived from the original on 2015-09-14. Retrieved 2012-05-10.
  4. ^ "Archived copy". Archived from the original on 2008-09-25. Retrieved 2017-06-23.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  5. ^ Costin Leau에 의한 OSGi 번들 작성
  6. ^ OSGi 얼라이언스에 대해서 / 멤버에 대해서
  7. ^ "OSGi Core Release 8 is now final and published".
  8. ^ "Forrester Names Web Content Management Leaders". CMSWire. 2018-11-16. Retrieved 5 December 2018.
  9. ^ "Adempiere Branch_GlobalQSS_361". adempiere.com/. Retrieved 27 September 2014.

추가 정보

외부 링크