Blu-ray BD-J Application Development using Java ME
Home --> Intro to BD-J
Introduction to BD-J
Note: All images, unless noted otherwise are used with permission from
the presentation "Java Technology Goes to the Movies: Java Technology
in Next-Generation Optical Disc Technologies: TS-7091, 2005" by Bill
Foote and Erik Moll.
- BDJ platform is derived from a specification called DVB-GEM, which
is the common core of broadcast interactive television. This re-use
is possible because both target the same functionality - audio-visual
content for the home.
- The reason BDJ is based on this is that:
- it allows re-use of existing concepts and packages;
- it saves time in terms of testing and designing;
- it allows interoperability between different medi - in this
case, between packaged product (blu-ray) and broadcast goods.
- Xlets (javax.tv.Xlet) are the basic entity in BD-J. Note the similarity
in name to Midlets (MIDP apps) and Applets. Unlike the latter two,
Xlets do not need a UI representation.
- Just like in many other Java ME environments, an Xlet has several
states - in this case, the Xlet can be in the loaded, paused, active
and destroyed states. It cycles between these states as needed.
- Here's the skeletal framework of an Xlet:
public class MyFirstXlet
implements javax.tv.xlet.Xlet
{
/**
* default constructor that
* takes no arguments.
*/
public MyFirstXlet()
{
}
/**
* Initialise the Xlet.
*/
public void initXlet(javax.tv.xlet.XletContext context)
throws javax.tv.xlet.XletStateChangeException
{
// Do nothing for now
}
/**
* Start the Xlet.
*/
public void startXlet()
throws javax.tv.xlet.XletStateChangeException
{
// Do nothing for now
}
/**
* Pause the Xlet.
*/
public void pauseXlet()
{
// Do nothing for now
}
/**
* Stop the Xlet.
*/
public void destroyXlet(boolean unconditional)
throws javax.tv.xlet.XletStateChangeException
{
// Do nothing for now
}
}
- As part of the CDC (Connected Device Configuration) of Java ME,
BDJ is required to be compliant with the Personal Basis Profile (JSR-129).
As part of the PBP (and below it the Foundation Profile), BDJ has
the following characteristics:
- The Foundation profile adds the following: io, lang, weak references,
math, net, permissions, code signing, text, util, jar, generic
collection framework
- The PBP adds the following: AWT (without widgets), beans runtime,
Xlet lifecycle model, inter-Xlet communication (which allows Xlets
residing on the same locale to communicate with one another)
- The BD-ROM, which is the physical packaged Blu-ray disc, has a physical
structure which has a specific relation to the movie objects underneath
it. A table maps the movie objects to the underlying video clips.
- The relation of Xlets to the application strucure of the BD-ROM.
Xlets are called to action by events occurring around them - for example,
by the selection of a movie title, or by the insertion of a new disc.
Xlets in turn can call other Xlets into play.
- Because Xlets (as part of the Personal Basis Profile) have no GUI
as noted above, additional classes are called into play for generating
animation and GUI. The BD-J uses the Havi UI device model and widget
set for remote control use, but it is extended to allow for the BD
supported resolutions and BD supported A/V controls.
- BDJ also has some cool new classes used for frame-accurate animation!
That is, these new classes allow one to synchronize accurately to
specific frames.
- There are two type of video synchronizations allowed, one called
"loose synchronization", which uses a call back method and is accurate
to within several frames of the event, and the other being "tight
synchronization", which uses the package org.bluray. Tight synchronization
allows applications to synchronize accurately to the exact frame using
timecodes from the package javax.media.Time of JMF (Java Media Framework).
Below is a representation of the frame-accurate animation process.
- Security in BDJ is based on the Java platform security model. That is, signed applications in JRAS get to do more stuff, such Read/Write access to local storage, network access, selection of other titles on the BD-ROM disc, and control of other running BD-J applications.
return to previous page.
Copyright © 2007 RimLife
Technologies LLC. Java ME and other terms are trademarks or
copyright of Sun Microsystems and/or other companies. Legal
Stuff.
|