Existem algumas ferramentas ( Excelsior JET , etc.) que afirmam transformar aplicativos Java em executáveis nativos ( *.exe
). No entanto, entendo que essas ferramentas realmente estão apenas criando wrappers nativos que invocam / executam a java
partir de um shell ou linha de comando.
Se esse entendimento estiver incorreto, não vejo como poderia ser. Se uma JVM ( java
processo) em execução é essencialmente um intérprete de alto desempenho, carregando o bytecode de arquivos de classe Java em tempo real, não vejo como um aplicativo Java (uma coleção de arquivos de bytecode que serve como entrada para uma JVM) poderia ser verdadeiramente convertido em um executável.
Isso ocorre porque o processo da JVM já é um executável nativo que recebe conjuntos de arquivos de bytecode como entrada. Mesclar esses arquivos de bytecode e o processo da JVM em um único executável nativo unificado não parece possível sem reescrever completamente a JVM e remover os trilhos da especificação da JVM.
Então, pergunto: como essas ferramentas realmente "transformam" os arquivos de classe Java em um executável nativo ou o fazem?