XZ for Java pretende ser uma implementação completa de compactação de dados XZ em Java puro.
Características:
O threading está planejado, mas não se sabe quando será implementado.
O código-fonte principal é compatível com Java 8 e posterior, mas existem classes que são para Java 9 ou posterior (module-info.java e otimizações de velocidade). As opções de construção padrão requerem OpenJDK 11 ou posterior e criam binários compatíveis com Java 8.
Todos os arquivos de saída vão para o diretório build
.
ant
para compilar as classes e criar os arquivos JAR.ant doc
para construir a documentação HTML do javadoc.ant -projecthelp
para ver todos os destinos disponíveis.Construções reproduzíveis devem ser possíveis. É necessário especificar um carimbo de data/hora que será usado para tempos de modificação de arquivo nos metadados JAR. Os carimbos de data e hora são armazenados usando o fuso horário local, portanto, é bom substituí-los para GMT/UTC. Em sistemas POSIX, os seguintes comandos são equivalentes:
$ ANT_OPTS=-Duser.timezone=GMT
ant -Dant.tstamp.now.iso=2024-07-29T14:10:26Z
$ SOURCE_DATE_EPOCH=1722262226 TZ=UTC0 ant
Quando o repositório Git está disponível, usar a data do committer é uma forma de obter um valor razoável:
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
Se você estiver usando Ant anterior a 1.10.2:
Edite build.xml
e remova os modificationtime="${timestamp}"
dos elementos
.
Se você estiver usando Ant anterior a 1.9.8:
Edite build.xml
e remova os atributos de release das tags
, ou seja, remova todas as ocorrências destas duas linhas:
release="${sourcever}"
release="${sourcever9}"
A desvantagem do acima é que as opções -source
e -target
serão usadas em vez de --release
.
Se você estiver usando uma versão do OpenJDK anterior à 9:
Para construir com OpenJDK 8, use -Djava8only=true
na linha de comando ant
. Então os arquivos que requerem Java >= 9 não serão compilados e xz.jar
não será um JAR modular.
Se você estiver usando uma versão do OpenJDK anterior à 8:
Essas versões não são mais suportadas. Experimente o XZ para Java 1.9, que é compatível com Java 5 e requer apenas a edição de build.properties
para construir.
Se você não pode ou não deseja usar o Ant, apenas compile todos os arquivos .java no diretório src
(possivelmente ignore os arquivos de demonstração src/*.java
). Para suporte de módulo e otimizações de velocidade (Java >= 9), compile também todos os arquivos .java no diretório src9
.
Você pode testar a compactação com o XZEncDemo, que compacta da entrada padrão para a saída padrão:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
Você pode testar a descompactação com XZDecDemo, que descompacta para a saída padrão:
java -jar build/jar/XZDecDemo.jar foo.txt.xz