Si tengo un archivo fuente Java (* .java) o un archivo de clase (* .class), ¿cómo puedo convertirlo en un archivo .exe?
También necesito un instalador para mi programa.
Si tengo un archivo fuente Java (* .java) o un archivo de clase (* .class), ¿cómo puedo convertirlo en un archivo .exe?
También necesito un instalador para mi programa.
Respuestas:
La herramienta Java Packager compila, empaqueta y prepara las aplicaciones Java y JavaFX para su distribución. El comando javapackager es la versión de línea de comandos.
- Documentación de Oracle
La javapackager
utilidad se envía con el JDK. Puede generar archivos .exe con la -native exe
bandera, entre muchas otras cosas.
WinRun4j es un lanzador de Java para Windows. Es una alternativa a javaw.exe y proporciona los siguientes beneficios:
- Utiliza un archivo INI para especificar classpath, clase principal, vm args, program args.
- Nombre ejecutable personalizado que aparece en el administrador de tareas.
- Argumentos JVM adicionales para un uso de memoria más flexible.
- Reemplazo de icono incorporado para icono personalizado.
- [siguen más viñetas]
- Página web de WinRun4J
WinRun4J es una utilidad de código abierto. Tiene muchas caracteristicas.
Empaqueta su JAR, activos y una JVM para su distribución en Windows, Linux y Mac OS X, agregando un archivo ejecutable nativo para que parezca una aplicación nativa. Packr es el más adecuado para aplicaciones GUI.
- paquete LÉAME
Packr es otra herramienta de código abierto.
JSmooth es un contenedor ejecutable de Java. Crea lanzadores nativos de Windows (.exe estándar) para sus aplicaciones java. Hace que la implementación de Java sea mucho más sencilla y fácil de usar, ya que puede encontrar cualquier Java VM instalada por sí misma.
- Sitio web de JSmooth
JSmooth es de código abierto y tiene características, pero es muy antiguo. El último lanzamiento fue en 2007.
JexePack es una herramienta de línea de comandos (ideal para secuencias de comandos automatizadas) que le permite empaquetar su aplicación Java (archivos de clase), opcionalmente junto con sus recursos (como GIF / JPG / TXT / etc), en un único EXE de Windows comprimido de 32 bits , que se ejecuta con Java Runtime Environment de Sun. Tanto la consola como las aplicaciones en ventana son compatibles.
- Sitio web de JexePack
JexePack es un software de prueba. El pago se requiere para el uso de producción, y los archivos exe creados con esta herramienta mostrarán "recordatorios" sin pago. Además, el último lanzamiento fue en 2013.
InstallAnywhere facilita a los desarrolladores la creación de software de instalación profesional para cualquier plataforma. Con InstallAnywhere, se adaptará rápidamente a los cambios de la industria, llegará al mercado más rápido y ofrecerá una experiencia de cliente atractiva. Y conozca la vulnerabilidad de los componentes OSS de su proyecto antes de enviar.
- Sitio web de InstallAnywhere
InstallAnywhere es un paquete comercial / empresarial que genera instaladores para programas basados en Java. Probablemente sea capaz de crear archivos .exe.
Como alternativa a los archivos .exe, puede crear un archivo JAR que se ejecute automáticamente al hacer doble clic, agregando un punto de entrada al manifiesto JAR .
Una excelente fuente de información sobre este tema es el artículo de Excelsior " Convertir Java a EXE: por qué, cuándo, cuándo no y cómo ".
Consulte también el artículo complementario "Las mejores herramientas de conversión de JAR a EXE, gratuitas y comerciales ".
Launch4j es una herramienta multiplataforma para envolver aplicaciones Java distribuidas como frascos en ejecutables nativos ligeros de Windows. El ejecutable se puede configurar para buscar una determinada versión de JRE o usar una incluida, y es posible establecer opciones de tiempo de ejecución, como el tamaño de almacenamiento dinámico inicial / máximo. El contenedor también proporciona una mejor experiencia de usuario a través de un icono de aplicación, una pantalla de presentación nativa anterior a JRE, un nombre de proceso personalizado y una página de descarga de Java en caso de que no se encuentre el JRE apropiado.
- Sitio web de Launch4j
ACTUALIZACIÓN: GCJ está muerto. Se eliminó oficialmente del proyecto GCC en 2016. Incluso antes de eso, estuvo prácticamente abandonado durante siete años y, en cualquier caso, nunca fue lo suficientemente completo como para servir como una implementación alternativa de Java viable.
Ve a buscar otro compilador Java AOT.
GCJ: El compilador GNU para Java puede compilar el código fuente de Java en código máquina nativo, incluidos los ejecutables de Windows.
Aunque no todo en Java es compatible con GCJ, especialmente los componentes de la GUI (consulte ¿Qué API de Java son compatibles? ¿Qué tan completa es la pregunta de soporte? De las preguntas frecuentes ). No he usado mucho GCJ, pero por las pruebas limitadas que he hecho con aplicaciones de consola, parece estar bien.
Una desventaja de usar GCJ para crear un ejecutable independiente es que el tamaño del EXE resultante puede ser bastante grande. Una vez compilé una aplicación de consola trivial en GCJ y el resultado fue un ejecutable de aproximadamente 1 MB. (Puede haber formas de evitar esto que no conozco. Otra opción serían los programas de compresión ejecutables).
En términos de instaladores de código abierto, Nullsoft Scriptable Install System es un instalador programable. Si tiene curiosidad, hay ejemplos aportados por los usuarios sobre cómo detectar la presencia de un JRE e instalarlo automáticamente si el JRE requerido no está instalado. (Solo para hacerle saber, no he usado NSIS antes).
Para obtener más información sobre el uso de NSIS para instalar aplicaciones Java, consulte mi respuesta a la pregunta " ¿Cuál es la mejor manera de distribuir aplicaciones Java? "
Puede hacer un archivo por lotes con el siguiente código:
start javaw -jar JarFile.jar
y convierta el .bat a un .exe usando cualquier convertidor de .bat a .exe.
Estamos utilizando Install4J para construir instaladores para entornos Windows o Unix.
Es fácilmente personalizable hasta el punto en que desea escribir scripts para acciones especiales que no se pueden hacer con diálogos estándar. Pero a pesar de que estamos configurando servicios de Windows con él, solo estamos usando componentes estándar.
Creo que Launch4J es de la misma compañía (solo el lanzador, sin instalador).
PD: lamentablemente no me pagan por este respaldo. Simplemente me gusta esa herramienta.
El último Java Web Start se ha mejorado para permitir un buen funcionamiento sin conexión, así como para permitir la "instalación local". Vale la pena investigarlo.
EDITAR 2018: Java Web Start ya no se incluye con los JDK más nuevos. Oracle está empujando hacia un modelo de "despliegue su aplicación localmente con un JRE incluido".
Si necesita convertir toda su aplicación a código nativo, es decir, un EXE más DLL, existe ExcelsiorJET . Descubrí que funciona bien y proporcioné una alternativa para agrupar un JRE.
Yo diría que launch4j es la mejor herramienta para convertir un código fuente de Java (.java) a un archivo .exe. Incluso puede agrupar un jre para su distribución e incluso el exe puede ser iconificado. Aunque el tamaño de la aplicación aumenta, se asegura de que la aplicación funcione perfectamente incluso si el usuario no tiene un jre instalado. También se asegura de que pueda proporcionar el jre específico requerido para su aplicación sin que el usuario tenga que instalarla por separado. Pero desafortunadamente, Java pierde su importancia. Su soporte multiplataforma se ignora por completo y la aplicación final solo es compatible con Windows. Pero eso no es gran cosa, si solo atiende a usuarios de Windows.
Alternativamente, puede usar un traductor de Java a C (por ejemplo, JCGO ) y compilar los archivos C generados en un archivo binario nativo (.exe) para la plataforma de destino.
Se me puede perdonar por estar en contra de convertir un programa de Java a una aplicación .exe y tengo mis razones. La principal es que un programa Java puede compilarse en un archivo jar de muchos IDE. Cuando el programa está en formato .jar, puede ejecutarse en múltiples plataformas en lugar de .exe, que se ejecutará solo en un entorno muy limitado. Estoy a favor de la idea de que los programas Java no deberían convertirse a Exe a menos que sea muy necesario. Siempre se pueden escribir archivos .bat que ejecutan el programa Java mientras es un archivo jar.
si es realmente necesario convertirlo a exe, el convertidor Jar2Exe lo hace silenciosamente y también se pueden adjuntar bibliotecas compiladas junto con la aplicación principal.