XZ для Java призван стать полной реализацией сжатия данных XZ на чистой Java.
Функции:
Поточность планируется, но неизвестно, когда она будет реализована.
Основной исходный код совместим с Java 8 и более поздних версий, но есть классы для Java 9 или более поздних версий (модуль-info.java и оптимизация скорости). Для параметров сборки по умолчанию требуется OpenJDK 11 или более поздняя версия, а также создаются двоичные файлы, совместимые с Java 8.
Все выходные файлы попадают в каталог build
.
ant
, чтобы скомпилировать классы и создать файлы JAR.ant doc
чтобы создать HTML-документацию Javadoc.ant -projecthelp
чтобы увидеть все доступные цели.Воспроизводимые сборки должны быть возможны. Необходимо указать временную метку, которая будет использоваться для времени изменения файла в метаданных JAR. Временные метки сохраняются с использованием местного часового пояса, поэтому рекомендуется заменить его на GMT/UTC. В системах POSIX следующие команды эквивалентны:
$ ANT_OPTS=-Duser.timezone=GMT
ant -Dant.tstamp.now.iso=2024-07-29T14:10:26Z
$ SOURCE_DATE_EPOCH=1722262226 TZ=UTC0 ant
Когда репозиторий Git доступен, использование даты коммиттера — один из способов получить разумное значение:
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
Если вы используете Ant старше 1.10.2:
Отредактируйте build.xml
и удалите атрибуты modificationtime="${timestamp}"
из элементов <jar>
.
Если вы используете Ant старше 1.9.8:
Отредактируйте build.xml
и удалите атрибуты выпуска из тегов <javac>
, то есть удалите все вхождения этих двух строк:
release="${sourcever}"
release="${sourcever9}"
Обратной стороной вышесказанного является то, что тогда вместо --release
будут использоваться параметры -source
и -target
.
Если вы используете версию OpenJDK старше 9:
Для сборки с использованием OpenJDK 8 используйте -Djava8only=true
в командной строке ant
. Тогда файлы, требующие Java >= 9, не будут собраны, а xz.jar
не будет модульным JAR.
Если вы используете версию OpenJDK старше 8:
Эти версии больше не поддерживаются. Попробуйте XZ для Java 1.9, который совместим с Java 5 и требует только редактирования build.properties
для сборки.
Если вы не можете или не хотите использовать Ant, просто скомпилируйте все файлы .java в каталоге src
(возможно, пропустите демонстрационные файлы src/*.java
). Для поддержки модулей и оптимизации скорости (Java >= 9) также скомпилируйте все файлы .java в каталоге src9
.
Вы можете протестировать сжатие с помощью XZEncDemo, который сжимает стандартный ввод в стандартный вывод:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
Вы можете протестировать распаковку с помощью XZDecDemo, который распаковывает в стандартный вывод:
java -jar build/jar/XZDecDemo.jar foo.txt.xz