Post Nro 13 - Java NO genera ejecutables (.EXE)

Este tema no lo daba en ningún curso hasta que un alumno me lo hizo notar (gracias Fede, alias Kal-El) y comprendí la importancia que tiene, especialmente en los cursos iniciales. El objetivo era saber si se podía correr una aplicación Java en un pendrive.
Bien, todo parte de que Java no genera ejecutables de ningún tipo, recuerden que lo único generado es código intermedio (bytecode), es decir, archivo con extensión .class.
Existen 2 formas de hacer correr una aplicación Java en una máquina distinta en la que se desarrolló, pero antes, sea cual sea la forma en que la despliegue, necesito:
- Tener acceso al JRE: hago hincapié en que no dije "instalar", basta con tener acceso a un directorio que contenga el JRE, más precisamente, al archivo java.exe (en windows) o java (en linux).
- Empaquetar mi aplicación en uno o varios JAR (Java ARchive, más detalles en próximos posts). Si bien este punto no es necesario, es muy recomendable.
Esta primer forma consiste en correr la aplicación por medio de la línea de comandos (antiguo DOS). Esta forma es más habitual para los usuarios Linux. Consiste en lo siguiente:
Si nuestra aplicación se llama MiPrograma.jar y quiero correrla desde la línea de comandos, necesitaré escribir lo siguiente:
C:>\
Esto hará que se ejecute la aplicación (si está bien empaquetada). Este comando se puede escribir en un archivo con extensión .bat/.sh para poder tener un acceso directo y hacerlo un poco más visual.
Forma 2 - Creación a mano de un archivo .exe
Podríamos hacer uso de otro lenguaje que sí genere código ejecutable (VB, C, C++, Pascal, etc.) para que se invoque automáticamente a la línea de comandos y se ejecute la aplicación, o, podríamos utilizar un programa que lo haga por nosotros.
De este tipo de programas hay varios, pero me interesa uno en especial, aunque todavía es beta, tiene muy buen funcionamiento y me ha servido mucho, se llama JSmooth y pueden descargarlo del siguiente link.
El primer proyecto que se arma con este programa suele ser un poco complicado, por eso voy a dejar un pequeño tutorial de cómo usarlo.
Lo que tiene de bueno este programa es que se puede generar un ejecutable que contenga a la aplicación o que utilice un jar serparado, además, se puede configurar ampliamente la máquina virtual de Java, incluso se puede añadir mensajes específicos al usuario para que la instale.
Como si eso fuera poco, es posible incorporar todo el JRE de Java para que la aplicación la utilice accediendo a un directorio específico. Eso está muy bueno, ya que pueden prescindir de obligar al usuario que instale el JRE, directamente lo podemos distribuir con nuestra aplicación.
De esta manera, podemos crear un .exe (entorno Windows) sin muchos problemas, incluso podemos correr la aplicación directamente desde un CD o un pendrive. Muy recomendable.
Links:
Tutorial: (PDF)
JSmooth: http://jsmooth.sourceforge.net/
Launch4j: http://launch4j.sourceforge.net/
Saludos PF