Ci sono alcuni strumenti disponibili ( Excelsior JET , ecc.) che pretendono di trasformare le app Java in eseguibili nativi ( *.exe
). Tuttavia è mia comprensione che questi strumenti in realtà stanno solo creando wrapper nativi che invocano / eseguono java
da una shell o da una riga di comando.
Se questa comprensione non è corretta, non vedo come potrebbe essere. Se una JVM in esecuzione (processo java
) è essenzialmente un interprete ad alte prestazioni, carica bytecode da file di classe Java al volo, quindi non vedo come un'app Java (una raccolta di file bytecode che servono come input per una JVM) potrebbe mai essere veramente convertito in un eseguibile.
Questo perché il processo JVM è già un eseguibile nativo che accetta set di file bytecode come input. Per unire questi file bytecode e il processo JVM in un unico eseguibile nativo unificato non sembra possibile senza dover riscrivere completamente la JVM e de-railing dalle specifiche JVM.
Quindi chiedo: in che modo questi strumenti in realtà "trasformano" i file di classe Java in un eseguibile nativo o no?