|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class Pack200 extends Object
Обычно механизм упаковщика используется разработчиками приложений, чтобы развернуть или разместить файлы JAR на веб-сайте. Механизм неупаковщика используется приложениями развертывания, чтобы преобразовать поток байтов назад к формату JAR.
Вот пример, используя упаковщика и неупаковщика:
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();
}
Файл Pack200, сжатый с gzip, может быть размещен на веб-серверах HTTP/1.1. Приложения развертывания могут использовать "Accept-Encoding=pack200-gzip". Это указывает к серверу, что клиентское приложение требует версии файла, закодированного с Pack200 и далее сжатый с gzip. Пожалуйста, обратитесь к Руководству по Развертыванию Java для большего количества деталей и методов.
Если не указано иное, передача параметра null конструктору или методу в этом class вызовет a NullPointerException быть брошенным.
| Модификатор и Тип | Класс и Описание |
|---|---|
static interface |
Pack200. Упаковщик
Механизм упаковщика применяет различные преобразования к входному файлу JAR, делая поток пакета, очень сжимаемый компрессором, такие как gzip или zip.
|
static interface |
Pack200. Неупаковщик
Механизм неупаковщика преобразовывает упакованный поток в файл JAR.
|
| Модификатор и Тип | Метод и Описание |
|---|---|
static Pack200.Packer |
newPacker()
Получите новый экземпляр class, который реализует Пакера.
|
static Pack200.Unpacker |
newUnpacker()
Получите новый экземпляр class, который реализует Неупаковщика.
|
public static Pack200.Packer newPacker()
Если системное свойство java.util.jar.Pack200.Packer определяется, то значение принимается, чтобы быть полностью определенным именем конкретной реализации class, который должен реализовать Пакера. Этот class загружается и инстанцируется. Если этот процесс перестал работать тогда, неустановленная ошибка бросается.
Если реализация не была определена с системным свойством, то реализация системного значения по умолчанию, class инстанцируют, и результат, возвращается.
Отметьте: возвращенный объект, как гарантируют, не будет работать правильно, если многократные потоки будут использовать его одновременно. Многопоточное приложение должно или выделить многократные механизмы упаковщика, или иначе сериализировать использование одного механизма с блокировкой.
public static Pack200.Unpacker newUnpacker()
Если системное свойство java.util.jar.Pack200.Unpacker определяется, то значение принимается, чтобы быть полностью определенным именем конкретной реализации class, который должен реализовать Неупаковщика. class загружается и инстанцируется. Если этот процесс перестал работать тогда, неустановленная ошибка бросается.
Если реализация не была определена с системным свойством, то реализация системного значения по умолчанию, class инстанцируют, и результат, возвращается.
Отметьте: возвращенный объект, как гарантируют, не будет работать правильно, если многократные потоки будут использовать его одновременно. Многопоточное приложение должно или выделить многократные механизмы неупаковщика, или иначе сериализировать использование одного механизма с блокировкой.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92