public abstract class Pack200 extends Object
通常、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配備ガイド』を参照してください。
ほかで指定がない場合、null引数をコンストラクタ、またはこのクラスのメソッドへ渡すとNullPointerException
がスローされます。
修飾子と型 | クラスと説明 |
---|---|
static interface |
Pack200.Packer
packerエンジンは、さまざまな変換を入力JARファイルに適用して、パック・ストリームをgzipやzipなどのコンプレッサを使用して大幅に圧縮可能にします。
|
static interface |
Pack200.Unpacker
unpackerエンジンは、パックされたストリームをJARファイルに変換します。
|
修飾子と型 | メソッドと説明 |
---|---|
static Pack200.Packer |
newPacker()
Packerを実装するクラスの新規インスタンスを取得します。
|
static Pack200.Unpacker |
newUnpacker()
Unpackerを実装するクラスの新規インスタンスを取得します。
|
public static Pack200.Packer newPacker()
システム・プロパティjava.util.jar.Pack200.Packerが定義されていれば、値が具象実装クラスの完全指定名になります。これはPackerを実装する必要があります。このクラスがロードされ、そのインスタンスが作成されます。この処理に失敗した場合は、未指定のエラーがスローされます。
システム・プロパティを使って実装が指定されていない場合、システムのデフォルト実装クラスのインスタンスが作成され、結果が返されます。
注: 返されるオブジェクトを複数スレッドが同時に使用する場合、そのオブジェクトが適正に動作することは保証されません。マルチ・スレッドのアプリケーションは、複数のpackerエンジンを割り当てるか、ロックを持つ1つのエンジンの使用を直列化する必要があります。
public static Pack200.Unpacker newUnpacker()
システム・プロパティjava.util.jar.Pack200.Unpackerが定義されていれば、値が具象実装クラスの完全指定名になります。これはUnpackerを実装する必要があります。このクラスがロードされ、そのインスタンスが作成されます。この処理に失敗した場合は、未指定のエラーがスローされます。
システム・プロパティを使って実装が指定されていない場合、システムのデフォルト実装クラスのインスタンスが作成され、結果が返されます。
注: 返されるオブジェクトを複数スレッドが同時に使用する場合、そのオブジェクトが適正に動作することは保証されません。マルチ・スレッドのアプリケーションは、複数のunpackerエンジンを割り当てるか、ロックを持つ1つのエンジンの使用を直列化する必要があります。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.