XZ pour Java vise à être une implémentation complète de la compression de données XZ en Java pur.
Caractéristiques:
Le threading est prévu mais on ne sait pas quand il sera implémenté.
Le code source principal est compatible avec Java 8 et versions ultérieures, mais il existe des classes destinées à Java 9 ou versions ultérieures (module-info.java et optimisations de vitesse). Les options de construction par défaut nécessitent OpenJDK 11 ou version ultérieure et créent des binaires compatibles Java 8.
Tous les fichiers de sortie vont dans le répertoire build
.
ant
pour compiler les classes et créer les fichiers JAR.ant doc
pour créer la documentation HTML javadoc.ant -projecthelp
pour voir toutes les cibles disponibles.Des versions reproductibles devraient être possibles. Un horodatage doit être spécifié qui sera utilisé pour les heures de modification des fichiers dans les métadonnées JAR. Les horodatages sont stockés en utilisant le fuseau horaire local, il est donc bon de le remplacer par GMT/UTC. Sur les systèmes POSIX, les commandes suivantes sont équivalentes :
$ ANT_OPTS=-Duser.timezone=GMT
ant -Dant.tstamp.now.iso=2024-07-29T14:10:26Z
$ SOURCE_DATE_EPOCH=1722262226 TZ=UTC0 ant
Lorsque le dépôt Git est disponible, utiliser la date du committer est un moyen d'obtenir une valeur raisonnable :
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
Si vous utilisez Ant une version antérieure à 1.10.2 :
Modifiez build.xml
et supprimez les attributs modificationtime="${timestamp}"
des éléments
.
Si vous utilisez Ant plus ancien que 1.9.8 :
Modifiez build.xml
et supprimez les attributs release des balises
, c'est-à-dire supprimez toutes les occurrences de ces deux lignes :
release="${sourcever}"
release="${sourcever9}"
L'inconvénient de ce qui précède est que les options -source
et -target
seront utilisées à la place de --release
.
Si vous utilisez une version d'OpenJDK antérieure à 9 :
Pour construire avec OpenJDK 8, utilisez -Djava8only=true
sur la ligne de commande ant
. Ensuite, les fichiers nécessitant Java >= 9 ne seront pas construits et xz.jar
ne sera pas un JAR modulaire.
Si vous utilisez une version d'OpenJDK antérieure à 8 :
Ces versions ne sont plus prises en charge. Essayez XZ pour Java 1.9 qui est compatible Java 5 et ne nécessite que la modification de build.properties
pour être construit.
Si vous ne pouvez pas ou ne voulez pas utiliser Ant, compilez simplement tous les fichiers .java dans le répertoire src
(éventuellement ignorez les fichiers de démonstration src/*.java
). Pour la prise en charge du module et les optimisations de vitesse (Java >= 9), compilez également tous les fichiers .java sous le répertoire src9
.
Vous pouvez tester la compression avec XZEncDemo, qui compresse de l'entrée standard à la sortie standard :
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
Vous pouvez tester la décompression avec XZDecDemo, qui décompresse en sortie standard :
java -jar build/jar/XZDecDemo.jar foo.txt.xz