
Personal Basis Profile API를 사용하는 디지털 TV에서의 프로그래밍
Personal Basis Profile은 디지털 TV 애플리케이션에 적합한 경량의 컴포넌트 AWT 기반 애플리케이션에 대한 환경을 제공한다. 기본적인 AWT 지원을 제공하지만 AWT 중량 위젯은 지원하지 않는다. 이 Profile은 HAVi UI나 다른 경량의 툴킷 중 어떤 사용자 인터페이스 라이브러리가 구축되어야 하는지에 대한 원칙이 되며, J2ME Persomal Profile의 핵심 AWT 기능을 완수한다. Personal Basis Profile 1.0은 J2ME Foundation Profile (JSR-46) 1.0 버전에 기반하며 Personal Profile(JSR-62)의 서브세트이다. 따라서 Personal Basis Profile 1.0으로 작성된 애플리케이션은 Personal Profile 1.0과 호환된다. 다음의 표는 각각의 Profile에서의 API를 요약한 것이다.
| Profile | Package/class | Description |
| Foundation Profile |
Java.io, java.lang, java.lang.*, java.net, java.security, java.security.*, java.text, java.util, java.util.* |
J2SE 1.3.1의 모든 기본 클래스 라이브러리 지원 |
| Personal Basis Profile |
Java.awt, java.awt.Color java.awt.event, java.awt.image javax.microedition.xlet |
경량 컴포넌트와 몇가지 java 2D 그래픽 지원
xlet 지원 |
| Personal Profile | java.applet java.awt.* |
Applet 지원
components & 2D graphics |
Xlet 애플리케이션 모델
기존의 Java 애플리케이션은 간단했다. 클래스를 로딩하여 main() 메소드를 불러온 후 모든 non-background 쓰레드가 종료되거나 System.exit()가 호출되면 종료된다. 이 모델은 여러 개의 애플리케이션이 동시에 구동되어야 하며 또 각 애플리케이션 간의 분리가 요구되어야하는 디지털 TV 수신기에는 적합하지 않다.
디지털 TV 분야에서는 디지털 TV 수신기에 적합하도록 설계된 애플리케이션의 순서에 따라 Xlets이라고 불리는 새로운 애플리케이션이 등장되었으며, 이는 Personal Basis Profile에 의해 정의된다. Xlet 모델은 셋톱박스에서 애플리케이션의 라이프사이클을 제어하는 Java TV API에서 도입되었다. 이 모델의 두가지 주요 요소는 Xlet과 XletContext Interface이며, 이 두 요소 모두 javax.microedition.xlet 패키지에서 찾을 수 있다. 애플리케이션의 주요 클래스는 시스템을 불러오기 위한 이벤트 메소드를 정의하는 Xlet 인터페이스를 구현해야한다. XletContext Interface는 애플리케이션에 여러 환경 정보를 제공하는 콜백 메소드를 정의한다. 다음의 코드는 간단한 Xlet과 다양한 라이프사이클 메소드를 보여준다.
import javax.microedition.xlet.*;
public class TrivialXlet implements Xlet {
private XletContext context;
public TrivialXlet(){
}
public void destroyXlet( boolean unconditional )
throws XletStateChangeException {
}
public void initXlet( XletContext context )
throws XletStateChangeException {
this.context = context;
}
public void pauseXlet(){
}
public void startXlet() throws
XletStateChangeException {
context.notifyDestroyed(); // immediately quit
}
}JavaTV 소개:
Java TVTM API는 텔레비전 수신기에 적합한 특수한 기능들을 제어할 수 있는 능력을 제공하도록 JavaTM 플랫폼을 확장한 것이다. Java TV API가 제공하는 기능 중에는 서비스 정보 데이터베이스에 대한 접근, 컨텐츠 선택, 특정 TV용 미디어 플레이어에 대한 제어 및 텔레비전 신호와 함께 전달되는 데이터에 대한 접근 등이 있다.
Java TV API의 주요 목적은 애플리케이션 개발자들에게 장비의 기반 방송 네트워크 기술에 무관하도록 애플리케이션을 쉽게 구축할 수 있는 능력을 제공하는 것이다. 예를 들어 많은 애플리케이션들이 서비스 정보 데이터베이스로부터 현재 사용 가능한 서비스들의 이름과 같은 기본 사항을 덩어야할 필요가 생기는데, Java TV API는 추상화를 제공하여 애플리케이션들이 현재 사용중인 서비스 정보 프로토콜과 무관하게 이러한 정보를 취득할 수 있도록 해준다. 이러한 방식은 하드웨어와 프로토콜을 추상화 시킨 API로 애플리케이션을 개발하기 때문에, 단 한번의 애플리케이션 개발로 다양한 네트워크 환경에 적용할 수 있다. TV 컨텐츠 개발자들이 필요로 하는 많은 기능들은 수신기의 Java 플랫폼에서 제공된다. 일반적으로 J2ME 플랫폼의 CDC 기반 프로파일이 텔레비전 수신기를 위한 Java 플랫폼을 제공한다. Java TV API는 애플리케이션 환경에서 제공되고 있지 않은 텔레비전 수신기의 기능들을 제공할 수 있다.
아래 그림은 일반적인 디지털 수신기에 설치되는 Java TV API와 애플리케이션 환경을 보여주고 있다.
가전 기기, TV, 무선 전화기, PDA, 셋톱박스를 대상으로 하는 Java 플랫폼은 J2ME 플랫폼이다. 이 제품들의 카테고리는 벤더들이 새로운 기능을 추가하고 새로운 제품 시장을 형성하면서 지속적으로 발전하고 있다. 그 결과로 Java 기술은 언제나 변화할 수 있어야하며 JCP 표준은 Java 기술이 이러한 변화에 맞춰 성장하고 적응할 수 있는 매커니즘을 제공하고 있다. J2ME를 유용하게 만드는 첫번째 단계는 수많은 제품 카테고리를 엮어 컨피규레이션으로 분류하는 것이다.
RTOS는 Java 기술 레이어를 구현하기 위한 시스템 수준의 지원을 제공한다. 또한 RTOS와 이에 관련된 특정 장치 라이브러리들은 장치 드라이버들을 통해 수신기를 제어하게 된다.
Java TV API는 텔레비전 수신기의 특별한 기능들만을 제공하기 때문에 매우 절제되어 있다. 영속적인 저장 방식(persistant storage mechnism)과 같이 일반적인 임베디드 디바이스에 필요한 API들은 Java TV API에 포함되어 있지 않다. 이와 같이 텔레비전에 관련되어 있지 않은 API들은 애플리케이션 환경에 새로이 정의되어 있거나 다양한 텔레비전 표준 업체들과 협력하여 개발 중에 있다. 어떠한 경우에는 추정된 텔레비전의 요구사항 때문에 애플리케이션 환경이나 Java 플랫폼의 확장으로써의 다른 API들을 사용하지 못할 수도 있다. 이는 관련된 세부 사항에 모두 표기되어 있다.
Java TV API는 서비스나 프로그램 정보와 같은 기존의 표준들과 함께 동일한 환경에서 사용될 수 있다. 이때 기존의 표준 방식들과 이 표준에 근거한 코드가 Java TV API 프레임워크에 쉽게 통합될 수 있는지가 매우 중요하다. 따라서 Java TV API는 하드웨어와 프로토콜을 상대적으로 고급 추상화시켜 정의되어 있다. 다음 표는 Java TV API의 다양한 패키지들을 정리한 것이다.
JavaTV 패키지
| javax.tv.carousel | Java.io 패키지와 연동된 API들을 통해 방송 파일과 디렉토리 데이터에 대한 접근 제공 |
| javax.tv.graphics | Xlets가 루트 컨테이너를 검색할 수 있는 방법과 알파 융합(blending) 방식을 제공 |
| javax.tv.locator | Java TV API를 통해 접근 가능한 데이터 및 자원에 대한 참조 방식을 제공 |
| javax.tv.media | 텔레비전 환경의 실시간 미디어 관리를 위한 제어 및 이벤트 제공 |
| javax.tv.media.protocol | 텔레비전 방송의 고유 스트리밍 데이터에 대한 접근 제공 |
| javax.tv.net | 방송 스트림으로 전송되는 IP 데이터그램에 대한 접근 제공 |
| javax.tv.service | 서비스 정보(SI) 데이터베이스와 API에 담겨진 SI 정보에 대한 접근 방식 제공 |
| javax.tv.service.guide | 프로그램 스케줄, 프로그램 이벤트 및 프로그램 평가를 포함하는 전자 프로그램 지침서(EPG) 지원을 위한 API 제공 |
| javax.tv.service.navigation | 서비스와 계층적 서비스 정보를 열람하기 위한 API 제공 |
| javax.tv.service.selection | 프레젠테이션 서비스를 선택하기 위한 방법 제공 |
| javax.tv.service.transport | SI 데이터가 정의하는 내용을 전송하기 위한 전송 방식에 대한 추가 정보 제공 |
| javax.tv.util | 타이머 이벤트 생성 및 관리 API 제공 |
| javax.tv.xlet | 애플리케이션과 애플리케이션 관리자 간의 통신을 위한 인터페이스 제공 |
JavaTV에 정의된 API는 하나의 프레임워크를 구성하고 있으며, 이는 JavaTV가 설치될 플랫폼이 제공하는 기능에 따라 달라진다.
JavaTV에 관해 반드시 기억해야 할 것은 디지털 TV의 DVB 시스템에 종속되어 있지 않다는 사실이다. JavaTV는 서비스 정보의 기반 구성이나 심지어는 어떤 서비스 정보가 필요한지에 대해서도 중립적이다. 이러한 점은 JavaTV의 가장 뛰어난 장점 중 한가지이다. JavaTV API를 사용하도록 개발된 애플리케이션들은 특정 방송 시스템에 종속되지 않고 JavaTV를 지원하는 모든 플랫폼에서 작동한다. 이와 같은 이동성은 다양한 시장의 네트워크 운영자들에게 제품을 팔아야 하는 컨텐츠 제공자들이나 애플리케이션 개발자들에게 매우 중요하다.
또한 Java TV API는 Java Media Framework(JMF) 버전 1.0을 사용한다는 사실에 주목할 필요가 있다. JavaTV는 Xlet의 생명 주기, Xlet의 상호 작용, 보안 아키텍처, 확장성, UI 상호 작용, JMF 동기화, 자유로운 옵션 선택 등을 모두 정의하고 있다. 이들 각각에 대한 세부적인 내용은 이 글의 범위를 벗어나는 것이므로 JavaTV에 대한 좀더 상세한 내용을 원한다면 이 아티클의 마지막 부분에 소개된 페이지들을 참조하기 바란다.
요약 및 결론
쌍방향 TV 표준에서 Java 기술은 셋톱 박스 애플리케이션에 정보처리기능의 상호 운용능력을 부여하고있다. 덧붙여 거주용 출입문 시스템, 모바일 폰, PDA, 게임 콘솔, 쌍방향 호출기 등의 다른 소비재 디바이스에서도 Java 기술은 널리 배포되어 공통적인 소프트웨어 아키텍처와 개발 툴을 이용하는 이점을 부여함으로써, 컨텐츠 기획자로 하여금 각 디바이스들의 영역을 가로질러 애플리케이션과 서비스들을 배포할 수 있게 한다. 미래에는 이러한 기술이 빠른 속도, 이동가능한 데이터, 홈 네트워크와 함께 점점 더 중요해질 것이다. 이러한 모든 디바이스에서 사용되는 Java 플랫폼은 훨씬 더 훌륭한 컨텐츠 유용성, 방송방식 및 단말 디바이스에 독립적인 개발 방법을 제공할 것이다.
Resources
| Java TV | http://java.sun.com/products/javatv |
| Java Wireless Developer | http://java.sun.com/wireless |
| J2ME | http://java.sun.com/j2me |
| CDC 스펙과 RI 다운로드 | http://java.sun.com/products/cdc |
| Personal Profile Specs 다운로드 & 레퍼런스 구현 | http://java.sun.com/products/personalprofile |
| MHP, OCAP 관련 정보 | http://www.mhp-interactive |
"에반젤리스트로부터" 카테고리의 다른 글
- 자바의 과거,현재 미래 - Part 2. 현재 (댓글 5개 / 트랙백 2개) 2006/01/01
- Java Technology for Digital Television - Part 1 (댓글 7개 / 트랙백 1개) 2006/01/01
- 자바의 과거,현재 미래 - Part 1. 과거 (댓글 7개 / 트랙백 2개) 2006/01/01
- Java Technology for Digital Television - Part 2 (댓글 4개 / 트랙백 1개) 2006/01/01
- 자바의 과거,현재 미래 - Part 1. 미래 (댓글 6개 / 트랙백 2개) 2006/01/01
TRACKBACK :: http://blog.sdnkorea.com/blog/trackback/22
-
Java Technology for Digital Television - Part 2
Tracked from deuk79님의 블로그 삭제Java Technology for Digital Television - Part 2 썬특집기사/에반젤리스트로부터 쌍방향 TV 표준에서 Java 기술은 셋톱 박스 애플리케이션에 정보처리기능의 상호 운용능력을 부여하고있다. 덧붙여 거주용 출입문 시스템, 모바일 폰, PDA, 게임 콘솔, 쌍방향 호출기 등의 다른 소비재 디바이스에서도 Java 기술은
2007/09/18 20:15
댓글을 달아 주세요
썬특집기사가 유용하네요..
2007/09/14 19:15감사히 잘 읽었읍니다
2007/09/17 21:53자바의 이용범위가 앞으로는 더 넓어지고 중요해진다는 기사군요...
2007/09/18 20:23잘 읽고 많이 배우고 갑니다. 유용한 기사 잘보고 갑니다.^^
좋은 정보 감사해요~
2007/09/19 04:52