Programación - RafaC - 2005/2006

Archivos JAR-


Ficheros JAR


1 ¿Qué son los ficheros JAR?

2 Creación en un terminal de texto

3 Applets

4 Creando ficheros .jar desde JCreator






1 ¿Qué son los ficheros JAR?

Como hemos visto una aplicación en Java está compuesta por varios ficheros .java. Al compilarlos obtenemos varios ficheros .class (uno por fichero .java), y no un único fichero ejecutable como ocurre en otros lenguajes. Para colmo, a menudo la aplicación está formada no sólo por los ficheros .class sino que usa ficheros de sonido (usualmente .au en Java), iconos, etc., lo que multiplica la cantidad de ficheros que forman la aplicación compilada. Esto hace que "llevarse" la aplicación para ejecutarla en un ordenador diferente resulte un poco lioso: olvidar cualquiera de los ficheros que componen la aplicación significaría que ésta no va a funcionar correctamente. En el caso de un applet se añade el problema de la velocidad, al tener que viajar todos los ficheros a través de internet.

Los ficheros Jar (Java ARchives) permiten recopilar en un sólo fichero varios ficheros diferentes, almacenándolos en un formato comprimido para que ocupen menos espacio. Es por tanto, algo similar a un fichero .zip (de hecho están basados en ficheros .zip). Entonces, ¿dónde está la "gracia"? ¿No se podrín usar directamente ficheros .zip? La particularidad de los ficheros .jar es que no necesitan ser descomprimidos para ser usados, es decir que el intérprete de Java es capaz de ejecutar los archivos comprimidos en un archivo jar directamente. Por ejemplo, si hemos recopilado todos los ficheros necesarios para ejecutar una aplicación en un fichero "aplic.jar", podemos lanzar la aplicación desde una terminal de texto mediante:
java -jar aplic.jar
Vamos a ver ahora cómo se crean los ficheros .jar.

2 Creación en un terminal de texto

Hemos visto que se puede lanzar una aplicación llamando al intérprete de java (comando java) seguido de -jar y del nombre del fichero .jar correspondiente. Sin embargo hay algo en todo esto que no "encaja": Si el fichero .jar contiene muchos ficheros .class, ¿cuál de todos se ejecuta? Sabemos que debe ejecutarse el que contiene el método main pero, ¿cómo sabe el intérprete de Java que clase de todas las del fichero contiene este método? La respuesta es que lo sabe porque se lo tenemos que decir durante la creación del fichero jar. Y la forma de hacerlo es un poco liosa. Vamos a verlo paso a paso. Para simplificar suponemos que estamos en un terminal de texto (consola Linux o símbolo del sistema en Windows), que el comando jar es accesible (es decir, la carpeta que contiene jar.exe está en el Path) y que nos encontramos en el directorio donde se encuentran los ficheros .class que deseamos "empaquetar".
* Crear un directorio META-INF (¡las mayúsculas son importantes!) y dentro un fichero MANIFEST.MF. Este fichero indica, entre otras cosas, cual será la clase principal. A menudo el fichero MANIFEST.MF contiene una única línea:


    Main-Class: Principal
    

indicando que Principal.class es la clase que contiene el método main.

Observación : El fichero MANIFEST.MF se puede crear con cualquier editor de texto. Hay que introducir un fin de línea (enter) tras la última linea con texto.


* Crear el fichero .jar mediante el comando

    jar cfm fich.jar META-INF/MANIFEST.MF *.class
    
El nombre fich.jar es el que nosotros queramos y corresponde al fichero .jar que se creará conteniendo todos los ficheros indicados (en este caso todos los ficheros .class).

* Se puede comprobar que el contenido del fichero es el el adecuado escribiendo:

    jar tf fich.jar 
    
que mostrará la lista de clases contenidas en el fichero. Este comando también puede ser útil para examinar el contenido de las librerías del sistema.

* Para lanzar el archivo basta con teclear ahora:


    java -jar fich.jar 
    

* Si alguna vez se quiere "desempaquetar" el contenido de un archivo jar se pueden usar las opciones "xf":


    jar fich.jar 
    

Esto puede resultar particularmente útil si queremos echar un vistazo a algunos paquetes del sistema que vienen de esta forma.


3 Applets

Aunque aún no sepamos demasiadas cosas sobre applets este es un buen punto para indicar como se debe usar la herramienta jar en relación a los applets. Vamos a verlo con un ejemplo: supongamos que tenemos un applet de nombre TicTacToe.java. Suponemos que ya está compilado, es decir que ya existe el fichero TicTacToe.class. Además suponemos que este applet utiliza imágenes, que se encuentran en una carpeta images y sonidos que se encuentran en una carpeta sounds. Es decir, tenemos (resultado de hacer "dir" en un símbolo del sistema): Queremos crear un fichero .jar para guardar toda esta información en un único fichero, que será el que "viaje" por internet. Para ello se hace:
jar -cf titac.jar TicTacToe.class audio images
Como se puede ver no se ha incluido el fichero TicTacToe.java (porque no es necesario para la ejecución del programa, aunque se podría haber incluido si se hubiera querido). Ya tenemos el fichero tictac.jar creado. Para cargar el applet desde una página html sólo debemos copiar este fichero a la misma carpeta donde este la página. La página por su parte debe incluir un código similar al siguiente código para "incrustar" el programa Java:
      <applet code="TicTacToe.class"
              archive="tic.jar" 
              width="120" 
              height="120">
      </applet>



4 Creando ficheros .jar desde JCreator

Se puede configurar JCreator para llamar al comando jar. Brevemente estos son los pasos a seguir una vez:
* Dentro del menú Configure elegir la opción Options .

* En la ventana que aparece, hacemos click sobre la palabra Tools que aparece en la lista de la izquierda. La pantalla tendrá el aspecto:

tools
(salvo porque la parte derecha no estará vacía si ya hemos introducido otras herramientas como los accesos a javadoc).

* Pulsar el botón New y del menú desplegable que aparece elegir la opción: Create Jar File . Pulsamos "OK" y ya tenemos JCreator para crear ficheros .jar con el contenido del proyecto que tengamos Java, sin más que pulsar el botón de herramientas que hayamos configurado (la llave inglesa con el número correspondiente, por ejemplo 1 si es la primera herramienta que configuramos). De todas formas hay que hacer algunas observaciones:

Observación: Por supuesto los pasos anteriores sólo hay que hacerlos una vez; la próxima vez que entremos en JCreator se podrán usar las herramientas directamente.


Página Principal-


2004-2005 Rafael Caballero