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 で AppletClassLoder のインスタンスを使ってロードされます。これは、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 デスクトップ上でアイコンをクリックすることで直接実行できます。