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デスクトップ上でアイコンをクリックして実行することもできます。