JavaFX 27がRaspberry Pi 5でネイティブ起動、ハイエンドPCのjlinkを凌駕

JavaFX 27 Native Image on a Raspberry Pi 5

JavaFX 27がRaspberry Pi 5でネイティブ起動、ハイエンドPCのjlinkを凌駕

GraalVM Native ImageでJavaFX 27をAOTコンパイルし、Raspberry Pi 5上で動作させた。起動時間はjlink比で86%短縮の0.5秒、初回訪問も最大91%削減。メモリ使用量も半減し、ハイエンドRyzen 9でのjlink+CDS(1.3秒)より高速だ。既存ツールの制約を超えるため、筆者らはStaticFXを開発。メタデータ、静的ライブラリ、統合グルーの3課題を解決し、最新のOracle GraalVMとJavaFX 27をデスクトップで動かす方法を解説する。

実際、ハイエンドのRyzen 9 9950Xデスクトップでjlink + CDSを使ってAtlantaFXサンプラーを起動すると、同じアプリケーションを小さなRaspberry Pi 5上でAOTコンパイルして実行する(0.5秒)よりも2.5倍以上時間がかかる(1.3秒)。
  1. exabrial

    JavaFXに必要だと思うことの一つは、DIフレームワークとの統合だ!まさにそれをやるDiFxというプロジェクトを始めた:https://github.com/exabrial/DiFx

    これによりJavaFXでの状態と共有データの管理がずっと快適になる。そうした関心事をコンテナに任せられるからね。CDIはポータブル拡張とスコープ管理による広範な機能、さらに同期・非同期のイベントフレームワークも提供する。

    問題は、これを試す「実生活」のプロジェクトがないことだ。だから開発はちょっと停滞気味なんだよね。

  2. geokon

    これを書いてくれてありがとう!まだ多くの前提知識を仮定しているけど、こうした問題に取り組むための良い出発点だ。JavaFXが異なるプラットフォームでどう動くかは、外から見ると本当に黒魔術のように見える。僕はcljfxを使ってClojureでアプリを書いた。jpackageでパッケージ化してLinux/Windows/macOSで動かせる…動かすのはかなり簡単だ。でも標準的なプラットフォームから一歩外れると、とたんに複雑になる。Androidやネイティブビルドに挑戦しようとすると、突然いくつかのビルドシステムとJVM内部の専門家にならなければならなくなる。

  3. giancarlostoro

    どうやらJavaFXは、OracleがJDKから吐き出した当時にみんなが思ったほど死んではいなかったらしい。今では喜んでサポートを提供してくれるが、誰がOracleとベッドを共にしたいと思うだろうか。

    これは本当に洗練されて見える。JavaFXが正しくやったことの一つはCSSサポートだ。

この日のほかの記事

2026-09-22