aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/apache/commons/compress/compressors/pack200/package.html
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/apache/commons/compress/compressors/pack200/package.html')
-rw-r--r--src/main/java/org/apache/commons/compress/compressors/pack200/package.html82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/main/java/org/apache/commons/compress/compressors/pack200/package.html b/src/main/java/org/apache/commons/compress/compressors/pack200/package.html
new file mode 100644
index 000000000..9dbf2a065
--- /dev/null
+++ b/src/main/java/org/apache/commons/compress/compressors/pack200/package.html
@@ -0,0 +1,82 @@
+<html>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+ <body>
+ <p>Provides stream classes for compressing and decompressing
+ streams using the Pack200 algorithm used to compress Java
+ archives.</p>
+
+ <p>The streams of this package only work on JAR archives, i.e. a
+ {@link
+ org.apache.commons.compress.compressors.pack200.Pack200CompressorOutputStream
+ Pack200CompressorOutputStream} expects to be wrapped around a
+ stream that a valid JAR archive will be written to and a {@link
+ org.apache.commons.compress.compressors.pack200.Pack200CompressorInputStream
+ Pack200CompressorInputStream} provides a stream to read from a
+ JAR archive.</p>
+
+ <p>JAR archives compressed with Pack200 will in general be
+ different from the original archive when decompressed again.
+ For details see
+ the <a href="https://download.oracle.com/javase/1.5.0/docs/api/java/util/jar/Pack200.html">API
+ documentation of Pack200</a>.</p>
+
+ <p>The streams of this package work on non-deflated streams,
+ i.e. archives like those created with the <code>--no-gzip</code>
+ option of the JDK's <code>pack200</code> command line tool. If
+ you want to work on deflated streams you must use an additional
+ stream layer - for example by using Apache Commons Compress'
+ gzip package.</p>
+
+ <p>The Pack200 API provided by the Java class library doesn't lend
+ itself to real stream
+ processing. <code>Pack200CompressorInputStream</code> will
+ uncompress its input immediately and then provide
+ an <code>InputStream</code> to a cached result.
+ Likewise <code>Pack200CompressorOutputStream</code> will not
+ write anything to the given OutputStream
+ until <code>finish</code> or <code>close</code> is called - at
+ which point the cached output written so far gets
+ compressed.</p>
+
+ <p>Two different caching modes are available - "in memory", which
+ is the default, and "temporary file". By default data is cached
+ in memory but you should switch to the temporary file option if
+ your archives are really big.</p>
+
+ <p>Given there always is an intermediate result
+ the <code>getBytesRead</code> and <code>getCount</code> methods
+ of <code>Pack200CompressorInputStream</code> are meaningless
+ (read from the real stream or from the intermediate result?)
+ and always return 0.</p>
+
+ <p>During development of the initial version several attempts have
+ been made to use a real streaming API based for example
+ on <code>Piped(In|Out)putStream</code> or explicit stream
+ pumping like Commons Exec's <code>InputStreamPumper</code> but
+ they have all failed because they rely on the output end to be
+ consumed completely or else the <code>(un)pack</code> will block
+ forever. Especially for <code>Pack200InputStream</code> it is
+ very likely that it will be wrapped in
+ a <code>ZipArchiveInputStream</code> which will never read the
+ archive completely as it is not interested in the ZIP central
+ directory data at the end of the JAR archive.</p>
+
+ </body>
+</html>