Generar ejecutable en java

De ChuWiki

Hacer un jar[editar]

Aunque la forma normal de hacer un programa java es generar un fichero jar, su ejecución puede ser compleja para un usuario que no conozca java.

Por ello, entregar una aplicación java a un usuario normalito de ordenador suele requerir entregar también un .bat de arranque, que revise si existe máquina virtual, que ponga cosas como el classpath, etc, etc. Por ejemplo, entregamos un fichero.jar y un .bat de este estilo

java -Xmx512M -jar fichero.jar

donde pasamos alguna opción a la máquina virtual (-Xmx512M) e indicamos cómo arrancar el jar. El usuario novato solo tendra que tener juntos el .bat y el fichero.jar y hacer doble click en el fichero .bat


Hacer un exe nativo[editar]

Hay utilidades que permiten pasar nuestro .jar a un fichero .exe normal de windows, de forma que a un usuario no programador le resulte más fácil el arranque.

Algunas de estas utilidades, como JSmooth, simplemente crean un pequeño exe que arranca la aplicación, pero necesitan que la máquina virtual esté instalada. De alguna forma, lo único que hace es reemplazar al bat, haciendo un exe que suele ser más familiar para los usuarios de windows. Otra opción para hacer un ejecutable del .bat es la utilidad (Bat To Exe Converter) que incluso puede esconder la pantalla del MS-DOS y que pueden descargar de Aquí.

gcj sí crea un verdadero ejecutable, pero gcj está pensado para el entorno de gnu, por lo que para ejecutarlo en windows es necesario instalar previamente el cygwin. gcj venga mejor posiblemente para usuarios de linux/unix, sobre todos las distribuciones modernas que ya vienen con el gcj incorporado.

java2exe (ahora JexePack) también permite generar .exe, pero es una aplicación de pago.

Algunos IDE, como JBuilder, también permiten generar el exe. También es de pago.

De todas formas, no he probado ninguno de ellos. De momento no tengo ninguna necesidad especial de generar .exe. Además, pienso que se pierde un poco la filosofía de java, que es que el "ejecutable" se pueda ejecutar en cualquier sistema operativo. Tampoco suelo hacer aplicaciones para usuarios no programadores, aunque la solución del fichero .bat me parece adecuada.