Javaアプリをネイティブ実行可能ファイルに変換することを主張するツール(Excelsior JETなど)がいくつかあります(*.exe
)。ただし、これらのツールは実際にはシェルまたはコマンドラインから起動/実行するネイティブラッパーを作成しているにすぎないことを理解していますjava
。
その理解が間違っている場合、それがどうなるかわかりません。実行中のJVM(java
プロセス)が本質的に高性能インタープリターであり、Javaクラスファイルからバイトコードをオンザフライでロードする場合、Javaアプリ(JVMへの入力として機能するバイトコードファイルのコレクション)がどのようになるかわかりません本当に実行可能ファイルに変換されます。
これは、JVMプロセスがすでにバイトコードファイルのセットを入力として受け取るネイティブ実行可能ファイルであるためです。これらのバイトコードファイルとJVMプロセスを単一の統合されたネイティブ実行可能ファイルにマージすることは、JVMを完全に書き直し、JVM仕様から脱線しなければ不可能だと思われます。
だから私は尋ねる:これらのツールは実際に Javaクラスファイルをネイティブの実行可能ファイルにどのように「変換」するのか?