P7ZIP 页面上的 J7Zip 和 JAVA LZMA SDK 分别是什么?
更新时间
J7Zip 是 7zr.exe 的 Java 移植版本,早期只支持解压使用 LZMA 和 BCJ2 过滤器的文件;JAVA LZMA SDK 则是把 LZMA 编解码器从 C# SDK 移植到 Java 的产物。两者都出现在 P7ZIP 主页上,但定位不同:前者是一个可用的解压工具,后者更接近编解码库/示例。它们与 p7zip 本身也不是同一个东西——p7zip 是 7za.exe 面向 POSIX 系统、macOS、BeOS 和 Amiga 的移植。
J7Zip:7zr.exe 的 Java 移植
根据页面说明,J7zip 是 JAVA port of 7zr.exe。页面给出的版本记录是:
- 2006-12-10:首个公开版本,仅支持解压用 LZMA 和 BCJ2 过滤器压缩的文件
- 2007-02-04:支持 BCJ 过滤器
页面还列出了待办事项(TODO):创建压缩包、支持加密、支持多线程等。也就是说,按该页面记录,J7Zip 当时的能力集中在“解压”这一侧,不能把它当成完整的 7-Zip 替代品来创建加密或多线程压缩包。
适合谁:需要在 Java 环境里读取特定 7z 压缩内容的开发者,可以先确认目标文件是否由 LZMA/BCJ2/BCJ 相关方式压缩;如果任务是创建压缩包、加密或利用多线程,页面明确把这些列为未完成项,应另找方案。
JAVA LZMA SDK:LZMA 编解码器的 Java 移植
页面把这一项描述为“For the fun, I also port the LZMA Decoder from LZMA SDK 4.03 to JAVA”,并记录:
- 2005-09-11:JAVA port of LZMA Encoder and Decoder from LZMA C# SDK 4.23
- 2006:Igor Pavlov 在 LZMA SDK 中提供了 JAVA LZMA SDK(C、C++、C# 和 JAVA)
它解决的是“在 Java 里使用 LZMA 编码/解码”这一层的问题,而不是提供一个像 7-Zip 那样的完整归档工具。若你只是要处理 LZMA 数据流,它更贴近需求;若要处理完整 7z 容器、过滤器组合和命令行行为,则要回到 J7Zip 或 p7zip 的讨论范围。
三者怎么区分
| 名称 | 是什么 | 主要用途 | 页面记录的限制 |
|---|---|---|---|
| p7zip | 7za.exe 的 POSIX/类 Unix 等系统移植 | 命令行压缩/解压 | 页面未展开具体限制 |
| J7Zip | 7zr.exe 的 Java 移植 | 解压特定 7z 文件 | 早期仅支持 LZMA、BCJ2;TODO 含创建、加密、多线程 |
| JAVA LZMA SDK | LZMA 编解码器的 Java 移植 | 在 Java 中做 LZMA 编解码 | 页面未给出完整工具能力说明 |
选择时先问自己要完成哪一步:只是解压一个已知用 LZMA/BCJ2 压缩的文件,J7Zip 是页面直接对应的入口;要在 Java 代码里处理 LZMA 数据流,看 JAVA LZMA SDK;要在 Unix/Linux、macOS 等系统上用命令行处理压缩包,p7zip 才是主体。
下载与获取入口
页面把源码和二进制包的下载指向 SourceForge 项目页:http://sourceforge.net/projects/p7zip/。页面还列出了若干非官方包入口,例如 Debian、FreeBSD、Gentoo、Solaris 等发行版或平台页面;这些是第三方维护的包,版本和可用性需以对应页面为准,不能直接等同于官方发布。
页面最后修改时间为 2009 年 2 月 21 日,上述版本记录和 TODO 反映的是该时间点前后的状态;实际使用时建议以你拿到的包内说明或项目页当前内容核对。