| <?xml version="1.0"?> |
| <!-- |
| |
| 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. |
| |
| --> |
| <document> |
| <properties> |
| <title>Overview</title> |
| <author email="[email protected]">Commons Documentation Team</author> |
| </properties> |
| <body> |
| <section name="Apache Commons Compress™"> |
| <p> |
| The Apache Commons Compress library defines an API for |
| working with ar, cpio, Unix dump, tar, zip, gzip, XZ, |
| Pack200, bzip2, 7z, arj, lzma, snappy, DEFLATE, lz4, |
| Brotli, Zstandard, DEFLATE64 and Z files. |
| </p> |
| <p> |
| The code in this component has many origins: |
| </p> |
| <ul> |
| <li>The bzip2, tar and zip support came from Avalon's |
| Excalibur, but originally from Ant, as far as life in |
| Apache goes. The tar package is originally Tim Endres' |
| public domain package. The bzip2 package is based on |
| the work done by Keiron Liddle as well as Julian Seward's |
| <a href="http://www.bzip.org/index.html">libbzip2</a>. |
| It has migrated |
| via:<br/> Ant -> Avalon-Excalibur -> Commons-IO |
| -> Commons-Compress.</li> |
| <li>The cpio package has been contributed by Michael Kuss |
| and |
| the <a href="http://jrpm.sourceforge.net/">jRPM</a> |
| project.</li> |
| </ul> |
| |
| </section> |
| |
| <section name="Status"> |
| <p>The current release is 1.18 and requires Java 7.</p> |
| |
| <p>Below we highlight some new features, for a full list |
| of changes see the <a href="changes-report.html">Changes |
| Report</a>.</p> |
| |
| <subsection name="What's new in 1.18?"> |
| <ul> |
| <li>The CPIO package now properly handles file names |
| using a mult-byte encoding.</li> |
| <li>ZipArchiveInputStream can now deal with APK files |
| containing an APK signing block.</li> |
| <li>It is now possible to specifiy various parameters |
| for Zstd output.</li> |
| </ul> |
| </subsection> |
| </section> |
| |
| <section name="Documentation"> |
| <p>The compress component is split into <em>compressors</em> and |
| <em>archivers</em>. While <em>compressors</em> |
| (un)compress streams that usually store a single |
| entry, <em>archivers</em> deal with archives that contain |
| structured content represented |
| by <code>ArchiveEntry</code> instances which in turn |
| usually correspond to single files or directories.</p> |
| |
| <p>Currently the bzip2, Pack200, XZ, gzip, lzma, brotli, |
| Zstandard and Z formats are |
| supported as compressors where gzip support is mostly provided by |
| the <code>java.util.zip</code> package and Pack200 support |
| by the <code>java.util.jar</code> package of the Java |
| class library. XZ and lzma support is provided by the public |
| domain <a href="https://tukaani.org/xz/java.html">XZ for |
| Java</a> library. Brotli support is provided by the MIT |
| licensed <a href="https://github.com/google/brotli">Google |
| Brotli decoder</a>. Zstandard support is provided by the BSD |
| licensed <a href="https://github.com/luben/zstd-jni">Zstd-jni</a>. |
| As of Commons Compress 1.18 support for the DEFLATE64, Z and Brotli |
| formats is read-only.</p> |
| |
| <p>The ar, arj, cpio, dump, tar, 7z and zip formats are supported as |
| archivers where the <a href="zip.html">zip</a> |
| implementation provides capabilities that go beyond the |
| features found in java.util.zip. As of Commons Compress |
| 1.18 support for the dump and arj formats is |
| read-only - 7z can read most compressed and encrypted |
| archives but only write unencrypted ones. LZMA(2) support |
| in 7z requires <a href="https://tukaani.org/xz/java.html">XZ for |
| Java</a> as well.</p> |
| |
| <p>The compress component provides abstract base classes for |
| compressors and archivers together with factories that can |
| be used to choose implementations by algorithm name. In |
| the case of input streams the factories can also be used |
| to guess the format and provide the matching |
| implementation.</p> |
| |
| <ul> |
| <li>The <a href="examples.html">user guide</a> contains |
| more detailed information and some examples.</li> |
| <li>The <a href="limitations.html">known limitations and |
| problems</a> page lists the currently known problems |
| grouped by the format they apply to.</li> |
| <li>The <a href="apidocs/index.html">Javadoc</a> of the latest GIT</li> |
| <li>The <a href="https://git-wip-us.apache.org/repos/asf?p=commons-compress.git;a=tree">GIT |
| repository</a> can be browsed.</li> |
| </ul> |
| </section> |
| <section name="Releases"> |
| <p> |
| <a href="https://commons.apache.org/compress/download_compress.cgi">Download now!</a> |
| </p> |
| </section> |
| </body> |
| </document> |