Se eu tiver um arquivo de origem Java (* .java) ou um arquivo de classe (* .class), como posso convertê-lo em um arquivo .exe?
Eu também preciso de um instalador para o meu programa.
Se eu tiver um arquivo de origem Java (* .java) ou um arquivo de classe (* .class), como posso convertê-lo em um arquivo .exe?
Eu também preciso de um instalador para o meu programa.
Respostas:
A ferramenta Java Packager compila, empacota e prepara aplicativos Java e JavaFX para distribuição. O comando javapackager é a versão da linha de comandos.
- documentação da Oracle
O javapackager
utilitário é enviado com o JDK. Ele pode gerar arquivos .exe com a -native exe
bandeira, entre muitas outras coisas.
WinRun4j é um lançador de java para windows. É uma alternativa ao javaw.exe e oferece os seguintes benefícios:
- Usa um arquivo INI para especificar caminho de classe, classe principal, vm args, programa args.
- Nome executável personalizado que aparece no gerenciador de tarefas.
- Args adicionais da JVM para uso de memória mais flexível.
- Substituto de ícone incorporado para ícone personalizado.
- [mais pontos a seguir]
- Página de WinRun4J
WinRun4J é um utilitário de código aberto. Tem muitos recursos.
Empacota seu JAR, ativos e uma JVM para distribuição no Windows, Linux e Mac OS X, adicionando um arquivo executável nativo para que ele apareça como um aplicativo nativo. O Packr é mais adequado para aplicativos GUI.
- README do pacote
O packr é outra ferramenta de código aberto.
JSmooth é um wrapper executável Java. Ele cria lançadores nativos do Windows (padrão .exe) para seus aplicativos java. Isso torna a implantação do java muito mais fácil e fácil de usar, pois é capaz de encontrar qualquer VM Java instalada por si só.
- Site da JSmooth
O JSmooth é de código aberto e possui recursos, mas é muito antigo. O último lançamento foi em 2007.
O JexePack é uma ferramenta de linha de comando (ideal para scripts automatizados) que permite empacotar seu aplicativo Java (arquivos de classe), opcionalmente, juntamente com seus recursos (como GIF / JPG / TXT / etc), em um único EXE do Windows de 32 bits compactado , que é executado usando o Java Runtime Environment da Sun. Os aplicativos de console e de janela são suportados.
- Site do JexePack
O JexePack é um trialware. O pagamento é necessário para uso na produção e os arquivos exe criados com esta ferramenta exibem "lembretes" sem pagamento. Além disso, o último lançamento foi em 2013.
O InstallAnywhere facilita para os desenvolvedores a criação de software de instalação profissional para qualquer plataforma. Com o InstallAnywhere, você se adaptará rapidamente às mudanças do setor, entrará no mercado mais rapidamente e proporcionará uma experiência envolvente ao cliente. E conheça a vulnerabilidade dos componentes OSS do seu projeto antes de enviar.
- Site do InstallAnywhere
InstallAnywhere é um pacote comercial / corporativo que gera instaladores para programas baseados em Java. Provavelmente é capaz de criar arquivos .exe.
Como alternativa aos arquivos .exe, você pode criar um arquivo JAR que é executado automaticamente ao clicar duas vezes, adicionando um ponto de entrada ao manifesto JAR .
Uma excelente fonte de informações sobre esse tópico é o artigo da Excelsior " Converter Java em EXE - por que, quando, quando não e como ".
Consulte também o artigo complementar " Melhores ferramentas de conversão de JAR para EXE, gratuitas e comerciais ".
O Launch4j é uma ferramenta de plataforma cruzada para agrupar aplicativos Java distribuídos como jars em executáveis nativos leves do Windows. O executável pode ser configurado para procurar uma determinada versão do JRE ou usar uma versão em pacote configurável, e é possível definir opções de tempo de execução, como o tamanho inicial / máximo da pilha. O wrapper também fornece uma melhor experiência do usuário por meio de um ícone de aplicativo, uma tela inicial pré-JRE nativa, um nome de processo personalizado e uma página de download de Java, caso o JRE apropriado não possa ser encontrado.
- Site do Launch4j
ATUALIZAÇÃO: O GCJ está morto. Foi oficialmente removido do projeto GCC em 2016. Mesmo antes disso, foi praticamente abandonado por sete anos e, em qualquer caso, nunca foi suficientemente completo para servir como uma implementação Java alternativa viável.
Vá encontrar outro compilador Java AOT.
GCJ: O GNU Compiler for Java pode compilar o código-fonte Java no código da máquina nativa, incluindo executáveis do Windows.
Embora nem tudo em Java seja suportado pelo GCJ, especialmente os componentes da GUI (consulte Quais APIs Java são suportadas? Quão completa é a questão do suporte? Na FAQ ). Não usei muito o GCJ, mas pelo teste limitado que fiz com aplicativos de console, parece bom.
Uma desvantagem do uso do GCJ para criar um executável independente é que o tamanho do EXE resultante pode ser bastante grande. Uma vez, compilei um aplicativo de console trivial no GCJ e o resultado foi um executável de cerca de 1 MB. (Pode haver maneiras de contornar isso que eu não conheço. Outra opção seria programas de compactação executável.)
Em termos de instaladores de código aberto, o Nullsoft Scriptable Install System é um instalador com script. Se você estiver curioso, existem exemplos contribuídos pelo usuário sobre como detectar a presença de um JRE e instalá-lo automaticamente se o JRE necessário não estiver instalado. (Só para informar você, eu nunca usei o NSIS antes.)
Para obter mais informações sobre o uso do NSIS na instalação de aplicativos Java, consulte minha resposta para a pergunta " Qual é a melhor maneira de distribuir aplicativos Java? "
Você pode criar um arquivo em lotes com o seguinte código:
start javaw -jar JarFile.jar
e converta o .bat em um .exe usando qualquer conversor .bat para .exe.
Estamos usando o Install4J para criar instaladores para ambientes Windows ou Unix.
É facilmente personalizável até o ponto em que você deseja escrever scripts para ações especiais que não podem ser feitas com diálogos padrão. Mas, apesar de estarmos configurando os serviços do Windows com ele, estamos usando apenas componentes padrão.
Eu acho que o Launch4J é da mesma empresa (apenas o iniciador - sem instalador).
PS: infelizmente não estou sendo pago por esse endosso. Eu apenas gosto dessa ferramenta.
O Java Web Start mais recente foi aprimorado para permitir uma boa operação offline e também para a "instalação local". Vale a pena investigar.
EDIT 2018: O Java Web Start não é mais fornecido com os JDKs mais recentes. A Oracle está buscando um modelo "implemente seu aplicativo localmente com um JRE incluído".
Se você precisar converter todo o seu aplicativo em código nativo, ou seja, um EXE mais DLLs, existe o ExcelsiorJET . Achei que funciona bem e forneci uma alternativa ao empacotamento de um JRE.
Eu diria que o launch4j é a melhor ferramenta para converter um código-fonte java (.java) em arquivo .exe Você pode até compilar um jre para distribuição e o exe pode até ser iconificado. Embora o tamanho do aplicativo aumente, ele garante que o aplicativo funcione perfeitamente, mesmo que o usuário não tenha um jre instalado. Ele também garante que você seja capaz de fornecer o jre específico necessário para seu aplicativo sem que o usuário precise instalá-lo separadamente. Mas, infelizmente, o java perde sua importância. Seu suporte multiplataforma é totalmente ignorado e o aplicativo final é suportado apenas para Windows. Mas isso não é grande coisa, se você estiver atendendo apenas aos usuários do Windows.
Como alternativa, você pode usar algum tradutor java-to-c (por exemplo, JCGO ) e compilar os arquivos C gerados em um arquivo binário (.exe) nativo para a plataforma de destino.
Posso ser perdoado por ser contra a conversão de um programa java em um aplicativo .exe e tenho minhas razões. o principal é que um programa java pode ser compilado em um arquivo jar de vários IDEs. Quando o programa está no formato .jar, ele pode ser executado em várias plataformas, em oposição ao .exe, que seria executado apenas em um ambiente muito limitado. Sou a favor da idéia de que os programas Java não devem ser convertidos para o Exe, a menos que seja muito necessário. Pode-se sempre escrever arquivos .bat que executam o programa Java enquanto este é um arquivo jar.
se for realmente necessário convertê-lo em exe, o conversor Jar2Exe faz isso silenciosamente e também é possível anexar bibliotecas compiladas com o aplicativo principal.