什么是一个很好的Java压缩库?

我需要压缩部分应用程序的网络流量以提高性能。 我认为这意味着我需要远离一些较新的算法,比如bzip2,我认为我听说它比较慢。

您可以使用内置于JDK中的Deflater / Inflater 。 还有GZIPInputStream和GZIPOutputStream,但它实际上取决于您的确切用途。

编辑:

阅读进一步的评论看起来网络taffic是HTTP。 它可能支持压缩(特别是使用deflate / gzip),具体取决于服务器。 然后问题出现在客户端上。 如果客户端是浏览器,它可能已经支持它。 如果您的客户端是Web服务客户端或http客户端,请检查该软件包的文档以查看它是否受支持。

看起来像jakarta-commons httpclient可能需要你手动进行压缩。 要在客户端启用此function,您需要执行类似的操作

.addRequestHeader("Accept-Encoding","gzip,deflate"); 

如果网络流量通过HTTP传输,则大多数各种Web服务器/ servlet容器都支持协商压缩,例如,Apache的mod_deflate。

您的压缩算法取决于您尝试优化的内容以及可用的带宽量。

如果您使用的是gigibit LAN,几乎任何压缩算法都会使您的程序速度降低一些。 如果您通过WAN或互联网连接,您可以承受更多压缩。 如果您连接到拨号,您应该尽可能多地压缩。

如果这是一个WAN,您可能会发现像Riverbed这样的硬件解决方案更有效,因为它们适用于各种流量,并且不需要对软件进行任何更改。

我有一个测试用例,显示Deflate,Filtered,BZip2和lzma之间的相对压缩差异。 只需插入数据样本,然后测试两台机器之间的时间。