Java 強調平台無關性,導致直接存取硬體(如 USB)困難。USB 協議複雜,涉及主控制器、Hub、端點、四種傳輸類型(控制、批量、中斷、等時)。兩大開源專案試圖填補此缺口:jUSB (SourceForge) 與 JSR-80 (javax.usb) (Java 社群標準化)。
| 套件 | 說明 |
|---|---|
usb.core | 核心 API:Host、Bus、Device、Configuration、Interface、Endpoint 等介面與類別。 |
usb.linux | Linux 實作,透過 usbdevfs 存取。 |
usb.windows | Windows 實作(早期階段)。 |
usb.remote | RMI 遠端存取 USB 裝置。 |
usb.util | 工具類:韌體更新、XML 轉儲、Bulk 轉 Socket。 |
usb.devices | 特定裝置驅動範例(柯達相機、Rio MP3)。 |
usb.view | Swing USB 樹瀏覽器示例。 |
HostFactory:啟動取得 Host 物件。Host:代表 USB 控制器,含一或多個 Bus。Bus:連接一組 USB 裝置。Device:USB 裝置,可取得 DeviceDescriptor、Configuration。Configuration:裝置配置,含多個 Interface。Interface:一組端點,對應一個功能單元。Endpoint:資料傳輸端點,支援控制/批量/中斷傳輸。Host host = HostFactory.getHost();Bus → Root Hub (Device)。Configuration、Interface、Endpoint。Endpoint.open()、read()/write())。javax.usb。javax.usb。兩專案在 Linux 上相對成熟,Windows 支援較弱。隨著 USB 在周邊裝置普及,Java 存取 USB 需求增長,期待標準化 API 成熟並納入 JDK。