Il existe quelques outils ( Excelsior JET , etc.) qui prétendent transformer les applications Java en exécutables natifs ( *.exe
). Cependant, je crois comprendre que ces outils ne font que créer des wrappers natifs qui invoquent / s'exécutent à java
partir d'un shell ou d'une ligne de commande.
Si cette compréhension est incorrecte, je ne vois pas comment cela pourrait être. Si une JVM ( java
processus) en cours d' exécution est essentiellement un interpréteur haute performance, chargeant du bytecode à partir de fichiers de classe Java à la volée, je ne vois pas comment une application Java (une collection de fichiers de bytecode qui servent d'entrée à une JVM) pourrait jamais être vraiment converti en un exécutable.
En effet, le processus JVM est déjà un exécutable natif qui prend en entrée des ensembles de fichiers de bytecode. Pour fusionner ces fichiers de bytecode et le processus JVM en un seul exécutable natif unifié ne semble pas possible sans réécrire complètement la JVM et le dé-railing de la spécification JVM.
Je demande donc: comment ces outils "transforment" réellement les fichiers de classe Java en un exécutable natif, ou le font-ils?