XZ für Java zielt darauf ab, eine vollständige Implementierung der XZ-Datenkomprimierung in reinem Java zu sein.
Merkmale:
Threading ist geplant, es ist jedoch nicht bekannt, wann es implementiert wird.
Der Hauptquellcode ist mit Java 8 und höher kompatibel, es gibt jedoch Klassen für Java 9 oder höher (module-info.java und Geschwindigkeitsoptimierungen). Die Standard-Build-Optionen erfordern OpenJDK 11 oder höher und erstellen Java 8-kompatible Binärdateien.
Alle Ausgabedateien werden in das build
-Verzeichnis verschoben.
ant
ein, um die Klassen zu kompilieren und die JAR-Dateien zu erstellen.ant doc
ein, um die Javadoc-HTML-Dokumentation zu erstellen.ant -projecthelp
ein, um alle verfügbaren Ziele anzuzeigen.Reproduzierbare Builds sollten möglich sein. Es muss ein Zeitstempel angegeben werden, der für Dateiänderungszeiten in den JAR-Metadaten verwendet wird. Die Zeitstempel werden unter Verwendung der lokalen Zeitzone gespeichert, daher empfiehlt es sich, sie auf GMT/UTC zu überschreiben. Auf POSIX-Systemen sind die folgenden Befehle äquivalent:
$ ANT_OPTS=-Duser.timezone=GMT
ant -Dant.tstamp.now.iso=2024-07-29T14:10:26Z
$ SOURCE_DATE_EPOCH=1722262226 TZ=UTC0 ant
Wenn das Git-Repository verfügbar ist, ist die Verwendung des Committer-Datums eine Möglichkeit, einen vernünftigen Wert zu erhalten:
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
Wenn Sie Ant älter als 1.10.2 verwenden:
Bearbeiten Sie build.xml
und entfernen Sie die Attribute modificationtime="${timestamp}"
aus den <jar>
-Elementen.
Wenn Sie Ant älter als 1.9.8 verwenden:
Bearbeiten Sie build.xml
und entfernen Sie die Release-Attribute aus den <javac>
-Tags, d. h. alle Vorkommen dieser beiden Zeilen:
release="${sourcever}"
release="${sourcever9}"
Der Nachteil des oben Gesagten besteht darin, dass dann die Optionen -source
und -target
anstelle von --release
verwendet werden.
Wenn Sie eine OpenJDK-Version älter als 9 verwenden:
Um mit OpenJDK 8 zu erstellen, verwenden Sie -Djava8only=true
in der ant
-Befehlszeile. Dann werden die Dateien, die Java >= 9 erfordern, nicht erstellt und xz.jar
wird kein modulares JAR sein.
Wenn Sie eine OpenJDK-Version älter als 8 verwenden:
Diese Versionen werden nicht mehr unterstützt. Probieren Sie XZ für Java 1.9 aus, das mit Java 5 kompatibel ist und zum Erstellen nur die Bearbeitung build.properties
erfordert.
Wenn Sie Ant nicht verwenden können oder wollen, kompilieren Sie einfach alle .java-Dateien im src
-Verzeichnis (überspringen Sie möglicherweise die Demodateien src/*.java
). Für Modulunterstützung und Geschwindigkeitsoptimierungen (Java >= 9) kompilieren Sie auch alle .java-Dateien im Verzeichnis src9
.
Sie können die Komprimierung mit XZEncDemo testen, das von der Standardeingabe zur Standardausgabe komprimiert:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
Sie können die Dekomprimierung mit XZDecDemo testen, das auf die Standardausgabe dekomprimiert:
java -jar build/jar/XZDecDemo.jar foo.txt.xz