Data compression in Java
In this tutorial, we'll be looking at how to compress data in Java using the
built-in compression library. The standard JDK includes the Deflater
class for general-purpose compression. This is an implementation of the DEFLATE
algorithm (actually a wrapper around the commonly-used zlib library), which
can reduce many types of data to between 20% and 50% of its original size.
We'll look at what types of data it favours in a moment.
If you need data compression and you have little development time, then
passing your data through Deflater will give some compression for many
types of data. On the next page, we'll delve straight in and look at
how to use Deflater to compress data in
Java "out of the box".
Reading common archive files
Java provides out-of-the-box support for reading GZIP files
and ZIP files, which are both based on the DEFLATE
algorithm. Unfortunately, for reading tar files in Java, reading encrypted
ZIP files, and indeed other types of archive, Java doesn't give out-of-the-box
support for these. For these latter types, you can use the
Java archive reader Arcmexer, which you can download free
of charge from this web site. This allows you to read encrypted ZIPs in Java,
along with tar and gzipped tar archives (tarballs).
Advanced uses: understand the compression algorithm
For more advanced cases, it can help to know a little about how the
compression algorithm works. We'll take an how
the Deflater works in broad terms.
Then we'll also see how to apply this knowledge:
if you have little bit more development time available,
it may be possible to transform your input data to improve the
compression ratio offered by the Deflater class.
We look at the case of imroving text compression by
using the FILTERED strategy
on pre-transformed data.