JAR は Java ARchive の略です。これは普及している ZIP ファイル形式に基づくファイル形式で、多数のファイルを 1 つにまとめるために使用されます。JAR は、一般的なアーカイブツールとして使用できますが、これを開発した主な動機は、Java アプレットおよびその必須のコンポーネント (.class ファイル、イメージと音声) がそれぞれに対して新しい HTTP 接続を開くことなく単一の HTTP トランザクションで、ブラウザにダウンロードできるようにすることでした。これはアプレットを Web ページにロードし機能させる速度を大きく改善します。JAR 形式は圧縮もサポートしており、これによってファイルサイズが縮小し、ダウンロードの所要時間がさらに短縮します。さらに、アプレットの作成者が、JAR ファイルの個別のエントリにデジタル署名して、その出所を認証することができます。
JAR には、次の特性があります。
JAR は PKWARE で定義されている zip アーカイブからなり、マニフェストファイルを含み、「JAR ファイルの仕様」で定義されているような署名ファイルを含むこともあります。
<applet code=Animator.class archive="jars/animator.jar" width=460 height=160> <param name=foo value="bar"> </applet>従来からある CODE=myApplet.class パラメータも、引き続き必要であることに注意してください。CODE パラメータは、従来と同じく、実行が開始されるアプレットの名前を識別します。ただし、アプレットのクラスファイルとそのすべてのヘルパークラスは、JAR ファイルからロードされます。
ARCHIVE 属性は、「プリロードされる」クラスとその他のリソースを含む 1 つ以上の JAR ファイルを表します。これらのクラスは、指定された CODEBASE で AppletClassLoader のインスタンスを使ってロードされます。これは archive = archiveList という形式を取ります。archiveList 内のアーカイブは「,」で区切られます。
アーカイブファイルは、いったん識別されると、ダウンロードされ、コンポーネントに分離されます。アプレットの実行中に、新しいクラス、イメージまたはオーディオクリップがアプレットによって要求されたとき、最初にアプレットに関連するアーカイブ内で検索されます。ダウンロードされたアーカイブの中でファイルが見つからない場合、アプレットサーバー上で CODEBASE からの相対位置を検索します。つまり、JDK1.0.2 での検索方法と同様です。
archive タグは、複数の JAR ファイルを指定することがあります。各 JAR ファイルは「,」(コンマ) で区切る必要があります。順番に各ファイルがダウンロードされます。
<applet code=Animator.class archive="classes.jar , images.jar , sounds.jar" width=460 height=160> <param name=foo value="bar"> </applet>アーカイブパラメータのエントリの間には、いくつでも空白を入れることができます。さらに、archive タグ自体は、大文字と小文字を区別しません。このため、小文字だけ、大文字だけ、または「ArCHiVe」のように大文字と小文字を組み合わせて指定することができます。
Solaris 2.6 のカーネルは、JAR ファイルを表す特別な「マジック」ナンバーを認識するようにすでに拡張が施されており、java -jar で JAR ファイルを Solaris のネイティブ実行可能ファイルであるかのように起動できるようになっています。そのため、JAR ファイルにまとめられたアプリケーションは、コマンド行から直接実行することも、CDE デスクトップ上でアイコンをクリックして実行することもできます。