Crear ejecutable para nuestra aplicación JAVA (Es una lata el trabajar)...

Cuando inicié este blog, no lo hice con la intención de hablar con temas relacionados con mi trabajo.

El motivo es tan simple como que uno ya acaba todos los días bastante harto de trabajar, como para llegar a casa y ponerse a escribir sobre temas relacionados con ello.

Pero bueno, para que no digan los amigos o mis hermanos que no doy ni chapa, voy a hacer (muy de vez en cuando) una excepción, y voy a ir escribiendo alguna cosilla relacionada con lo que voy haciendo o aprendiendo profesionalmente.

Así que doy comienzo, con esta entrada, a una nueva sección que llamaré 'Es una lata el trabajar', en la que contaré algún que otro truquillo de los que uno va aprendiendo con el día a día.

Hoy, aprovechando un manual que tengo que preparar, os voy a contar cómo crear un Ejecutable para Windows, un .exe, para vuestra aplicación JAVA. Y en la siguiente entrada, os contaré cómo usar un programa freeware para crear un instalador para la misma y poder distribuir así vuestras aplicaciones.

El programa escogido para ello, se llama JSmooth, y es un programa gratuito que teneis disponible en Sourceforge.net.

Y aunque en su página teneis disponibles manuales en HTML y PDF, os paso a contar cómo hacer un ejecutable para una aplicación JAVA de ejemplo.

En primer lugar, debemos de descargarnos el programa e instalarlo en nuestra máquina. Tras ello lo ejecutamos y llegamos a la primera página:





Skeleton.

Para comenzar, pincharemos sobre los iconos de la izquierda para ir a 'Skeleton', donde debemos de indicar para qué tipo de aplicación queremos crear un ejecutable, teniendo para ello un desplegable con varias opciones. Cada opción, una vez seleccionada, cuenta con una descripción del tipo de aplicación.
En nuestro caso, seleccionamos el tipo 'Windowed Wrapper' que es el que más se ajusta a la aplicación Swing que tenemos.





En la parte inferior de la pantalla, vemos algunas opciones. La primera de ellas es el mensaje que queremos que se muestre cuando no se pueda encontrar un JDK instalado en la máquina cliente. Asociada a esta primera, la opción url nos permite indicar a qué url llevar al usuario si selecciona descargar un JDK.
Por defecto la url es la que SUN tiene para JAVA con la descarga directa del último JDK o JRE.

La siguente opción es si queremos que el proceso JAVA que se lanzará para nuestra aplicación, se ejecute dentro del proceso .exe o como un proceso aparte. En nuestro caso seleccionamos que lo lance dentro del .exe.

A continuación, tenemos la opción 'Single Instance', que nos servirá para indicar si queremos o no que solo se permita una instancia de nuestra aplicación ejecutándose a la vez. La marcamos porque nos interesa que solo se permita una instancia.

Las dos siguientes son propias del JSmooth, y en nuestro caso no nos interesan.

Executable.

Pasamos al siguiente paso pulsando sobre 'Executable'.

Aquí, le indicamos el nombre del .exe (y en qué directorio nos lo generará) que querremos que tenga nuestra aplicación.
Le podremos asociar un icono al ejecutable, y decirle cuál será el directorio de trabajo de la aplicación una vez lanzada. Le asociamos un icono, y dejamos el campo en blanco para no obligar a nuestra aplicación a tener un directorio de trabajo pre-fijado.




Application.

Pasamos al siguente paso pulsando sobre el icono 'Application', y en la siguiente pantalla pasamos a configurar la clase principal de nuestra aplicación y los distintos argumentos que podemos pasarle a la misma, o a la Máquina Virtual de JAVA.

Para seleccionar la 'Main Class', primero cargaremos en la sección Classpath el .jar que contiene nuestra aplicación, y luego pulsaremos sobre el botón a la derecha del campo [...] para seleccionar entre todas las clases del JAR la que nos interesa.

Si no tenemos argumentos que pasar a nuestra aplicación, dejamos el siguiente campo en blanco.

También podemos elegir que se incluya un JAR dentro del .exe, que será extraido al directorio de trabajo cuando lancemos la aplicación.

Y en Classpath incluiremos todos los .jar que necesite nuestra aplicación (en la siguiente entrega veremos cómo distribuirlos con el instalador).









JVM Selection.

Pasamos a la siguiente sección, y aquí podemos indicar cuál es la versión mínima, y máxima, con la que se puede ejecutar nuestra aplicación. En nuestro caso, he puesto como mínima la 1.5, y como máxima la 1.6.

Podemos indicar, si así lo queremos, que se use un JRE (Java Runtime Environment) que se distribuya con nuestra aplicación.
Aquí, lo que he hecho ha sido copiar el directorio jre del JDK que estoy usando al directorio donde voy a tener el .exe, y referenciarlo con './jre', para que lo busque más adelante en el directorio de trabajo.

La siguiente opción sirve para ordenar cómo se buscará un JRE en el sistema donde se intente ejecutar la aplicación. En nuestro caso lo dejamos tal cuál.





JVM Configuration.

Y llegamos a la última sección, donde indicaremos algunas opciones para la máquina virtual de JAVA.

Las primeras, la memoria máxima y mínima que usará la aplicación en el cliente.

Y en el cuadro inferior podremos introducir más opciones mediante la introducción de pares 'Clave-Valor'.







Build.

Una vez hecho esto, podremos pulsar sobre el icono de la rueda dentada para que se compile el proyecto y nos genere el .exe de nuestra aplicación.



17 comentarios:

enTropy lunes, 05 enero, 2009  

Buenas, puede que esté un poco espeso y no lo vea pero me surge una duda...

¿Para qué quieres tener un .exe de tu programa si, tal y como yo lo entiendo, sigues necesitando una JVM instalada para poder ejecutarlo?
Esperaba algo parecido al GCJ de Linux, que compila un proyecto Java en código dependiente de plataforma y (si no estoy mal encaminado) deja de tener cualquier dependencia Java.
Por lo que veo no es nada parecido sino más bien una especie de JavaWebStart en formato binario...

¿La he liado mucho? xD

Aprovecho para saludarte y felicitarte por el blog, ya que es la primera vez que postedo :P

Anónimo viernes, 23 enero, 2009  

hello my friend muchas gracias x el aporte la verdad es q la herramienta que usaste es buenisima!!

gracias x el tutrial

saludos!!!

Anónimo viernes, 13 marzo, 2009  

hacer esos pasos es ridiculo..... porque ya tenemos .jar para que crear un .exe si todavia estamos dependiendo de la maquia virtual...
de antemano si tienes algo arecido a gcj me avisas...
pero esta bueno el blog para personas que acostumbrar a utilizar el .exe

Manu, The Java Real Machine sábado, 14 marzo, 2009  

Buenas,

obviamente esta herramienta es para cuando tu cliente te pide que la aplicación se distribuya como un .exe, y se quiere evitar que los usuarios (normalmente inexpertos) tengan que instalarse por ellos mismos su JRE.

Además, de esta forma si mañana tienes la necesidad de actualizar el JRE de los clientes, su distribución es más sencilla que tener que explicarles cómo actualizarla.

Al fin y al cabo de esta forma para el usuario tu aplicación es una aplicación de Windows como cualquier otra.

manuel viernes, 06 noviembre, 2009  

Hola:

El detalle es que se sigue requiendo de java instalado, no hay alguna aplicacion que transforme ese jar en un exe?, pero que no necesite de java instalado en la maquina final?, saludos.

Manu, The Java Real Machine viernes, 06 noviembre, 2009  

La máquina virtual de JAVA siempre hace falta para ejecutar JAVA, pero puedes distribuirla con tu aplicación con un instalador que te de la opción de incluirla.

Laly viernes, 29 enero, 2010  

Hola, quería hacer una pregunta, ya que no lo he encontrado, al ininio de este post dice que ya comentaría en una siguiente entra cómo crear un instalador, existe esa entrada? es que lo necesito para la entrega de mi proyecto... Muchas gracias.

Manu, The Java Real Machine viernes, 29 enero, 2010  

Cierto, cierto... trabajar tanto tienes estas cosas, que terminas por olvidarte de el blog.

Pero mira, ya que me lo has recordado, esta noche escribo la entrada y la publico.

Un saludo.

Laly sábado, 30 enero, 2010  

Pues te doy mil gracias, pk he intentado y no lo consigo!! y eso que tiene pinta de ser fácil pero nada de nada!! si me puedes decir el programa y versión..pk lo he intentado con el createInstall, pero ... los tutoriales no son de la misma versión y me trae por la calle de la amargura como se suele decir!.
Te repito, mil gracias!!

Oscar Javier Muñoz lunes, 13 mayo, 2013  

Gracias mi hermano me salvo la patria :)

Manu, The Java Real Machine lunes, 13 mayo, 2013  

Gracias a ti por tu comentario y rescatar esta entrada del olvido.

Encantado de que te haya sido útil.

Anónimo jueves, 10 octubre, 2013  

Vaya Crack, muchas gracias, no tenía ni idea. No sabes de la que me has librado....

Unknown sábado, 12 octubre, 2013  

Graciassss!!!

Segui todos tus pasos pero tengo como 40 min en "Loading icon.." siempre se tarda tanto??

De igual modo hice un instalador de Inno Setup pero no consigo la manera que instale tambien el JDK dentro de este instalador, tendras algun link que me facilite eso??

Gracias por compartir con nosotros tus conocimientos!

Manu, The Java Real Machine lunes, 14 octubre, 2013  
Este comentario ha sido eliminado por el autor.
Manu, The Java Real Machine lunes, 14 octubre, 2013  

Hola Adriana, para el Instalador tienes esta otra entrada: http://javarealmachine.blogspot.com.es/2010/01/crear-nuestro-instalador.html

Pero uso Install Creator, que tiene una versión Freeware.

El JDK se integra tal y como explico más arriba, al crear el ejecutable. Así no necesitas ya integrarlo en la creación del instalador, puesto que ya está metido.

Cesar Alarcon lunes, 14 abril, 2014  

Que tal, excelente articulo muy bueno me queda practicar.
Pero te consulto algo, ex posible portar en el jar o aunque termine en un exe, pero portar la vm?.
Quiero decir si por casualidad la maquina no tiene java instalado, o si pero no esta configurado y si es java mas viejo y no nos dan acceso para tocar las variables de entorno y el path, entonces necesitamos que nuestra aplicacion contenga todo, eso se puede hacer?¡
gracias muy bueno

Manu, The Java Real Machine lunes, 14 abril, 2014  

Hola César, gracias.

Pues lo único que tienes que hacer es seguir los pasos de la sección: JVM Selection

Ahí le indicas que use una máquina virtual ditribuida con tu aplicación, para no depender de la máquina destino, de lo que tenga instalado o de que tenga permisos o no para instalarla.

Un saludo.

Tecnología, Actualidad, Música, Humor... lo que sea con tal de poder aportar algo.

Sobre Nosotros

Frikis, mala gente, profesionales y siempre dispuestos a decir lo que pensamos aunque no guste.
Go to IntenseDebate

A jugar...

Vistas de página en total

Velocidad

Velocidad

Entradas populares

Blog Archive

Blog Archive