Compress Roadmap

About this page

Compress has seen several releases of the 1.x series. While the factory and stream APIs have proven to be useful there are pieces that "don't feel right" and cannot be changed without breaking backwards compatibility. Also Compress' API has been designed for Java 1.4 and could benefit from generics and enums.

The idea of a 2.0 release that is allowed to break backwards compatibility has come up more than once over a span of five years or even longer. This page will gather requirements and design ideas in the hope that a real implementation will be created based on the existing code.

A starting ground for some design ideas is the compress-2.0 branch;a=tree;h=refs/heads/compress-2.0;hb=refs/heads/compress-2.0 - nothing carved into stone, yet. Feedback, ideas and corrections more than welcome.


* SETTLED: Compress 2.0 will require Java8 at compile and run time.

* external dependencies?

* some general cleanup

* make the factories configurable - i.e. allow third parties to register new formats without changing Compress

* common solutions for streaming

* read-only support

* events for certain stages of (un)archiving/(un)compressing?

* a common solution for things that are extensible inside a given format like an API that allows third parties to implement und use compression/encryption methods without modifying Compress' codebase.


* unify common stuff in ArchiveEntry

* embrace generics at least for the getNextEntry/putArchiveEntry methods

* streaming vs random-access


* stop extending the zip stuff but do something useful for JAR archives like providing access to the manifest. COMPRESS-18


* try to share more code between ZipFile and InputStream


* provide byte[] based Compressors/Decompressors as an alternative to streams


CompressRoadmap (last edited 2016-10-15 13:31:06 by StefanBodewig)