Java Inside - BD-J에 대한 소개

이 글은 http://javba.tistory.com/10 팀 블로깅에도 동시에 게제하였습니다.


Blu-ray Disc?

게임이 취미인 분들은 Sony의 Playstation 3를 잘 알고 계시리라 믿는다. 비록, 필자는 Nintendo Wii만 보유하고 있지만 한 때 Playstation 3를 지를까 한참 고민도 했었다.

Playstation 3는 게임기 기능도 갖추고 있으나 최근 새로운 미디어로 각광받는 Blu-ray Disc 플레이어로도 활용할 수 있다. 비록 국내에서는 불법 영화 다운로드 및 IPTV의 빠른 보급으로 인해 많이 사용되고 있지 않지만 미국이나 타 국가에서는 빠르게 보급되고 있는 디지털 기기 중 하나이다.

Blu-ray Disc는 기존 DVD가 4GB ~ 8GB 정도의 용량을 지원하는 것에 비해 무려 6배 이상인 25G ~ 50G 정도의 용량을 지원한다. 구현 방법에 따라서는 100GB ~ 200GB 정도도 지원가능하다고 하니 기존 DVD 대비 혁신적인 포맷임이 분명하다.

Blu-ray Disc에는 용량 외에도 매우 흥미로운 기술이 표준으로 채택되었는데 바로 BD-J (Blu-ray Disc Java)라고 하는 Java 프로그램 개발 환경을 제공한다는 것이다. BD-J를 이용하여 Blu-ray Disc 타이틀에 인터액티브 메뉴를 제공하거나 혹은 게임 등의 Java 응용프로그램을 사용자에게 제공할 수 있다.

BD-J로 개발 가능한 응용프로그램?

BD- J를 이용하면 어떤 어플리케이션을 개발 할 수 있을까? 가장 먼저 떠오르는 것이 타이틀에서 제공하는 사용자 메뉴 화면이다. 기존 DVD 타이틀과 달리 Java 어플리케이션으로 메뉴 프로그램을 개발할 수 있어 interactive한 메뉴 프로그램을 제공할 수 있다. 사실, Java 언어를 이용한 소프트웨어 개발이기 때문에 개발자의 아이디어에 따라 생각치도 못한 다양한 프로그램 개발이 가능할 것이다. 다음 목록은 이미 개발된 BD-J 어플리케이션 및 개인적으로 생각해본 BD-J 응용 프로그램의 예제들이다.
  • 타이틀과 관련된 간단한 게임
  • 현재 재생되고 있는 비디오 영상에 대한 추가 설명을 제공
  • 타이틀이 보여주는 패션 물품을 온라인 쇼핑과 연계하여 소비자의 구매를 유도
  • PIP (Picture in Picture) 기능을 활용하여 감독의 설명이나 주인공의 설명을 함께 제공
  • 네트워크를 이용하여 현재 시청하고 있는 영화에 대한 감상평 쓰기
  • Twitter 계정을 이용하여 내가 시청한 영화 목록을 자동으로 등록하기
예시 한 응용 프로그램 중 몇몇은 네트워크를 필요로 하므로 Blu-ray Disc Player가 네트워크 연결을 지원하는 경우에만 가능하다. 참고로 삼성이 출시한 최신 Blu-ray Player들을 보면 대부분 Ethernet 연결 혹은 USB Dongle을 이용한 무선랜을 지원하고 있다. 물론, Sony Playstation 3 역시 네트워크 연결을 지원한다.

BD-J 표준

BD-J는 기존에 이미 존재하던 여러 Java 표준을 아우르고 또한, Blu-ray만을 위한 별도의 표준을 만들어 포함하고 있다. 아래 그림을 보며 BD-J가 지원하는 표준에 대해 정리해보자.


(출처 - 2007 JavaOne Conference TS-0887 session)

BD-J는 가장 기본적인 프로그래밍 지원을 위해 Java PBP (JSR-217)을 지원한다. PBP는 그래픽 사용자 인터페이스를 위한 AWT (Abstract Windows Toolkit) 및 어플리케이션 모델을 위한 Xlet 관련 클래스를 제공한다.

PBP는 TV, Blu-ray 컨텐츠를 다루기 위한 기능은 제공하지 않는다. 이를 위해 BD-J 스팩은 이미 Digital TV에서 사용되고 있는 GEM, MHP, JavaTV와 같은 스팩을 재 사용하고 있다. GEM, MHP, JavaTV에서 부족한 Blu-ray Disc 만을 위한 특별한 기능을 위해 BD-ROM 스팩 3-2 파트에서 새로운 Java API를 정의하고 있다. BD-J에서 새로 추가한 API 종류에 대해서 짧게 살펴보도록 하자.
  • org.bluray.media - Java Media Frameworks 관련 컨트롤을 제공
  • org.bluray.ti - 타이틀 정보 및 타이틀 정보 컨트롤 API 제공
  • org.bluray.vfs - virtual file system을 제어하기 위한 API 제공
  • org.bluray.ui - 비디오 프레임과 동기화되어 재생되는 애니메이션 기능 제공
  • org.bluray.storage - 저장 공간의 빈 공간 크기 등의 정보를 조회하는 기능 제공
  • org.bluray.system - 시스템 레지스터에 대한 정보 제공
  • org.bluray.application - org.dvb.application에 있는 클래스를 조금 확장한 패키지
  • org.bluray.net - javax.tv.locator에서 정의한 Java TV locator에 대한 구현 클래스
BD-J가 제공하는 클래스에 대해 더 자세한 기술적인 내용을 알고 싶은 분들은 Programming HD DVD and Blu-ray Disc 책을 참고하기 바란다.

BD-J의 미래?

2009 년도 자료를 보면 미국 가정의 HDTV 보급율은 2008년 대비 33%의 성장율을 보이고 있고 Blu-ray의 경우는 71%의 성장율이라고 한다. 향후 몇년 내에 기존 DVD player가 거의 대부분 Blu-ray Player로 대치될 것으로 예상되며 또한, PC의 미디어 장치로 Blu-ray가 탑재되기 시작하면 급격하게 전 세계적으로 보급율이 증가할 것으로 생각된다.
아직 영화사들이 제공하고 있는 기존 BD-J 어플리케이션의 수준이 그리 높지 않아 큰 관심을 얻고 있지는 못하지만 넓은 사용자층과 다양한 H/W, S/W 기능을 활용한 비지니스 모델을 개척할 수 있다면 BD-J 기반의 응용 어플리케이션 개발 시장도 충분히 매력적인 환경이 될 수 있으리라 생각한다.

참고자료
참고 서적은 아래 자료가 유일한 것으로 보인다.

댓글

이 블로그의 인기 게시물

Wireless: HotSpot 2.0 이란?

Apple M1 Mac Mini에서 이더리움 (Ethereum) 채굴하기

Java: Java for Game? Java가 Game 개발에 어울릴까?