Esistono pochi strumenti ( Excelsior JET , ecc.) Che pretendono di trasformare le app Java in eseguibili nativi ( *.exe
). Tuttavia, ho capito che questi strumenti stanno davvero creando involucri 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 ( java
processo) in esecuzione è essenzialmente un interprete ad alte prestazioni, caricando al volo il bytecode dai file di classe Java, non vedo come un'app Java (una raccolta di file bytecode che fungono da input per una JVM) potrebbe mai essere veramente convertito in un eseguibile.
Questo perché il processo JVM è già un eseguibile nativo che accetta come input insiemi di file bytecode. Unire quei file bytecode e il processo JVM in un unico eseguibile nativo unificato non sembra possibile senza riscrivere completamente la JVM e de-railing dalle specifiche JVM.
Quindi chiedo: in che modo questi strumenti "trasformano" effettivamente i file di classe Java in un eseguibile nativo o lo fanno?