TrueZIP 5.0 has been released

(January 20th, 2006)

This is a major update providing significant performance increases by using asynchronous I/O, various new features, reduced memory footprint, enhanced internal exception handling and an extensible architecture to support binary backwards compatibility for future releases. All users are recommended to upgrade.

Please note that you must recompile your applications if you are using older versions of TrueZIP. This is primarily because of the refactorings in the File and ZipDetector classes. Regular applications should not have to change a single of code, however. Because TrueZIP's public API is now completely relying on Dependency Injection, Factory and Decorator patterns, this is hopefully the last update requiring public API refactorings and hence the last increase of the major version number for a while.

TrueZIP is used by commercial applications and so its primary objectives have always been stability and performance. Therefore, TrueZIP 5.0 has been tested with extended, comprehensive JUnit tests on the Windows, Linux and Mac OS X platform with a combination of JDK 1.4.2_10 and JDK 1.5.0_06 and numerous manual tests in a special test parcours (located in the false positive directory "1.zip") and with lots of ZIP files created by external tools, such as WinZIP, infoZIP and JSmooth.

Following is a high level overview of the changes/add-ons (in order of priority):

  1. Enhanced: All cat and copy methods in the File class now use asynchronous IO similar to the transfer(...) method of the java.nio.Channel class. Various tests have shown that this cuts down the gross execution time for copying a file within the same folder by about 33%! Depending on the system configuration and source and target file location and size, your results may be even better! Because this is all based on the method File.cat(InputStream, OutputStream), you can use this feature for any kind of input or output stream in your applications!
  2. New/Enhanced: The SwingPasswdManager class, which is used by default to manage encryption keys for RAES encrypted ZIP files, now also supports key file based encryption in addition to only password based encryption. All dialogs have been improved to enhance their overall usability.
  3. Changed: The ZipDetector interface has been completely refactored to a factory pattern in order to support dependency injection for all required resources in the de.schlichtherle.io package (such as ZipFile and ZipOutputStream instances). Its member constant default implementations have been retained and extended however, so that regular applications should not be affected by this change unless they implement this interface.
  4. New: The copyAll methods of the File class have new members which allow you to provide different ZipDetector instances for the source and destination directory tree. This allows you to do fancy stuff like changing the character set encoding of ZIP file entry names or unzipping a complete directory tree with recursively enclosed ZIP compatible files on the fly with a single API call. Please refer to the
  5. Fixed: One major bug: If a ZIP compatible file created by an external application (such as WinZIP) contained any STORED instead of just DEFLATED entries (see PKWARE's ZIP File Format Specification ), updating its content caused the resulting ZIP compatible file to be corrupted.
  6. Fixed: Various minor bugs, most of them about proper exception handling. TrueZIP's internal exception handling strategy is now pretty elaborate and should cause TrueZIP to fail gracefully in any case.