Getting Started
Introduction
The Blu-ray platform is unique and has its own advantages compared compared to PC and video game consoles. Coding a Blu-ray application or video game is about knowing the limitations, and taking advantage of the options you have. Limitations breed creativity. This guide is for hobbyists and developers interested in creating custom Blu-ray applications and games, not just standard movie playback. Blu-ray applications uses the Blu-ray disc.
Blu-ray Overview
Blu-ray is a 32-bit multimedia platform for high definition movies, surround sound music, interactive video games and applications. A Blu-ray application (BDMV) uses two interactive modes, HDMV and BD-J, HDMV is primary for movie titles, while BD-J is primary for advanced titles such as video games or movies with fancy menus.![]() |
| Blu-ray Platform Overview |
Coding/Programming
HDMV apps are programed using static navigation commands using GPRs and PSRs. BD-J apps uses the Java programing language, but since BD-J is based on Java ME, it's restricted to Java 1.3. Optionally, XML can be used with Java in BD-J via parsing.
Media Codecs
Controls
See: Controller
Limitations
The Blu-ray format comes with limitations such as memory constraints, so you need to be creative and conservative.
See: Memory & Limitations
BD-J Build Tools
To compile your BD-J project, you simply need to link the BDJ.jar file and configure javac to use 1.3 for both source and target compatibility. Strictly speaking, the official procedure requires gathering various stub files from multiple vendors and assembling them to create the BDJ.jar file yourself.
However, this "proper" protocol is no longer practical because many of those original stub files have disappeared from the internet, rendering most online tutorials obsolete. Fortunately, you can bypass this process by sourcing a pre-built BDJ.jar from modern alternatives, such as the Minimal BD-J SDK or the internal files of media player software like CyberLink PowerDVD.
Once you have the BDJ.jar, integrate it into your compilation process by adding it to your classpath. You can use the following javac command to target the appropriate environment:javac -source 1.3 -target 1.3 -cp path/to/bdj.jar path/to/sourcefiles/*.java
After successful compilation, you must package your class files into a JAR file. Note that BD-J applications specifically require a "permission request file" (typically an XML-based PRF) to be included within this JAR for proper execution on Blu-ray players. Detailed specifications for this file can be found in the documentation of the minimal BD-J SDK🔗.
Because you are using a standalone JAR rather than an official development kit, you will not have access to native BD-J Javadocs. However, since the platform is based on Java 2 SE v1.3.1, you can use standard Java 1.3 documentation for most general tasks. For specialized BD-J API calls, your best resource is to examine the source code of established BD-J projects.
You can use commercial products for Blu-ray application development:
- Scenarist BD: Top class professional authoring software for Blu-ray and UltraHD Blu-ray. $$$
- Adobe Encore: Discontinued. Professional Blu-ray disc authoring. HDMV only.
- Blu-Disc: Cheaper alternative to Scenarist, supports both BD-J and HDMV.
Free Blu-ray professional authoring:
- BDedit 🔗: Professional editor, supports HDMV programming, but BD-J programming must be compiled using a different program. Old version free, but newest version requires donation payment.
- BD-J SDK for Linux 🔗: Free and open-source SDK for building BD-J ISO images on GNU/Linux
Test Tools
For testing you can use hardware media players or emulators. Simply open the Blu-ray folder or ISO file.
Emulators & Players for Testing
- CyberLink PowerDVD: Windows only, has the strongest accuracy and reliability for development/testing. $100
- JRiver Media Center: Cross-platform, with solid menu/BD-J support on Windows As of Version M24, Secondary Video/Audio is not supported yet. $124
- VLC Player: Not recommended for full testing due to bugs and compatibility issues with BD-J. HDMV support is "mostly" fine but with limited controls. Secondary Video/Audio not supported. Free
Hardware Players for Testing
- Dune HD Pro Vision 4K Solo/Real Vision 4K: Offers best-in-class BD-J support (BonusView, BD-Live), fast playback from either BD ISO files or BDMV folders via local drives (USB/SATA) or network (SMB/NFS).
- Dune HD Max (or older Signma-based models): Built-in optical drive + strong BD-J for both physical discs and full structures (ISO/BDMV folders) from HDD/Network. Full support for menus, BonusView and BD-Live, solid for hardware accurate testing. However, newer models are much faster.
- Oppo UDP-203/205 (or clones): Supports BDMV folders, but requires placing the folder structure inside an "AVCHD" folder (uppercase exact spelling) for network shares (SMB/NFS) or USB. BD ISO files are not supported unless jail broken. Unsupported models can also be jail broken, see: https://www.oppo-jb.com/🔗
![]() |
| You can connect a computer to a compatible Blu-ray player via SMB/NFS to run and test your BD app, and easily edit BDMV folders. |
BD-J Signing
It's necessary to sign your Xlet for a simple app/game; signing is only necessary when/if you want to:
- Access files on the disc (outside the JAR)
- Use network (e.g. for online highscores, or for a secondary WiFi device)
Meaning you don't have to worry about signing at all at first. It is something you can look into later - if needed. Your application or game will run fine without signing it.
BD-J Hello World
Here's a short "Hello World" example from Blu-Play.com
| Example Code "Hello World" |
|---|
|
This code was written by Mistalu from Blu-Play.com🔗
HDMV Code Example
Here's a short example of HDMV commands in a Movie Object file.
| Example Code |
|---|
|
Here's the same commands in it's hexadecimal values (colored).
| Example Code |
|---|
|
The Jump Title 1 command jumps to the BDMV application's Title. This is useful for making a simple BD-J title. A single BD-J title is located in the BD-J Object file and will execute a Java Xlet.
Popular Pages
-
BD-J is an interactive mode intended for advanced interactivity, such as fancy menus and video games. It is more advanced than HDMV mode as...
-
HDMV (High Definition Movie) mode is one of the interactive modes used in BD applications. It is similar to the interactivity used on DV...
-
Oppo BDP-103 and BDP-103D are high-end Blu-ray players manufactured by Chinese company, Oppo Inc, who are known for their high quality Blu...


