JAR (formato de archivo)


Un JAR ( J ava AR chive) es un formato de archivo de paquete que normalmente se usa para agregar muchos archivos de clase Java y metadatos y recursos asociados (texto, imágenes, etc.) en un archivo para su distribución. [3]

Los archivos JAR son archivos de almacenamiento que incluyen un archivo de manifiesto específico de Java . Están construidos en formato ZIP y normalmente tienen una .jar extensión de archivo . [4]

Un archivo JAR permite que los tiempos de ejecución de Java implementen de manera eficiente una aplicación completa, incluidas sus clases y sus recursos asociados, en una sola solicitud. Los elementos del archivo JAR se pueden comprimir, lo que acorta los tiempos de descarga.

Un archivo JAR puede contener un archivo de manifiesto, que se encuentra en META-INF/MANIFEST.MF. Las entradas en el archivo de manifiesto describen cómo usar el archivo JAR. Por ejemplo, se puede usar una entrada Classpath para especificar otros archivos JAR para cargar con el JAR.

El contenido de un archivo se puede extraer utilizando cualquier software de compresión estándar o la jarutilidad de línea de comandos: " -xf foo.".

Los desarrolladores pueden firmar archivos JAR digitalmente. En ese caso, la información de la firma pasa a formar parte del archivo de manifiesto incrustado. El JAR en sí no está firmado, sino que cada archivo dentro del archivo se enumera junto con su suma de verificación; son estas sumas de comprobación las que están firmadas. Múltiples entidades pueden firmar el archivo JAR, cambiando el propio archivo JAR con cada firma, aunque los propios archivos firmados siguen siendo válidos. Cuando el tiempo de ejecución de Java carga archivos JAR firmados, puede validar las firmas y negarse a cargar clases que no coincidan con la firma. También puede admitir paquetes 'sellados', en los que Classloadersolo permitirá que las clases de Java se carguen en el mismo paquete si todas están firmadas por las mismas entidades. Esto evita que se inserte código malicioso en un paquete existente y, por lo tanto, obtenga acceso a clases y datos del ámbito del paquete.