JavaTM 2 Platform
Standard Ed. 5.0

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 Trasfer 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 2 Platform
    Standard Ed. 5.0

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

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