モジュール java.base
パッケージ java.util.jar

クラスPack200


  • @Deprecated(since="11",
                forRemoval=true)
    public abstract class Pack200
    extends Object
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    このクラスは非推奨であり、将来のリリースで削除される予定です。
    JARファイルをPack200形式のパック・ストリームに変換にしたり、Pack200形式のパック・ストリームをJARファイルに変換します。 「ネットワーク転送形式JSR 200仕様」を参照してください

    通常、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
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      このインタフェースは非推奨であり、将来のリリースで削除される予定です。
      static interface  Pack200.Unpacker
      削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
      このインタフェースは非推奨であり、将来のリリースで削除される予定です。
    • メソッドの詳細

      • newPacker

        public static Pack200.Packer newPacker()
        削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
        Packerを実装するクラスの新規インスタンスを取得します。
        • システム・プロパティjava.util.jar.Pack200.Packerが定義されていれば、値が具象実装クラスの完全指定名になります。これはPackerを実装する必要があります。 このクラスがロードされ、そのインスタンスが作成されます。 この処理に失敗した場合は、未指定のエラーがスローされます。

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

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

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

        public static Pack200.Unpacker newUnpacker()
        削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
        Unpackerを実装するクラスの新規インスタンスを取得します。
        • システム・プロパティjava.util.jar.Pack200.Unpackerが定義されていれば、値が具象実装クラスの完全指定名になります。これはUnpackerを実装する必要があります。 このクラスがロードされ、そのインスタンスが作成されます。 この処理に失敗した場合は、未指定のエラーがスローされます。

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

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

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