Tutorial de Java

jar

Anterior | Siguiente

jar.exe

Combina varios archivos en un solo archivo JAR.

Sintaxis

jar [opciones] [manifest] destino fichero [fichero]

Descripción

jar es una aplicación Java que combina múltiples ficheros en un solo fichero JAR. Es una herramienta de propósito general basada en la compresión en formato ZIP. jar fue diseñada fundamentalmente para facilitar el empaquetamiento de applets Java o aplicaciones en un solo archivo. Cuando los componentes de un applet o aplicación (ficheros .class, de imágenes, de sonidos) se combinan en un solo fichero, pueden ser descargados en una sola transacción HTTP por el navegador, en vez de tener que realizar una nueva conexión cada vez que se deba enviar o recoger cada uno los ficheros individuales. Esto reduce el tiempo de descarga del applet, y como además los ficheros están comprimidos, se contribuye a reducir más todavía el tiempo en que se realiza la descarga. Además, se permite la incorporación de marcas adicionales en el fichero para que pueda ser identificado el autor del applet y se pueda autentificar origen del applet. La sintaxis de esta herramienta es muy semejante a la sintaxis del comando tar que se utiliza en sistemas Unix.

Los tres tipos de ficheros que se indican en la invocación de la herramienta jar son:

  • fichero manifest (opcional)
  • fichero jar destino
  • ficheros que queremos archivar

Una llamada típica sería:

% jar cf mificherojar *.class

En este ejemplo, todos los ficheros de clases Java en el directorio en que nos encontremos se agruparán en el fichero mificherojar. Un fichero manifest será generado automáticamente por jar y siempre será la primera entrada en el fichero jar. Por defecto, el fichero se llama META-INF/MANIFEST.INF. El fichero manifest es el lugar donde se almacenará cualquier información adicional referente al archivo.

Si hay un fichero manifest ya existente que queremos que sea utilizado por jar para el nuevo archivo a crear, se puede indicar a través de la opción -m:

% jar cmf miFicheroManifest miFicheroJar *.class

Es muy fácil ver y procesar el contenido del fichero manifest, porque utiliza el formato ascii RFC822.

Opciones

c

          

Crea un archivo nuevo o vacío sobre la salida estándar (stdout)

t

          

Presenta la tabla de contenido desde la salida estándar.

x fichero

          

Extrae todos los ficheros, o los ficheros que se indiquen, desde la entrada estándar (stdin). Si fichero se omite, entonces se extraen todos los ficheros; en otro caso se extrae solamente el fichero, o ficheros, especificados.

f

          

El segundo argumento especifica un fichero jar a procesar. En el caso de creación, esto se refiere al nombre del fichero jar que se va a crear (en lugar de la salida estándar). Para tabla y extraer, el segundo argumento identifica el fichero jar que va a ser listado o extraído.

m

          

Incluye información desde el fichero manifest, que debe existir. Por ejemplo:

% jar cmf miFicheroManifest miFicheroJar *.class

M

          

No crea un fichero manifest para las entradas.

o

          

Almacena solamente, no utiliza compresión alguna.

v

          

Presenta mensajes sobre la salida de errores estándar (stderr). Para tabla, por ejemplo, indicará más información sobre los ficheros, como su tamaño y la fecha de última modificación.

Si cualquiera de los ficheros es un directorio, entonces se procesará el contenido de ese directorio.

Ejemplos

Para añadir ficheros en un directorio determinado a un archivo:

C:\FUENTES\JAVA>dir
Directorio de C:\Fuentes\Java

.              <DIR>        14/02/97   3:01 .
..             <DIR>        14/02/97   3:01 ..
TAZA5    GIF         3.965  15/12/96  20:53 Taza1.gif
TAZA2    GIF         4.073  15/12/96  20:53 Taza2.gif
TAZA3    GIF         4.058  15/12/96  20:53 Taza3.gif
TAZA4    GIF         4.028  15/12/96  20:53 Taza4.gif
TAZA1    GIF         3.895  15/12/96  20:53 Taza5.gif
TAZA6    GIF         4.054  15/12/96  20:53 Taza6.gif
TERCIO   GIF         1.640  15/12/96  20:53 Tercio.gif
TAZA~1   CLA         2.382  19/12/96  13:08 Taza.class
GUITARRA AU         52.850  19/12/96  13:08 Guitarra.au
         9 archivo(s)             80.945 bytes
         2 directorio(s)     344.834.048 bytes libres

C:\FUENTES\JAVA>jar cvf fichero.jar *
adding: Taza1.gif
adding: Taza2.gif
adding: Taza3.gif
adding: Taza4.gif
adding: Taza5.gif
adding: Taza6.gif
adding: Tercio.gif
adding: Taza.class
adding: Guitarra.au
C:\FUENTES\JAVA>

Si se tienen directorios separados para las imágenes, los ficheros de sonido y las clases Java, se puede componer un solo fichero jar con todo el contenido de esos directorios:

C:\FUENTES\JAVA>dir
Directorio de C:\Fuentes\Java

.              <DIR>        14/02/97   3:01 .
..             <DIR>        14/02/97   3:01 ..
IMAGENES       <DIR>        14/02/97   3:13 imagenes
SONIDO         <DIR>        14/02/97   3:13 sonido
CLASES         <DIR>        14/02/97   3:13 clases
         0 archivo(s)                  0 bytes
         5 directorio(s)     344.686.592 bytes libres
C:\FUENTES\JAVA>jar cvf fichero.jar imagenes clases sonido
adding: imagenes/Taza1.gif
adding: imagenes/Taza2.gif
adding: imagenes/Taza3.gif
adding: imagenes/Taza4.gif
adding: imagenes/Taza5.gif
adding: imagenes/Taza6.gif
adding: imagenes/Tercio.gif
adding: clases/Taza.class
adding: sonido/Guitarra.au
C:\FUENTES\JAVA>

Se pueden ver las entradas que se han incorporado el fichero jar utilizando la opción t:

C:\FUENTES\JAVA>jar tf fichero.jar
META-INF/MANIFEST.INF
imagenes/Taza1.gif
imagenes/Taza2.gif
imagenes/Taza3.gif
imagenes/Taza4.gif
imagenes/Taza5.gif
imagenes/Taza6.gif
imagenes/Tercio.gif
clases/Taza.class
sonido/Guitarra.au
C:\FUENTES\JAVA>

¿Qué es JAR?

JAR es el acrónimo de Java ARchive, como se ha indicado. Es un formato de ficheros basado en el popular formato de compresión de ficheros ZIP, y se utiliza para poden contener varios ficheros en uno solo. Aunque JAR se pueda utilizar también como herramienta de compresión, la razón principal de su desarrollo e implantación ha sido la de evitar sobrecarga en la red, haciendo que todos los applets Java y sus componentes (ficheros .class, imágenes y sonidos) puedan ser descargados por el navegador en una sola transacción http, en lugar de tener que abrir una conexión por cada una de las piezas. Esto acelera en gran medida la descarga del applet y su puesta en marcha sobre una página web. El formato JAR también soporta compresión, lo que reduce el tamaño del fichero a enviar y contribuye a reducir aún más el tiempo de descarga del applet. Además, los ficheros individuales que se incorporen en un fichero JAR puedes estar firmados digitalmente por el autor del applet para autentificar su origen.

JAR es, por lo tanto:

  • El único formato de archivo accesible desde cualquier plataforma
  • El único formato que maneja ficheros de sonido, imágenes y .class
  • Compatible con cualquier código de applet ya existente
  • Un estándar abierto, totalmente ampliable y escrito en Java
  • La forma más adecuada de reunir todas las piezas que forman un applet

JAR es un archivo ZIP, tal como lo define Pkware, conteniendo un fichero manifest y potencialmente, ficheros firmados.

La acomodación del código html en la marca APPLET para que soporte ficheros JAR es muy sencilla. El fichero JAR en el servidor es identificado mediante el parámetro ARCHIVE, donde se debe indicar el directorio y nombre del fichero JAR que contiene la información correspondiente al applet que indica la marca de la página. Por ejemplo:

<APPLET CODE="MiApplet.class"
  ARCHIVE="jars/miapplet.jar"
  WIDTH="640" HEIGHT="180"
</APPLET>

Obsérvese que el ya familiar parámetro CODE="MiApplet.class" todavía sigue presente. El parámetro CODE, como siempre, indica el nombre del applet donde comienza la ejecución. Sin embargo, el fichero class del applet, y todos los ficheros .class que lo acompañen, serán cargados desde el fichero JAR.

Una vez que el fichero es identificado, será descargado y separado en sus componentes individuales. Durante la ejecución del applet, cuando una nueva clase, imagen o sonido sea requerido por el applet, se buscará en primer lugar en los archivos que estaban asociados al applet en el fichero JAR que contenía al propio applet durante la descarga. Si el fichero no se encontrase entre estos archivos, pasaría a realizarse una búsqueda normal en el servidor del applet, relativa al parámetro CODEBASE, tal como se realiza cuando no se indica nada especial, por defecto.

El parámetro ARCHIVE soporta varios ficheros JAR, separados por comas (,). Cada uno de los ficheros es descargado cuando le toque. Por ejemplo:

<APPLET CODE="MiApplet.class"
  ARCHIVE="clases.jar,imágenes.jar,sonidos.jar"
  WIDTH="640" HEIGHT="180"
</APPLET>

Navegador

Home | Anterior | Siguiente | Indice | Correo