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.

  1. 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.

  2. 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.


  3. 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.

  4. 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.


  5. 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
      }
    
    }
    


  6. 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)


  7. 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.

  8. 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.



  9. 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.

  10. 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.

  11. 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.



  12. 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.