BD-J

Last updated

BD-J, or Blu-ray Disc Java, is a specification supporting Java ME (specifically the Personal Basis Profile of the Connected Device Configuration or CDC) Xlets for advanced content on Blu-ray Disc and the Packaged Media profile of Globally Executable MHP (GEM).

Contents

BD-J allows for more sophisticated bonus content on Blu-ray Disc titles than standard DVD, including network access, picture-in-picture, and access to expanded local storage. Collectively, these features (other than internet access) are referred to as "Bonus View", and the addition of internet access is called "BD Live". BD-J was developed by the Blu-ray Disc Association. All Blu-ray Disc players supporting video content are required by the specification to support BD-J. [1] Starting on October 31, 2007, all new players are required to have hardware support for the "Bonus View" features, but the players may require future firmware updates to enable the aforementioned features. "BD Live" support is always optional for a BD player. [2]

Sony's PlayStation 3 has been the de facto leader in compliance and support of BD-J, adding Blu-ray Profile 1.1 support with a firmware upgrade used to showcase BD-Live at CES 2008.

BD-J Xlet capabilities

Content development

Content authors have a variety of development strategies available, including the use of traditional Integrated Development Environments (IDEs) like NetBeans or Eclipse, non-programming graphical environments similar to Macromedia Director, or via rendering engines which consume standard data formats such as HTML, XML, or SVG. Having a full programming environment available on every Blu-ray Disc player provides developers with a platform for creating content types not bound by the restrictions of standard DVD. In addition to the standard BD-J APIs, developers may make use of existing Java libraries and application frameworks, assuming they do not use features outside the constraints of the BD-J platform, include that Java ME only supports Java version 1.3 class files.

A set of freely available tools that allow Java developers to produce complete disc images incorporating BD-J is available from the HD Cookbook Project. [3] In order to test content in a typical development environment (MS Windows), one needs either a PlayStation 3 or a third-party software player for Windows, paying attention to player versions to ensure that the player supports BD-J. [4] [5] [6]

Because of the many different standards and components involved, creating unified documentation on BD-J has proven to be a challenge. [7] [8]

Sample code

The BD-J environment is designed to run Xlets with non-javax.* packages available to take advantage of the features particular to this platform beyond that defined by Java TV.

Even a simple example such as FirstBDJApp. [9]

A developer might choose to use not javax.* packages and instead use:

  1. HAVi classes in package tree org.havi.*: alternative classes to obtain, for example, an org.havi.ui.HScene far beyond what is provided by javax.tv.graphics.TVContainer (they are both extensions of java.awt.Container)
  2. Digital Video Broadcasting (DVB) classes in package tree org.dvb.*: alternative classes to, for example, the org.dvb.event.UserEventListener interface rather than java.awt.event.KeyListener for support for key presses and keycodes specific to popular CDC devices.
  3. Blu-ray Disc classes in the package tree org.bluray.*: the DAVIC and DVB classes depend upon to recognize additional events peculiar to the BD-J platform such as popup menus and to locate media on the Blu-ray disc.
  4. DAVIC API classes in package tree org.davic.*: A small set of classes wrapping or extending other network and media resources peculiar to interactive TV the HAVi, DVB and Blu-ray classes use for locators and specialized exceptions beyond the realm of JMF (such as content authorization).

A working example of a program using some features from each of the class trees would be the BdjGunBunny Xlet (a very simple version of Space Invaders using an image of a rabbit as the shooter and turtles as the targets) provided as an example in the Java ME 3.0 SDK.

importjavax.tv.xlet.XletContext;importorg.havi.ui.HScene;importorg.havi.ui.HSceneFactory;importjava.awt.Container;importjavax.tv.graphics.TVContainer;// Getting a container for the screen could bepublicvoidinitXlet(XletContextcontext){// Java TV API to be compatible with Java TVTVContainerscene=TVContainer.getRootContainer(context);// Or for BD-J, to utilize HAVi features not available in Java TVHScenescene=HSceneFactory.getInstance().getDefaultHScene();// Or perhaps more generally...Containercontainer=null;booleanrealBDJ=true;if(realBDJ)container=HSceneFactory.getInstance().getDefaultHScene();elsecontainer=TVContainer.getRootContainer(context);...}

And the same for the other non-javax.* packages. Likewise, when trying to play a video, one might call the Blu-ray and DAVIC utility rather than using generic JMF:

importjavax.media.Player;importorg.bluray.net.BDLocator;importorg.davic.media.MediaLocator;MediaLocatorstars=newMediaLocator(newBDLocator("bd://0.PLAYLIST:00003"));Playerplayer=Manager.createPlayer(stars);// Rather than traditional and portable but more limited pure JMFimportjava.net.URL;importjavax.media.Manager;importjavax.media.Player;PlayermediaPlayer=Manager.createRealizedPlayer(newURL("file:/mymovie.mov"));

See also

Related Research Articles

Java Platform, Micro Edition or Java ME is a computing platform for development and deployment of portable code for embedded and mobile devices. Java ME was formerly known as Java 2 Platform, Micro Edition or J2ME.

Java Platform, Standard Edition is a computing platform for development and deployment of portable code for desktop and server environments. Java SE was formerly known as Java 2 Platform, Standard Edition (J2SE).

<span class="mw-page-title-main">Swing (Java)</span> Java-based GUI toolkit

Swing is a GUI widget toolkit for Java. It is part of Oracle's Java Foundation Classes (JFC) – an API for providing a graphical user interface (GUI) for Java programs.

The Connected Device Configuration (CDC) is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CDC is combined with one or more profiles to give developers a platform for building applications on embedded devices ranging from pagers up to set-top boxes. The CDC was developed under the Java Community Process as JSR 36 and JSR 218.

The Connected Limited Device Configuration (CLDC) is a specification of a framework for Java ME applications describing the basic set of libraries and virtual-machine features that must be present in an implementation. The CLDC is combined with one or more profiles to give developers a platform for building applications on embedded devices with very limited resources such as pagers and mobile phones. The CLDC was developed under the Java Community Process as JSR 30 and JSR 139.

Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the Java Platform, Enterprise Edition. It is an MVC web framework that simplifies the construction of user interfaces (UI) for server-based applications by using reusable UI components in a page.

Java TV is a Java-based software framework designed for use on TV set-top boxes, based on components called Xlets. It is currently used only on the Connected Device Configuration, specifically for iTV applications development.

MPEG transport stream or simply transport stream (TS) is a standard digital container format for transmission and storage of audio, video, and Program and System Information Protocol (PSIP) data. It is used in broadcast systems such as DVB, ATSC and IPTV.

The event dispatching thread (EDT) is a background thread used in Java to process events from the Abstract Window Toolkit (AWT) graphical user interface event queue. It is an example of the generic concept of event-driven programming, that is popular in many other contexts than Java, for example, web browsers, or web servers.

Globally Executable MHP (GEM) is a DVB specification of a Java based middleware for TV broadcast receivers, IPTV terminals and Blu-ray players. GEM is an ETSI standard and an ITU "Recommendation”. GEM defines a set of common functionalities which are independent from the signaling and protocols of a specific transmission network and enables to write interoperable Java applications for TV. GEM is not intended to be directly implemented, but rather forms the basis for broader specifications targeting a particular network infrastructure or class of device. GEM defines profiles for different device classes (targets) – these define the set of available features of GEM for this device class. Currently GEM defines targets for broadcast, packaged media (Blu-Ray) and IPTV. Combinations of these targets can be combined into a hybrid GEM platform, which enables to build devices with multiple network interfaces, such as a combined broadcast/IPTV set-top box.

The Java Media Framework (JMF) is a Java library that enables audio, video and other time-based media to be added to Java applications and applets. This optional package, which can capture, play, stream, and transcode multiple media formats, extends the Java Platform, Standard Edition and allows development of cross-platform multimedia applications.

An Xlet is very similar to a Java applet and is originally introduced in Sun Microsystems's Java TV specification to support applications for Digital TV. Though Xlet looks superficially different from other application models in Java such as applet and MIDlet, it is actually meant to be a generalization of such models. The X in Xlet means an unknown, meaning that the Xlet framework may be used in any context rather than specific to Digital TV. Accordingly, Xlet was later re-introduced as a part of the Personal Basis Profile in the javax.microedition.xlet package, which is slightly different from the original design in the Java TV specification.

Layout managers are software components used in widget toolkits which have the ability to lay out graphical control elements by their relative positions without using distance units. It is often more natural to define component layouts in this manner than to define their position in pixels or common distance units, so a number of popular widget toolkits include this ability by default. Widget toolkits that provide this function can generally be classified into two groups:

Comparison of the Java and .NET platforms.

<span class="mw-page-title-main">Blu-ray</span> Digital optical disc format

Blu-ray is a digital optical disc data storage format designed to supersede the DVD format. It was invented and developed in 2005 and released worldwide on June 20, 2006, capable of storing several hours of high-definition video. The main application of Blu-ray is as a medium for video material such as feature films and for the physical distribution of video games for the PlayStation 3, PlayStation 4, PlayStation 5, Xbox One, and Xbox Series X. The name refers to the blue laser used to read the disc, which allows information to be stored at a greater density than is possible with the longer-wavelength red laser used for DVDs.

The Java Class Library (JCL) is a set of dynamically loadable libraries that Java Virtual Machine (JVM) languages can call at run time. Because the Java Platform is not dependent on a specific operating system, applications cannot rely on any of the platform-native libraries. Instead, the Java Platform provides a comprehensive set of standard class libraries, containing the functions common to modern operating systems.

The Image Mastering Application Programming Interface, or IMAPI, is a component of Microsoft Windows operating system used for CD and DVD authoring and recording.

Interactive television standards are standards for television broadcasting that are designed to add modes of interaction and feedback mechanisms, thereby extending the traditional television experience.

.m2ts is a filename extension used for the Blu-ray disc Audio-Video (BDAV) MPEG-2 Transport Stream (M2TS) container file format. It is used for multiplexing audio, video and other streams, such as subtitles. It is based on the MPEG-2 transport stream container. This container format is commonly used for high-definition video on Blu-ray Disc and AVCHD.

<span class="mw-page-title-main">Abstract Window Toolkit</span> Java-based GUI toolkit

The Abstract Window Toolkit (AWT) is Java's original platform-dependent windowing, graphics, and user-interface widget toolkit, preceding Swing. The AWT is part of the Java Foundation Classes (JFC) — the standard API for providing a graphical user interface (GUI) for a Java program. AWT is also the GUI toolkit for a number of Java ME profiles. For example, Connected Device Configuration profiles require Java runtimes on mobile telephones to support the Abstract Window Toolkit.

References

  1. "Blu-ray BD-J Application Development using Java ME". Archived from the original on 2008-09-11. Retrieved 2008-10-21.
  2. "Blu-ray Disc Assn. promotes new Bonus View".
  3. [hdcookbook.jovial.com/ HDCookbook for BD-J]
  4. "Blu-ray Disc Java and GEM/MHP/OCAP Authoring Notes and Guidelines". Archived from the original on 2008-12-24. Retrieved 2008-10-21.
  5. Getting (BD-J) PC Player software Archived 2008-12-24 at the Wayback Machine - mentions that special "developer versions" of the play might be required
  6. HelloWorld BD-J Application: Your first cup for the next generation DVD Archived 2009-02-07 at the Wayback Machine - includes notes on enabling remote debugging or logging with PC players
  7. Building Javadoc API Reference Documentation for Blu-ray Disc Application Development
  8. "Getting a BD-J Platform Definition". Archived from the original on 2008-12-24. Retrieved 2008-10-21.
  9. Blu-ray Disc Application Development with Java ME, Part 1: Creating Your First Application Bruce Hopkins, September 2008