XZ สำหรับ Java มีเป้าหมายที่จะนำการบีบอัดข้อมูล XZ ไปใช้อย่างสมบูรณ์ใน Java ล้วนๆ
คุณสมบัติ:
มีการวางแผนการทำเกลียวแต่ไม่รู้ว่าจะดำเนินการเมื่อใด
ซอร์สโค้ดหลักเข้ากันได้กับ Java 8 และใหม่กว่า แต่มีคลาสสำหรับ Java 9 หรือใหม่กว่า (module-info.java และการปรับความเร็วให้เหมาะสม) ตัวเลือกการสร้างเริ่มต้นต้องใช้ OpenJDK 11 หรือใหม่กว่า และสร้างไบนารีที่เข้ากันได้กับ Java 8
ไฟล์เอาต์พุตทั้งหมดจะเข้าสู่ไดเร็กทอรี build
ant เพื่อคอมไพล์คลาสและสร้างไฟล์ JARant doc เพื่อสร้างเอกสารประกอบ javadoc HTMLant -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 และลบแอ็ตทริบิวต์ release ออกจากแท็ก <javac> นั่นคือ ลบเหตุการณ์ทั้งหมดของสองบรรทัดนี้:
release="${sourcever}"
release="${sourcever9}"
ข้อเสียข้างต้นคือตัวเลือก -source และ -target จะถูกใช้แทน --release
หากคุณใช้ OpenJDK เวอร์ชันเก่ากว่า 9:
หากต้องการสร้างด้วย OpenJDK 8 ให้ใช้ -Djava8only=true บนบรรทัดคำสั่ง ant จากนั้นไฟล์ที่ต้องการ Java >= 9 จะไม่ถูกสร้างขึ้น และ xz.jar จะไม่เป็น JAR แบบโมดูลาร์
หากคุณใช้ OpenJDK เวอร์ชันเก่ากว่า 8:
ไม่รองรับเวอร์ชันเหล่านี้อีกต่อไป ลองใช้ XZ สำหรับ Java 1.9 ซึ่งเข้ากันได้กับ Java 5 และต้องการเพียงการแก้ไข build.properties เพื่อสร้าง
หากคุณไม่สามารถใช้ Ant หรือไม่ต้องการใช้ 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