blob: ab8ae59d57d4d8609366dd9568980de0b2646e88 [file] [log] [blame]
XZ for Java
===========
Introduction
This aims to be a complete implementation of XZ data compression
in pure Java. Features:
- Full support for the .xz file format specification version 1.2.0
- Single-threaded streamed compression and decompression
- Single-threaded decompression with limited random access support
- Raw streams (no .xz headers) for advanced users, including LZMA2
with preset dictionary
Threading is planned but it is unknown when it will be implemented.
For the latest source code, see the project home page:
https://tukaani.org/xz/java.html
The source code is compatible with Java 8 and later (except
module-info.java which is Java 9 or later). However, the default
build options require OpenJDK 11 or later, and create Java 8
compatible binaries.
Building with Apache Ant
Type "ant" to compile the classes and create the .jar files.
Type "ant doc" to build the javadoc HTML documentation. Note
that building the documentation will download a small file named
"element-list" or "package-list" from Oracle to enable linking to
the documentation of the standard Java classes.
If you are using Ant older than 1.9.8:
Edit build.xml and remove the release attributes from <javac>
tags, that is, remove all occurrences of these two lines:
release="${sourcever}"
release="${sourcever9}"
The downside of the above is that then -source and -target
options will be used instead of --release.
If you are using OpenJDK version older than 11:
Adjust extdoc_url and extdoc_file to point to an older URL
and to use "package-list" instead of "element-list". This
modification isn't required if the documentation won't be
built.
If you are using OpenJDK version older than 9:
Comment the sourcever9 line in the file build.properties.
When it is commented, module-info.java won't be built and
xz.jar won't be a modular JAR.
If you are using OpenJDK version older than 8:
These versions are no longer supported. Try XZ for Java 1.9
which is Java 5 compatible and only requires editing
build.properties to build.
Building without Apache Ant
If you cannot or don't want to use Ant, just compile all .java files
under the "src" directory (possibly skip the demo files src/*.java).
For module support (Java >= 9) compile also src9/module-info.java.
Demo programs
You can test compression with XZEncDemo, which compresses from
standard input to standard output:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
You can test decompression with XZDecDemo, which decompresses to
standard output:
java -jar build/jar/XZDecDemo.jar foo.txt.xz
Contact information
Email: Lasse Collin <lasse.collin@tukaani.org>
IRC: Larhzu on #tukaani on Libera Chat
GitHub: https://github.com/tukaani-project/xz-java