BLOG main image
OSGi Story (31)
Hot Issue (11)
Equinox (9)
Spring-OSGi (0)
J2ME (7)
OSGi-UFK (2)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2008. 1. 24. 18:05

기본적으로 OSGi Framework은 자바환경에서 운영된다. 따라서 자바의 개발환경과 실행환경은 매우 중요한 요소이며, OSGi Framework의 탄생 근거가 되기도 한다. 현재 자바의 개발/실행환경은 JSRs(Java Specification Requests), JCP(Java Community Process)를 통하여 스펙이 정해지고 또한 발전하고 있다. 한편 임베디드 자바(J2ME) 진영에서는 OSGi Framework을 자바 환경위에서 운영되는 하나의 Framework이 아닌 자바실행환경에 구체적으로 명시하기도 한다. 따라서 자바의 실행환경의 트랜드는 OSGi Framework 입장에서는 매우 중요한 로드맵과 전략이기도 한다. 이번 호에서는 점차 다양해지고 발전해나가는 임베디드 자바(J2ME)의 기술 트랜드에 대해서 살펴본다.

 

자바의 실행환경은 크게 J2ME, J2SE, J2EE로 구분된다. 그중에서 J2ME는 임베디드/모바일을 위한 자바 환경으로 OSGi Framework에서 주로 탑재되는 운영환경이기도 하다. Java 2 Platform, Micro Edition (J2ME) Java 플랫폼의 가장 작은 부분으로, 스마트 카드나 호출기와 같이 매우 작은 장치에서부터 TV 셋탑 박스와 컴퓨터 데스크탑과 같은 강력한 장치에 이르기까지 소비자용 내장형 장치에 사용된다. J2ME의 주요 요소로는 소비자용 내장형 장치를 위한 Java 솔루션을 제공하는 여러 도구 및 기술과 함께 CDC(Connected Device Configurations) & CLDC(Connected Limited Device Configurations)라 불리우는 핵심 API Set, 각 디바이스 제품군에 맞는 API Set SPEC을 정의한 프로파일들 F/P(Foundation Profile), P/P(Personal Profile), MIDP(Mobile Information Device Profile) 들로 구성되는데, 특히 소비자 가전(CE) 제품용으로 최적화된 Java Runtime Environment도 포함된다.

이렇듯 J2ME 기술은 다양한 범위의 극소형 제품에 사용되며, 스마트 카드, 호출기, 셋탑 박스 및 기타 소형 제품 내에서 보안, 연결 및 유용한 유틸리티 프로그램을 사용을 가능케 한다. 결국J2ME 기술은 Java 제품군의 일부로서 관련된 Java 플랫폼에는 J2SE (Java 2 Standard Edition) J2EE (Java 2 Enterprise Edition)가 있다. J2ME 플랫폼은 실행, 개발환경으로 CVM & KVM, 애플리케이션 프로그래밍 API Library, Deployment Configuration tool 들을 제공한다. J2ME 플랫폼이 지향하는 제품군들을 두개의 그룹으로 나누면, 첫번째로 개인의 휴대가 가능하며 네트워크를 통한 정보전달이 가능한 기기군들로 셀롤러 폰, 페이져 등을 말할 수 있으며(KVM-CLDC-MIDP), 두 번째로 구체적인 기능을 가지며, 고정되어 있는 정보전달 기기군들로 셑톱박스, 인터넷 TV, 자동차 네비게이션 시스템등으로(CVM-CDC-F&PP) 구분할 수 있다. 셀롤러폰이나 페이져 등은 제품들의 모양, 성능, 특성이 제각각이기 때문에 각각의 기계장치들의 공통되는 핵심부분을 모아 버츄얼머신의 configuration API들을 제공하고 있다. 실행환경 측면에서의 J2ME Configuration은 메모리 용량과 프로세스의 처리용량이 비슷한 것들을 같은 범주로한 API들로 CLDC를 정의하고 있다. Configuration의 스펙을 살펴보면, 프로그램 언어인 Java , Java Virtual Machine 실행환경, 개발 도구로 Java라이브러리와 API를 제공하고 있다. 하이-레벨 아키텍처는 기계장치의 OS위에 버츄얼머신이 존재하고 그 위에 컨피규레이션과 프로파일이 수직적 구조로 이루어져 있다. 현재J2ME 플랫폼에서는 CLDC(Connected Limited Device Configuration) CDC(Connected Device Configuration), 두가지의 표준 컨피규레이션이 있으나 최근 자바원 2007에서 발표된 CLDC의 로드맵은 MSA (Mobile Service Architecture) 1.0으로 발전하게 된다. 자바의 실행/개발환경을 정의한 스펙은 JCP JSRs를 통해서 매우 다양하게 전개가 된다. 그 많은 JSR중에서 OSGi와 직접적으로 관련된것들은 다음과 같다.

 

1. JSR 248 - MSA (Mobile Service Architecture)

2. JSR 249 - MSAA (Mobile Service Architecture Advanced)

3. JSR 232 - MOM (Mobile Operational Management)

4. JSR 277 - Java Module System

5. JSR 291 - Dynamic Component Support for Java SE (OSGi)

 

이중에서 JSR 248/249는 과거 CDC/CLDC에 대한 스펙이며, 특히 OSGi가 대부분 CDC환경에서는 운영되고 CLDC환경에서는 운영되기가 어려웠음을 볼 때 OSGi가 모바일 환경에서도 구현될수있는 가능성을 나타내준다. 또한 JSR 232-MOM OSGi의 번들 관리 싸이클과 비슷한 형태의 관리 환경에 대한 스펙이며, JSR277은 자바의 다이나믹 모듈 시스템으로 OSGi의 번들 형태 구조를 자바에서 직접 구현하려는 의도를 볼수가 있다. 이러한 JSR들은 OSGi와 직접적으로 연관이 되어서 매우 중요한 스펙이 된다. OSGi가 자바 실행환경에서 운영되기에 JSR의 발전 방향에 따라서 영향을 받을 수밖에 없기때문이다. 이제 하나하나 살펴보기로 한다.