[ACCEPTED]-What's a good compression library for Java?-compression

Accepted answer
Score: 11

You can use Deflater/Inflater which is built into the JDK. There 15 are also GZIPInputStream and GZIPOutputStream, but 14 it really depends on your exact use.


Reading 13 further comments it looks like the network 12 taffic is HTTP. Depending on the server, it 11 probably has support for compression (especially 10 with deflate/gzip). The problem then becomes 9 on the client. If the client is a browser 8 it probably already supports it. If your 7 client is a webservices client or an http client check 6 the documentation for that package to see 5 if it is supported.

It looks like jakarta-commons 4 httpclient may require you to manually do 3 the compression. To enable this on the 2 client side you will need to do something 1 like

Score: 1

If the network traffic is going over HTTP, most 3 of the various web servers/servlet containers 2 support for negotiated zipping, e.g., mod_deflate 1 for Apache.

Score: 1

Your compression algorithm depends on what 15 your trying to optimize, and how much bandwidth 14 you have available.

If you're on a gigibit 13 LAN, almost any compression algorithm is 12 going to slow your program down just a bit. If 11 your connecting over a WAN or internet, you 10 can afford to do a bit more compression. If 9 you connected to a dialup, you should compress 8 as much as it absolutely possible.

If this 7 is a WAN, you may find hardware solutions 6 like Riverbed's are more effective, as they work across 5 a range of traffic, and don't require any 4 changes to software.

I have a test case 3 which shows the relative compression difference 2 between Deflate, Filtered, BZip2, and lzma. Simply plug in a sample of your 1 data, and test the timing between two machines.

More Related questions