APIs
BD-J mode is designed for custom flexible programming. It includes a vast collection of API packages that offer a range of functionalities for developers to work with. These APIs enable developers to create engaging and interactive applications with features such as graphics, audio, video, menus, and more.
Personal Basis Profile
BD-J's core computing platform is built upon Personal Basis Profile 1.0., which consists of Foundation Profile 1.0 and Connected Device Configuration 1.0.
-
java.awt and sub-packages: Contains a low-level API for drawing graphics into the screen, java.awt.Graghics2D. Also contains the infrastructure for keypresses from a remote and a mouse or keyboard.
-
java.io: Contains APIs for reading and writing data streams to files including to the player's persistent storage.
-
java.net: Provides APIs for opening sockets, working with URLs, and HTTP/HTTPS protocols on networked devices.
-
java.lang and java.math: Gives you basic data types, threads, and exceptions.
-
java.until: Gives
utility classes for things like hashtables, lists, and sorting, which
also has subpackages to read and write ZIP and JAR files.
-
java.security: This
package provides cryptographic functions. These functions may be used
for secure transactions, and to send data securely, with more control
than provided with the https protocol.
-
java.beans: Provides runtime support for the JavaBeans component framework. Useful for building component libraries.
-
java.text: Supports formatting text and numbers.
-
java.rmi and javax.microedition:
Provides the underlying support for the Xlet application model and
inter-xlet communication. In PBP, java.rmi is very small and does not
provide support for networked Remote Method Invocation communication
with standard (desktop) Java.
-
javax.microedition.io: An alternative to java.net that is compatible with the APIs for mobile phones.
Java TV
BD-J is based on Java TV 1.1. It's an API used on American and European Cable TV Set-top-boxes.
-
java.tv.xlet: Defines the Xlet application model.
-
javax.tv.service:
Provides APIs that select a service. In the world of Broadcast TV, the
term "service" is typically used to refer to a TV channel. In BD-J, the
Java TV service API is mapped to Blu-ray titles. A single Blu-ray disc
can have more than one title. It can be used, for example, if a BD-ROM
presents several episodes of a TV show.
-
javax.tv.locator: Defines the Locator class to address TV resources like services. A locator is a string that is formatted similarly to a URL.
-
javax.media and javax.tv.media: These packages define an interface called a Player.
It represents a place where audio/video content can be presented and
governed by any number of controls. A single control sets one or more
playback parameters, like audio volume or the size and position of the
video on the screen.
- javax.tv.util, javax.tv.net, and javax.tv.graphics: These packages contain a few classes that are useful for interoperability with the MHP systems that predate PBP. However, for developers, these may be considered dated.
GEM & MHP
BD-J is based on the GEM and MHP standards. MHP is an open
middleware system standard designed by Europe's DVB for interactive
digital television. The MHP enables the reception and execution of
interactive, Java-based applications on a TV set. Globally Executable
MHP (GEM) is an international standard based on MHP for the non-European
TV markets often used on terrestrial, satellite, and cable set-top
boxes and TV sets for interactive content. BD-J is based on GEM 1.0.2
which in turn is based on MHP 1.0.3. Other GEM platforms equivalent to
BD-J are DVB-J (Europe), OCAP-J (Cable), ACAP-J (N. America), ARIB-J
(Japan), and Ginga-J (S. America). Since all these platforms are based
on the common GEM-core, it made it possible for developers to write Java
applications that will run interoperably on all these systems. The
GEM/MHP specifications include APIs from other organizations - HAVi
graphics and DAVIC media controls.
-
org.havi.ui: This
package contains APIs for manipulating the screen resolution and other
parameters of the graphics device. It also defines the main frame-like
container an Xlet uses for on-screen drawing, called an HScene.
Additionally, it contains widgets, like buttons and text entry screens
for t-commerce (e-commerce for the TV screen). HAVi is also where some
keycodes are defined, like VK_COLORED_KEY_0, and contains an API to tell you the color of each colored key.
-
org.davic.resources: A
set of APIs for arbitrating resource conflicts between different Xlets
and other parts of the system. When a BD-J disc is playing, it "owns"
the hardware. The resource management API may not be frequently
required.
-
org.davic.media and org.davic.net: Contains superclasses for things defined elsewhere in MHP.
-
org.dvb.application: Provides APIs for launching one Xlet from another.
-
org.dvb.dsmcc: DSMCC
(Digital Storage Management, Command and Control) is a mechanism MHP
uses to broadcast a filesystem hierarchy. In BD-J, it's an API used to
mount a filesystem that is contained in a JAR file. It also provides
the DSMCCStreamEvent API,
which a developer can use to receive triggers or call-backs tied to
video. If interoperability with other GEM systems is not a concern, BD-J
defines a simpler way in org.bluray.
-
org.dvb.ui: Contains
the font loading class, FontFactory. It also contains a few
miscellaneous definitions that are duplicated in PBP; for BD-J that can
be considered obsolete.
- org.dvb.event: Contains an important API that lets an application register for remote control keypresses with being subject to AWT focus model.
-
org.dvb.io.ixc: An
entry point for inter-xlet communication. The internal mechanism for IXC
is provided in PHP, under javax.microedtion.xlet.ixc.
-
org.dvb.io.persistent: A package that contains support for controlling access to the persistent storage.
-
org.dvb.media: Provides Java Media Framework controls that can be used to manage aspects of playback, such as subtitles.
- org.dvb.lang and org.dvb.net: These packages contain classes that are useful for interoperability with the MHP systems that predate PBP. However, for developers, these may be considered dated.
BD-ROM Specification, Part 3-2
Part 3-2 of the BD-ROM Format, Part 3, Audio Visual Basic Specifications, contains the Blu-ray's device-control APIs.
-
org.bluray.media:
Contains Java Media Framework controls. These include controls for
picture-in-picture, subtitles, camera angles, audio gain and panning,
and searching for playlist marks on the disc.
-
org.bluray.ti:
Contains title information and control APIs. This is where you can find
metadata about a disc, including play items and playlists, and
information about the title(s) on a disc. A multi-title disc might
contain many episodes of a TV show and each episode is a title. Or a
multi-disc title might have two movies in one disc, and each one is a
title. The ti package also
contains API used to manage disc insertion and ejection, which can be
useful for a disc-unbound application that controls a multi-disc product
such as a serial TV show or a multi-disc video game.
-
org.bluray.vfs:
Allows control of the Virtual File System (VFS) and the disc's
filesystem directory. VFS allows an application to download or install
content to the player's storage device (HDD, SSD, Flash, USB, etc.)
Then, the installed/downloaded content is integrated with the filesystem
of the disc.
-
org.bluray.ui: Contains classes for an application to perform animations that are in synch to the video frames.
-
org.bluray.storage: This package provides APIs to retrieve information on available space in persistent storage.
-
org.bluray.system:
This lets you access the player's GPRs and PSRs. GPRs 4091-4095 are
reserved for Java code for BDJ Mode. GPRs 1000-4005 can be used and
controlled from Java code. It can be used to control the player or HDMV
applications.
-
org.bluray.application: Narrowly extends one class of the org.dvb.application.
- org.bluray.net: Contains BD-J's concrete class that implements the Java TV locator defined in javax.tv.locator.
Author(s) : Æ Firestone
Popular Pages
-
Type Programming /scripting language Paradigm Multi-paradigm: event-driven, functional, imperative, procedural, object-orie...
-
HDMV (High Definition Movie) mode is an interactive framework with the well-known features of DVD, but it's more advanced than DVD m...
-
MPEG-2 Transport Stream Type of format Container format for video, audio, data First released August 2004 Latest relea...