관리 메뉴

개발노트

OSGI란? 본문

기타

OSGI란?

YoonGwon 2022. 7. 28. 14:49

네트워크상에 연결된 디바이스들이 다양한 서비스를 공유할 수 있도록 하는 자바 언어 기바의 동적인 플랫폼 (Oen Services Gateway initiative )

 

기존의 자바 플랫폼이 제공하지 못하는, 동적인 컴포넌트 모델을 지원하는 프레임워크

(Dynamic Module System for Java)

 

기존자바

-jar파일은 ClassPath환경변수 또는 JVM의 실행옵션을 이용, 서로 의존성(dependency)을 명확히 표시 할수 없음

-jar파일은 버전정보가 없다. 즉 한 JVM내에서 여러개의 jar 버전이 존재할수 없음. 2개의 라이브러리가 각기 다른 버전의 또 다른 라이브러리를 참고한다면 버전 호환성 문제 발생

-애플리케이션 실행중에는 사용중인 jar파일은 동적으로 변경하거나 추가할수 없음. 즉 애플리케이션을 끄지 않고 새로운 기능을 추가하거나 변경하는 것이 어려움.

 

 

OSGI는 번들(Bundle)이라는 모듈단위를 기반으로 동작. 실제로 jar파일과 같은 형식이지만 몇가지 추가정보가짐

-번들은 추가적인 정보(Metadata)를 가지는 jar파일이다

 1.기존 jar에 들어 있던 META0INF/MANIFEST.MF파일에 추가 헤더를 정의하여 다양한 정보를 표시

 2.OSGI-OPT라는 폴더에 추가적인 문서정보 또는 소스를 저장

-번들은 버전정보를 가짐. 즉, 버젼이 다른 jar파일이 OSGI상에 같이 등록 될수 있음.(각번들에 대해 별개의 ClassLoader를 만들어 사용하기때문)

-무조건 public인 일반 jar파일과 달리 자신이 익스포트(export)하는 패키지/클래스만 외부에서 참조할 수 있다.MANIFEST.MF에 익스포트에 대한 내용이 기록됨

-번들은 MANIFEST.MF에 자신이 참조하는 다른 번들/클래스/패키지에 대한 정보를 기록함. 이때 참조하는 다른 번들의 버전정보도 기록할 수 있으므로 자기가 필요로 하는 버전의 번들과의 의존성을 정확히 표시

-번들은 osgi의 기본기능에 의해 동적으로 설치, 실행, 업데이트,중단,제거가 가능, 즉 새로운 기능이 추가될수 있고, 애플리케이션 재시작없이 기존의 번들을 새로운 버전을 업데이트 할수 있다.

 

OSGI는 한개의 번들 또는 여러 개의 번들로 이루어진 애플리케이션 자체를 언제든지 동적으로 프레임워크상에 설치, 실행, 업데이트, 중단,제거하는 것을 가능하게 하는 매우 유연한 라이프 사이클(Life Cycle, 생명주기)모델을 지원하는 프레임워크이다.

 

참조:OSGI 란? : 네이버 블로그 (naver.com)

728x90

'기타' 카테고리의 다른 글

TCP 연결과 해제  (0) 2022.10.27
X25 와 TCP/IP  (0) 2022.07.28
[메시지 지향 미들웨어:MOM] ActiveMQ, rabbitMQ, Kafka  (0) 2021.01.26
Scale-out & Scale-up 이란  (0) 2021.01.14
윈도우에 개발도구 AtomEditor 설치법  (0) 2020.12.15