100% Pure JavaでJPEG XLをデコードするオープンソースライブラリ「jxl-java」を公開
~Rust製デコーダーをWebAssembly経由でJavaバイトコード化、一行でJPEG XLの読み込みに対応~
NTTレゾナントテクノロジー株式会社(本社:東京都千代田区大手町、代表取締役社長:三澤 淳志、以下「当社」)は、次世代画像フォーマットJPEG XLをJava標準の画像入出力API(ImageIO)で読み込めるオープンソースライブラリ「jxl-java」をGitHubにて公開しました。Apacheライセンスで提供され、商用・非商用を問わずに無償でご利用いただけます。
GitHub: https://github.com/nttr-tech/jxl-java
1. 背景:JavaでJPEG XLを扱う「最後の壁」
JPEG XL(ISO/IEC 18181)は、高圧縮・高画質に加え、可逆/非可逆圧縮、HDR・広色域、アルファチャンネル、既存JPEGの可逆再圧縮までを1つのフォーマットでカバーする次世代画像フォーマットです。2023年にSafariが正式サポートし、ChromeやFirefoxでも対応が進むなど、採用判断に備えるべきフェーズに入っています。
一方、Java標準ライブラリはJPEG XLに対応しておらず、従来の現実的な選択肢はC++製リファレンス実装(libjxl)をJNI経由で呼び出す方式でした。この方式には次の課題があります。
-
OS・CPUアーキテクチャごとにネイティブバイナリを用意・配布する運用負荷
-
ネイティブコードのクラッシュや脆弱性がJVMプロセス全体に波及するリスク
-
外部からアップロードされた画像など、信頼できない入力を扱うサーバー用途での障害範囲の大きさ
「jxl-java」は、この課題を「Rust × WebAssembly × Chicory AOT」という構成で解決します。
2. 技術的特長
(1)100% Pure Java ― JARひとつで全OS・全CPUに配布可能
Google Researchが開発したRust製JPEG XLデコーダー jxl-rs をWebAssemblyにコンパイルし、WebAssemblyランタイム Chicory のAOTコンパイラでビルド時にJavaバイトコード(classファイル)へ事前変換しています。実行時にはネイティブライブラリもJNIも一切使用しません。配布物はJARのみで、OS・CPUアーキテクチャを問わず動作します。
(2)メモリ安全性とサンドボックスによる障害の隔離
デコーダー本体はメモリ安全なRustで書かれ、さらにJVM内のWebAssemblyサンドボックス内で実行されます。不正な入力による異常はJVMプロセスを巻き込まず、Javaの例外として隔離されます。アップロード画像の受け入れなど、信頼できない入力を扱う用途に適した設計です。
(3)導入後のコードは「従来のImageIO」のまま
ImageIOのService Provider Interfaceにより自動登録されるため、初期化コードは不要です。JARをクラスパスに置くだけで、従来のJava読み込みコードでそのままJPEG XLに対応できます。
java

(4)実用性へのこだわり
-
ピクセル変換の最小化:デコーダーはWebAssembly内で直接、事前乗算済みBGRAを出力。リトルエンディアンのメモリ配置を利用してARGB intへコピー中心で変換し、Java 2Dが最速で合成できる TYPE_INT_ARGB_PRE の BufferedImage を生成します。
-
カラーマネジメント:広色域やICCプロファイル付き画像は ICC_ColorSpace + ColorConvertOp でsRGBへ変換し、表示結果の一貫性を確保。壊れたプロファイルの場合は変換をスキップしてデコードを継続します。
-
スレッド安全性:WebAssemblyモジュールの解析はJVMごとに1回。デコードごとに新規WebAssemblyインスタンス(生成はサブミリ秒)を使うため、状態を共有せず安全に並列実行できます。
-
2つの配布形態:通常版JARに加え、Chicoryランタイムを内部パッケージへシェーディングした自己完結型fat JARを提供。アプリケーション側の既存の依存関係と衝突しません。
3. 適した用途
安全性・可搬性を優先する読み込み用途 ― サムネイル生成、アップロード画像の受け入れ、デスクトップ表示、マルチOS配布 ― に適しています。大量バッチ変換や低遅延が最優先の用途や、JPEG XLエンコードには現時点では向きません。
4. 動作環境
-
実行時:Java 11以降
-
ビルド時:JDK 21以降 + Rustツールチェーン(wasm32-unknown-unknown ターゲット)
5. 今後について
当社は本ライブラリをオープンソースとしてメンテナンスしていく予定でコミュニティからのIssue・Pull Requestを歓迎します。今後はWasm SIMD対応による高速化、16bit/HDR出力への対応などを検討していきます。
このプレスリリースには、メディア関係者向けの情報があります
メディアユーザー登録を行うと、企業担当者の連絡先や、イベント・記者会見の情報など様々な特記情報を閲覧できます。※内容はプレスリリースにより異なります。
すべての画像
- 種類
- 商品サービス
- ビジネスカテゴリ
- システム・Webサイト・アプリ開発
- ダウンロード
- プレスリリース素材
このプレスリリース内で使われている画像ファイルがダウンロードできます
