OSGI는 운영체제, 플랫폼에 독립적으로 운영되는 미들웨어 프레임워크이다.
OSGI는 컨테이너 안에서 효율적으로 사용할 수 있는 모듈러 자바 컴포넌트(번들)를 만들고 관리를 용이하게 한다.
개발자로서, 하나 혹은 많은 번들을 만들기 위해 OSGI specification과 도구를 사용한다.
OSGI는 이러한 번들의 생명주기를 정의(혹은 규정)한다.
또한, 컨테이너 안에 번들들의 상호작용을 도와주고 관리한다.
요약하자면
OSGI는 번들을 관리하고 편리하게 사용하기 위한 것 이라고 볼 수 있다.
OSGI는 서비스 지향 구조(SOA)이다.
서비스는 모두 번틀(Bundle)이라 부르는 물리적 묶음에 포함된다.
복수개의 OSGI 서비스가 하나의 번들에 포함될 수도 있으며, 번들은 배포와 관리 기본 단위를 형성합니다. 이 번들들을 관리해 주는 것이 바로 프레임워크이다.
프레임워크는 서비스에 대한 등록/관리기를 가지고 있어서 서비스에 대한 등록/조회/실행/삭제 등을 수행한다.
또한 이벤트와 그에 따른 이벤트 탐지 및 대응 처리도 하게 된다.
OSGI는 프로그램을 만들 때 하나의 큰 프로그램으로 만들지 않고 여러 가지의 작은 프로그램을 만든 후 이것을 하나로 묶는 개념이다.
OSGI는 하나의 프로그램을 개발하는데 여러 개발자들이 참여하고 또한 이 개발자들이 바뀌고 하다보면 프로그램이 점점 얽히고 이해하기 어려워 지기 때문에 나온 방법이다.
OSGI는 한개의 번들 또는 여러 개의 번들로 이루어진 애플리케이션을 재시작(restart) 없이 언제든지 동적으로 프레임워크 상에 설치, 실행, 업데이트, 중단, 제거하는 것을 가능하게 하는 매우 유연한 라이프 사이클(Life Cycle, 생명주기)모델을 지원
OSGI는 전체시스템에 버전이 각각 다른 모듈을 동시에 사용 할 수 있다.
OSGI는 각 묘듈간에 의존성을 관리 한다.
OSGI는 SOA처럼 각 모듈을 서비스 레지스터리에 등록하여 필요한 곳에서 가져다 쉽게 재사용 할 수 있다.
각각의 번들이 완전히 분리되어 있으므로 다른 개발자가 개발한 모듈의 코드를 신경쓸 필요가 없다.