XZ para Java pretende ser una implementación completa de la compresión de datos XZ en Java puro.
Características:
Está previsto el subprocesamiento, pero se desconoce cuándo se implementará.
El código fuente principal es compatible con Java 8 y posteriores pero hay clases que son para Java 9 o posteriores (module-info.java y optimizaciones de velocidad). Las opciones de compilación predeterminadas requieren OpenJDK 11 o posterior y crean archivos binarios compatibles con Java 8.
Todos los archivos de salida van al directorio build
.
ant
para compilar las clases y crear los archivos JAR.ant doc
para crear la documentación HTML de javadoc.ant -projecthelp
para ver todos los objetivos disponibles.Debería ser posible realizar construcciones reproducibles. Es necesario especificar una marca de tiempo que se utilizará para las horas de modificación de archivos en los metadatos JAR. Las marcas de tiempo se almacenan utilizando la zona horaria local, por lo que es bueno anularlas a GMT/UTC. En sistemas POSIX, los siguientes comandos son equivalentes:
$ ANT_OPTS=-Duser.timezone=GMT
ant -Dant.tstamp.now.iso=2024-07-29T14:10:26Z
$ SOURCE_DATE_EPOCH=1722262226 TZ=UTC0 ant
Cuando el repositorio de Git está disponible, usar la fecha del confirmador es una forma de obtener un valor razonable:
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
Si está utilizando Ant anterior a 1.10.2:
Edite build.xml
y elimine los atributos modificationtime="${timestamp}"
de los elementos <jar>
.
Si está utilizando Ant anterior a 1.9.8:
Edite build.xml
y elimine los atributos de lanzamiento de las etiquetas <javac>
, es decir, elimine todas las apariciones de estas dos líneas:
release="${sourcever}"
release="${sourcever9}"
La desventaja de lo anterior es que entonces se usarán las opciones -source
y -target
en lugar de --release
.
Si está utilizando una versión de OpenJDK anterior a 9:
Para compilar con OpenJDK 8, use -Djava8only=true
en la línea de comando ant
. Entonces los archivos que requieran Java >= 9 no se compilarán y xz.jar
no será un JAR modular.
Si está utilizando una versión de OpenJDK anterior a 8:
Estas versiones ya no son compatibles. Pruebe XZ para Java 1.9, que es compatible con Java 5 y solo requiere editar build.properties
para compilar.
Si no puede o no quiere usar Ant, simplemente compile todos los archivos .java en el directorio src
(posiblemente omita los archivos de demostración src/*.java
). Para compatibilidad con módulos y optimizaciones de velocidad (Java >= 9), compile también todos los archivos .java en el directorio src9
.
Puede probar la compresión con XZEncDemo, que comprime desde la entrada estándar a la salida estándar:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
Puedes probar la descompresión con XZDecDemo, que descomprime a la salida estándar:
java -jar build/jar/XZDecDemo.jar foo.txt.xz