JavaTM Platform
Standard Ed. 6

java.util.jar
クラス Pack200

java.lang.Object
  上位を拡張 java.util.jar.Pack200

public abstract class Pack200
extends Object

JAR ファイルを Pack200 形式のパックストリームに変換にしたり、Pack200 形式のパックストリームを JAR ファイルに変換します。詳細は、http://jcp.org/aboutJava/communityprocess/review/jsr200/index.html の「Network Transfer Format JSR 200 Specification」を参照してください。 

通常、packer エンジンは、Web サイトに JAR ファイルを配備またはホストする場合にアプリケーション開発者により使用されます。unpacker エンジンは、バイトストリームを元の JAR 形式に変換する場合に配備アプリケーションにより使用されます。  

次に、packer および unpacker の使用例を示します。

    import java.util.jar.Pack200;
    import java.util.jar.Pack200.*;
    ...
    // Create the Packer object
    Packer packer = Pack200.newPacker();

    // Initialize the state by setting the desired properties
    Map p = packer.properties();
    // take more time choosing codings for better compression
    p.put(Packer.EFFORT, "7");  // default is "5"
    // use largest-possible archive segments (>10% better compression).
    p.put(Packer.SEGMENT_LIMIT, "-1");
    // reorder files for better compression.
    p.put(Packer.KEEP_FILE_ORDER, Packer.FALSE);
    // smear modification times to a single value.
    p.put(Packer.MODIFICATION_TIME, Packer.LATEST);
    // ignore all JAR deflation requests,
    // transmitting a single request to use "store" mode.
    p.put(Packer.DEFLATE_HINT, Packer.FALSE);
    // discard debug attributes
    p.put(Packer.CODE_ATTRIBUTE_PFX+"LineNumberTable", Packer.STRIP);
    // throw an error if an attribute is unrecognized
    p.put(Packer.UNKNOWN_ATTRIBUTE, Packer.ERROR);
    // pass one class file uncompressed:
    p.put(Packer.PASS_FILE_PFX+0, "mutants/Rogue.class");
    try {
        JarFile jarFile = new JarFile("/tmp/testref.jar");
        FileOutputStream fos = new FileOutputStream("/tmp/test.pack");
        // Call the packer
        packer.pack(jarFile, fos);
        jarFile.close();
        fos.close();
        
        File f = new File("/tmp/test.pack");
        FileOutputStream fostream = new FileOutputStream("/tmp/test.jar");
        JarOutputStream jostream = new JarOutputStream(fostream);
        Unpacker unpacker = Pack200.newUnpacker();
        // Call the unpacker
        unpacker.unpack(f, jostream);
        // Must explicitly close the output.
        jostream.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
 

gzip を使用して圧縮された Pack200 ファイルは、HTTP/1.1 Web サーバーに収容できます。配備アプリケーションは、"Accept-Encoding=pack200-gzip" を使用できます。これは、クライアントアプリケーションが Pack200 でエンコードされ、さらに gzip で圧縮されたファイルのバージョンを要求していることをサーバーに示します。詳細は、「Java Deployment Guide」を参照してください。  

ほかで指定がない場合、null 引数をコンストラクタ、またはこのクラスのメソッドへ渡すと NullPointerException がスローされます。

導入されたバージョン:
1.5

入れ子のクラスの概要
static interface Pack200.Packer
          packer エンジンは、さまざまな変換を入力 JAR ファイルに適用して、パックストリームを gzip や zip などのコンプレッサを使用して大幅に圧縮可能にします。
static interface Pack200.Unpacker
          unpacker エンジンは、パックされたストリームを JAR ファイルに変換します。
 
メソッドの概要
static Pack200.Packer newPacker()
          Packer を実装するクラスの新規インスタンスを取得します。
static Pack200.Unpacker newUnpacker()
          Unpacker を実装するクラスの新規インスタンスを取得します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

newPacker

public static Pack200.Packer newPacker()
Packer を実装するクラスの新規インスタンスを取得します。
  • システムプロパティー java.util.jar.Pack200.Packer が定義されていれば、値が具象実装クラスの完全修飾名になります。これは Packer を実装する必要があります。このクラスがロードされ、そのインスタンスが作成されます。この処理に失敗した場合は、未指定のエラーがスローされます。

  • システムプロパティーを使って実装が指定されていない場合、システムのデフォルト実装クラスのインスタンスが作成され、結果が返されます。

  • 注:返されるオブジェクトを複数スレッドが同時に使用する場合、そのオブジェクトが適正に動作することは保証されません。マルチスレッドのアプリケーションは、複数の packer エンジンを割り当てるか、ロックを持つ 1 つのエンジンの使用を直列化する必要があります。

    戻り値:
    新しく割り当てられた Packer エンジン

    newUnpacker

    public static Pack200.Unpacker newUnpacker()
    Unpacker を実装するクラスの新規インスタンスを取得します。
  • システムプロパティー java.util.jar.Pack200.Unpacker が定義されていれば、値は具象実装クラスの完全修飾名になります。これは Unpacker を実装する必要があります。このクラスがロードされ、そのインスタンスが作成されます。この処理に失敗した場合は、未指定のエラーがスローされます。

  • システムプロパティーを使って実装が指定されていない場合、システムのデフォルト実装クラスのインスタンスが作成され、結果が返されます。

  • 注:返されるオブジェクトを複数スレッドが同時に使用する場合、そのオブジェクトが適正に動作することは保証されません。マルチスレッドのアプリケーションは、複数の unpacker エンジンを割り当てるか、ロックを持つ 1 つのエンジンの使用を直列化する必要があります。

    戻り値:
    新しく割り当てられた Unpacker エンジン

    JavaTM Platform
    Standard Ed. 6

    バグの報告と機能のリクエスト
    さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

    Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。