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 リポジトリが利用可能な場合、コミッターの日付を使用することは、適切な値を取得する 1 つの方法です。
$ SOURCE_DATE_EPOCH=$(git log -n1 --pretty=%ct) TZ=UTC0 ant
1.10.2 より古い Ant を使用している場合:
build.xml
を編集し、
要素からmodificationtime="${timestamp}"
属性を削除します。
1.9.8 より古い Ant を使用している場合:
build.xml
を編集し、
タグから release 属性を削除します。つまり、次の 2 行がすべて削除されます。
release="${sourcever}"
release="${sourcever9}"
上記の欠点は、 --release
代わりに-source
および-target
オプションが使用されることです。
OpenJDK バージョン 9 より古い場合:
OpenJDK 8 でビルドするには、 ant
コマンドラインで-Djava8only=true
を使用します。その場合、Java >= 9 を必要とするファイルはビルドされず、 xz.jar
モジュラー JAR になりません。
OpenJDK バージョン 8 より古い場合:
これらのバージョンはサポートされなくなりました。 Java 5 と互換性があり、 build.properties
編集するだけでビルドできる XZ for Java 1.9 を試してください。
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