A fairy tale of zlib/zip compression in OpenJDK
Presented by Volker H. Simonis (Amazon) at EclipseCon 2022.
This talk is for all Java users at any level. Attendees will get a better understanding of how third party libraries like zlib are bundled, used and maintained in the OpenJDK. They'll learn the difference of static vs. dynamic linking of libraries and how they can leverage alternative zlib implementations to boost de-/compression performance on platforms where OpenJDK dynamically links zlib.
I'll also describe subtle behavioral differences in various zlib implementations and versions and how they have been fixed or worked around in the JDK. Finally, I'll cover recent enhancements in the ZipFile support.
The general outline of the talk will be as follows:
- zlib compression details (i.e. Huffman coding and LZ77 compression)
- the history of zlib in the JDK
- zip file support and enhancements in the OpenJDK
- the zipfs file system support in OpenJDK
- checksums and intrinsics (i.e. CRC32, CRC32C and Adler32)
- the challenges of maintaining a third party library in OpenJDK
- alternative zlib implementations and their performance benefits
- boosting your deflate/inflate performance by using alternative zlib implementations
- issues and challenges with alternative zlib implementations (e.g. [1, 2, 3])
- zlib vulnerabilities (CVE-2018-25032 [4])
The talk is partially based on the content of my blog https://github.com/simonis/zlib-bench/blob/master/AcceleratingZlibInOpen... but extended with some more implementation details and examples. This will be a new talk which has never been given before.
[1] https://bugs.openjdk.org/browse/JDK-8240333
[2] https://bugs.openjdk.org/browse/JDK-8253952
[3] https://bugs.openjdk.org/browse/JDK-8283758
[4] https://nvd.nist.gov/vuln/detail/CVE-2018-25032