Java ARchive. Jar désigne également un récipient (bouteille, bocal, etc.) en anglais.

Besoin

Archiver/packager des ressources/extensions/applications Java.

Analyses

Les fichiers JAR peuvent être très simples (regroupement de classes) mais leur contenu peut aussi être spécialisé pour des lecteurs spéciaux (conteneurs EJB, Web, d'Applets, etc.).

Exemples

Exemples de JAR
ejb-jar WAR RAR EAR Applet
Contenu
  • org
    • javarome
      • myapp
        • business
          • Account.class
          • AccountBean.class
          • AccountKey.class
          • TransferRemote.class
          • TransferBean.class
          • UtilityClass.class
  • META-INF/
    • ejb-jar.xml
  • index.html
  • Logon.jsp
  • Menu.jsp
  • AnApplet.class
  • images/
    • Logo.gif
  • WEB-INF/
    • web.xml
    • struts-config.xml
    • struts-bean.tld
    • classes/
      • org
        • javarome
          • myapp
            • webapp
              • MainServlet.class
              • UtilityClass.class
    • lib/
      • struts.jar
  • library.jar
  • META-INF/
    • ra.xml
  • clientModule.jar
  • ejbModule.jar
  • webModule1.war
  • webModule2.war
  • connector.rar
  • META-INF/
    • application.xml
  • MonApplet.class
  • MaClasseUtilitaire.class
  • images/
    • MonImage.gif
  • sounds/
    • MonSon.au
Commentaire Représente un module EJB Web Archive. Représente une WebApp (module Web J2EE) et contient les classes nécessaires à ses Servlets et/ou JSP

Resource ARchive, contenant les classes nécessaires à un connecteur JCA

Enterprise ARchive, représentant une application J2EE (contenant des modules ejb-jar et/ou war et/ou rar et/ou client. L'applet peut ainsi être téléchargée en une seule requête HTTP (téléchargeant le fichier JAR) au lieu de n (1 pour récupérer chaque classe, image... nécessaire à l'applet).

Conception

La structure standard d'un fichier JAR est la suivante (tout est optionnel et des ajouts sont possibles, voir les exemples) :

  • Fichiers
  • META-INF (en majuscules obligatoirement)
    • MANIFEST.MF : Définition des données du package et d'extension.
    • INDEX.LIST : Généré par l'option "-i" de l'outil jar, contenenant l'information de localisation des packages définis dans une application ou une extension.
    • xxx.SF : Fichier de signature xxx.
    • yyy.DSA : Fichier de bloc de signature numérique pour le fichier yyy.
    • services/
      • Fichiers de configurations des fournisseurs (noms des fabriques d'implémentations JAXP par exemple).

Implémentation

Il est possible d'accéder à des fichiers JAR via l'API standard fournie dans J2SE dans le package java.util.jar.

Notes

  • Basé sur (et compatible avec) les fichiers ZIP (peuvent donc être compressés).
  • Permet le téléchargement d'un ensemble de ressources Java (classes, images, fichier de propriétés, etc.) en un seul échange réseau.
  • peut dépendre d'autres fichiers Jar, via l'entrée Class-Path de son fichier Manifest.
  • Peut être signé numériquement.