sábado, 19 de mayo de 2012

Deployment o despliegue y distribución de aplicaciones

votar


Llega un momento, en la vida de todo programador principiante, en el que éste quiere enseñar a sus amigos/as el programa tan genial que ha hecho (aunque sólo sea ese en el que sale por la consola la frase “Hola, mundo”). En ese momento, los susodichos amigos/as, hermanos/as, primos/as o padres le dirán algo así como: “Ah, bien. Pero, ¿cada vez que quieras hacer eso tienes que abrir Eclipse/NetBeans/cmd?. ¿No puedes hacer que funcione dándole doble clic a un icono?.” Y nuestro pobre programador novel se queda chafado.

Hoy os vamos a explicar cómo hacer para desplegar vuestras aplicaciones para poder distribuirlas después, o para poder iniciarlas desde el escritorio. Lo vamos a hacer a través de la línea de comandos, porque cada IDE viene con su propio botoncito para hacer esta tarea, y aquí no podemos cubrirlos todos. Además, un poco de MS-Dos o Shell nunca viene mal. Si lo necesitáis, seguro que googleando encontráis un tutorial específico para la IDE que utilizéis vosotros.

Para empezar, lo primero que hay que hacer es crear un fichero .jar. Un fichero .jar no es más que un archivador de java (jar = java archive) para guardar todos los archivos que necesites para ejecutar el programa.

Por ejemplo, supongamos que con tu Bloc de Notas has escrito un programa llamado miPrograma.java. Al compilarlo, verás que automáticamente Java crea miPrograma.class. Supongamos también que has escrito otro programa más complicado que necesita varias clases más y otros archivos de imágenes para funcionar. A este lo llamaremos miOtroPrograma.java. Todos estos archivos los hemos guardado en MisProgramas dentro de nuestro disco duro.

Vamos ahora al cmd para crear los archivos .jar donde guardar estos programas. Para no liarnos con Windows o con Linux, voy a poner simplemente los comandos. Eso sí, recordad que en Windows para ir a algún directorio es:
cd C:\MisProgramas con la barra\
y en Linux es:
$ /MisProgramas con la barra/

Al crear un .jar, Java automáticamente construye un manifiesto MANIFEST.MF donde pone algunos datos sobre el mismo. Nosotros vamos a cambiar este manifiesto para señalar cuál es la clase principal, es decir, dónde está el método main, imprescindible para que todo funcione.
Esto es muy sencillo de hacer. Simplemente abrimos nuestro editor de texto o bloc de notas y escribimos:

Main-Class: miPrograma

Podemos añadir otra línea para que quede bien claro dónde va a estar este programa, poniendo el nombre del fichero que vamos a crear:

Path: .\ficheroUno.jar

Es imprescindible que dejéis un espacio después de los dos puntos. Ahora guardamos este manifiesto con la extensión .txt o .mf en MisProgramas.

A continuación, en cmd, dentro del directorio MisProgramas, tecleamos:

jar -cmf manifiesto.mf ficheroUno.jar miPrograma.class

Y ya está creado el fichero.Es muy importante que sigamos el orden del comando, es decir, si la m de manifiesto va antes que la f de fichero, así es como debemos escribirlos, si no se producirá un error.
Si ahora quisiésemos ver el contenido del fichero basta con teclear:

jar tf ficheroUno.jar

También podemos visualizar el proceso si en lugar de teclear -cmf tecleamos -cvmf.

Pero , ¿qué ocurre con el otro programa, el que tenía varias clases y archivos?. Bueno, puedes crear un fichero .jar colocando todos los archivos uno detrás de otro después de miPrograma.class, pero la verdad es que eso es muy pesado. Lo más cómodo es manejarse con paquetes. Tú ya sabes (o deberías) que para crear un paquete basta que la primera línea de tu clase principal sea algo así:

package miPaquete;

Ordenadito que tú eres, has creado el directorio miPaquete y allí has metido todos los archivos de este paquete. Lo único que tienes que hacer es añadir el paquete entero al fichero, así:

jar -cmf manifiesto ficheroDos.jar miPaquete

Eso sí, manifiesto, que deberás guardar en el mismo directorio en el que esté miPaquete, quedaría así:

Main-Class: miPaquete.miOtroPrograma

para evitar el famoso error de que el fichero de la clase principal no se encuentra o no ha sido cargado.

Ahora puedes ejecutar el programa de varias maneras:
-desde el cmd, si no has modificado el manifiesto, con

java -cp ficheroUno.jar miPrograma
java -cp ficheroDos.jar miPaquete.miOtroPrograma

-desde el cmd, si has modificado el manifiesto, con

java -jar ficheroUno.jar
java -jar ficheroDos.jar

-o simplemente, en Windows, yendo al fichero .jar que se ha creado en MisProgramas y cliqueando sobre él dos veces (esto es cierto sólo a partir de Java 1.5, aunque se puede modificar Windows para que también lo haga con versiones anteriores, pero, vamos, ya es hora de que actualices tu Java). También puedes crear un acceso directo en el escritorio, para lucirte más.

Recuerda además que puedes ver el contenido de tu fichero con WinZip o WinRar. Este mismo fichero se ejecutará sin problemas en cualquier ordenador que tenga instalada la JVM. ¿Y si no?. Bueno, en ese caso hay varias soluciones.

Se puede crear una carpeta en la que que se guarde el archivo jar, una carpeta con el JRE (Java Runtime Environment) y un archivo .bat (o .sh en Unix) que tenga el siguiente texto:

jre\bin\java.exe -jar installer.jar

Yo no lo he probado, así que no sé si funciona. Si alguno lo ha hecho, por favor que nos lo comente.

Otra opción , pensada sobre todo para los usuarios de Windows, son los programas que convierten los archivos .jar en .exe. Algunos de estos programas, como JSmooth o launch4j son gratuítos y puedes configurarlos a tu gusto. Podéis encontrar tutoriales sobre el tema incluso en YouTube.


En fin, espero que esta entrada os haya servido al menos para poder poner en vuestro escritorio esa aplicación tan chula que habéis hecho. :-)










No hay comentarios:

Publicar un comentario en la entrada