藍光播放器內建 Java ME 平台稱為 BD-J(Blu-ray Disc Java),基於 CDC/Foundation Profile/Personal Basis Profile,並整合 GEM/MHP、Java TV、BD-J 專屬 API。本文為系列首篇,涵蓋硬體需求、平台能力、API 架構、配置檔版本、Xlet 生命週期,並帶領讀者撰寫第一支在 PS3 上執行的 BD-J 應用。
驗證工具:CyberLink BD Advisor(圖 2)



| 套件 | 用途 |
|---|---|
| org.bluray.application | 光碟插入/彈出事件通知 |
| org.bluray.media | 媒體控制:PiP、字幕、音軌 |
| org.bluray.net | 藍光定位器,選擇標題用 |
| org.bluray.storage | 查詢播放器可用儲存空間 |
| org.bluray.system | 系統暫存器存取 |
| org.bluray.ti | 標題資訊與中繼資料 |
| org.bluray.ui | 視頻幀同步動畫、進階 UI |
| org.bluray.vfs | 虛擬檔案系統操作 |
繼承自數位電視、機頂盒標準,包含 org.davic.*、org.dvb.*、org.havi.ui、javax.tv.*、java.awt、java.net、javax.microedition.io 等,功能相當於 Java SE 1.3 子集(無 JDBC、Swing、滑鼠導向 AWT)。
| 版本 | 代稱 | 關鍵需求 |
|---|---|---|
| Profile 1.0 | — | 基礎 BD-J 支援 |
| Profile 1.1 | Bonus View | PiP + 虛擬檔案系統 ≥256 MB |
| Profile 2.0 | BD-Live | Profile 1.1 全部 + 網路連線 + VFS ≥1 GB |
實作 javax.tv.xlet.Xlet(注意:從 Java TV 匯入,非 javax.microedition.xlet)。

initXlet(context) 完成,等待啟動startXlet() 執行中,可在 Paused↔Active 間多次切換destroyXlet(unconditional) 清理資源startXlet() 是檢查網路、資源的最佳時機。
package test;
import javax.tv.xlet.*;
import java.awt.*;
import org.havi.ui.*;
public class FirstBDJApp implements Xlet {
private static Font font;
private HScene scene;
private Container gui;
private String text = "My first BD-J app running on the PS3!";
public void initXlet(XletContext context) {
font = new Font(null, Font.PLAIN, 48);
scene = HSceneFactory.getInstance().getDefaultHScene();
gui = new Container() {
public void paint(Graphics g) {
g.setFont(font);
g.setColor(new Color(10, 10, 10));
g.fillRect(20, 20, getWidth() - 40, getHeight() - 40);
g.setColor(new Color(245, 245, 245));
int w = g.getFontMetrics().stringWidth(text);
g.drawString(text, (getWidth() - w) / 2, 500);
}
};
gui.setSize(1920, 1080);
scene.add(gui, BorderLayout.CENTER);
scene.validate();
}
public void startXlet() {
gui.setVisible(true);
scene.setVisible(true);
}
public void pauseXlet() {
gui.setVisible(false);
}
public void destroyXlet(boolean unconditional) {
scene.remove(gui);
scene = null;
}
}
無 Swing 元件,直接用 AWT Graphics 繪字。編譯打包成 JAR,燒錄到 BD-RE,放入 PS3 即可執行(圖 6)。

第二部分將介紹完整開發環境搭建(BD-J SDK、模擬器、燒錄流程)與遙控器事件處理範例。