XZ for Java 旨在成為純 Java 中 XZ 資料壓縮的完整實作。
特徵:
線程化已在計劃中,但尚不清楚何時實施。
主要原始碼與 Java 8 及更高版本相容,但也有適用於 Java 9 或更高版本的類別(module-info.java 和速度優化)。預設建置選項需要 OpenJDK 11 或更高版本,並建立 Java 8 相容的二進位。
所有輸出檔案都進入build
目錄。
ant
來編譯類別並建立 JAR 檔案。ant doc
以建立 javadoc HTML 文件。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}"
屬性。
如果您使用的 Ant 版本早於 1.9.8:
編輯build.xml
並從
標記中刪除發布屬性,即刪除所有出現的這兩行:
release="${sourcever}"
release="${sourcever9}"
上述的缺點是,將使用-source
和-target
選項而不是--release
。
如果您使用的 OpenJDK 版本早於 9:
要使用 OpenJDK 8 進行構建,請在ant
命令列上使用-Djava8only=true
。那麼需要 Java >= 9 的檔案將不會被構建,並且xz.jar
將不會是模組化 JAR。
如果您使用的 OpenJDK 版本早於 8:
不再支援這些版本。嘗試 XZ for Java 1.9,它與 Java 5 相容,只需要編輯build.properties
即可建置。
如果您不能或不想使用 Ant,只需編譯src
目錄下的所有 .java 檔案(可能會跳過演示檔案src/*.java
)。為了模組支援和速度最佳化 (Java >= 9),也編譯src9
目錄下的所有 .java 檔案。
您可以使用 XZEncDemo 測試壓縮,它從標準輸入壓縮到標準輸出:
java -jar build/jar/XZEncDemo.jar < foo.txt > foo.txt.xz
您可以使用 XZDecDemo 測試解壓縮,它解壓縮到標準輸出:
java -jar build/jar/XZDecDemo.jar foo.txt.xz