기본 콘텐츠로 건너뛰기

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 이란?

스마트폰 사용자가 HotSpot 2.0을 지원하는 Wi-Fi 망을 사용하는 경우라면 기존 Wi-Fi 망과 달리 이동통신 망에서 Wi-Fi 망으로의 네트워크 연결 전환이 자연스럽게 이루어진다. 예를 들면, 3G 네트워크를 이용하여 영화를 보고 있다가 HotSpot 2.0 네트워크에 연결이 가능하게 되면 영화 시청 중단 없이 Wi-Fi 망으로 자연스럽게 네트워크 연결이 이동하여 3G 망의 부하도 줄이고 사용자의 네트워크 비용도 절약할 수 있다. 시스코에서 제공한 White Paper 를 참고.

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

 돈을 벌 목적은 아니고 이더리움 기술에 대한 호기심에 직접 채굴(마이닝)에 나서 보기로 했다. 머신은 Apple M1 Mac Mini. 스팩을 살펴보니 8 Core GPU에 16GB 메모리를 공유하고 있어 가능은 해보인다. 큰 흐름은 다음과 같다. 채굴한 이더리움을 저장할 지갑을 만든다 만든 지갑의 정보를 잘 보관해둔다 (Secret Recovery Phrase, 지갑의 주소 값) Apple M1용 채굴 프로그램 설치 내 지갑 정보를 이용해서 채굴 프로그램 실행 일단, 채굴한 이더리움을 저장할 지갑(wallet)을 만들어야 한다.  크롬 브라우저 익스텐션 설치로 비교적 간단하게 지갑을 만들 수 있는  https://metamask.io/ 를 이용하기로 했다. 크롬 익스텐션을 설치 후 기존에 만든 지갑이 없으므로 "Create a Wallet"을 선택한다. 패스워드 입력하고 등등의 절차를 거치면 아래와 같은 Secret Recovery Phrase가 나온다. 이 값을 잘 보관해두기 바란다. 나중에 지갑을 복구할 때 필요한 값이다. 이 값이 유출되면 지갑에 모아둔 이더리움을 다 털릴 수 있으므로 안전한 곳에 보관한다. Confirm Your Secret Phrase에서 확인 과정을 거친다. 직접 입력하는 것이 아니라 단어 별 버튼을 일일이 클릭해서 확인해주어야 한다. (좀 번거롭지만 그만큼 Secret Recovery Phrase가 중요함을 인지시키기 위한 과정이다.) 이제 지갑은 준비 완료. 생성된 Account 화면에서 지갑의 주소갑을 얻을 수 있다.  Apple M1용 채굴 프로그램을 설치해보자. Ethminer M1 Github 프로젝트 에서 미리 컴파일된 바이너리를 다운로드 받는다. (Assets를 펼치고 ethminer-m1을 클릭해서 다운 받으면 된다) 원하는 폴더에 파일을 옮겨 놓고 Terminal에서 chmod +x로 실행가능하게 만든다. % mv ~/Downloads/ethminer-m1 .             %   % c

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

Java가 기업용 서버 소프트웨어 개발에 활발하게 쓰이는 것과 달리 일반 응용프로그램 분야에서는 별로 대접을 받지 못하는 현실을 개선하려면 어떤 분야부터 손보면 좋을까? 로딩타임, 성능, 사용자 인터페이스 등 Java를 이용한 클라이언트 프로그램을 개발하지 않는 이유들은 개발자 별로 서로 다를 것이다. 하지만, 이런 단점에도 불구하고 점점 복잡해지는 소프트웨어를 더 쉽게 다양한 환경에서 동작하도록 만들기 위해서는 Java만큼 이미 성숙한 해결책도 없지 않은가? 클라이언트 개발을 활성화하기 위해 Java를 게임 개발에 활용할 수 있도록 지원하면 어떨까? 역시, 사용자가 직접 쓰는 응용프로그램 중에는 게임이 가장 시장이 큰 분야이니 말이다. 그렇다면, 현재 게임 개발에 Java가 어느 정도 사용되고 있고 미래에 더 활성화 될 가능성은 있을 것인가? 이런 의문점을 가지고 "Java + Game"에 대해 조사해보기로 했다. 1. Java로 개발한 게임들 우선, Java로 개발한 게임들에 대해 살펴보자. Oracle의  Java in Action 웹페이지 를 보면 Java를 이용한 3D MMORPG RuneScape 에 대한 설명이 있다. 가입자가 1억 3000만명이 넘는다고 하다. 실제 게임을 설치해서 실행해보니 WOW같은 화려한 그래픽에는 못미치치만 잘만든 Role Playing 게임이다 Puppy Games 에서 개발한  Revenge of the Titans 게임도 눈여겨 볼 만하다. 이 회사는 작고 손쉽게 즐길 수 있는 게임을 개발하는데 모든 게임을 Java로 만든다. Revenge of the Titans는 Starcraft와 같은 전략 게임으로 너무 머리쓰지 않고 즐길 수 있는 게임이며 그래픽도 신선하다. 개발이 진행 중인 것으로 보이는 Urban Galaxy 라는 게임도 재미있을 것 같다. SF 영화를 보면 자주 등장하는 미래의 빌딩 숲을 날아다니는 자동차로 전투도 치르고 무역도 하며 캐릭터를 키우는 게임으로