While working on a small command line Java application (which will appear in a later post) I found myself needing to concurrently save lots and lots of files to a ZIP archive. Prior to the NIO package that debuted in Java 7 this wasn't something easily done. In this post we'll use some of the fundamental APIs from the NIO package along with concurrency utilities to quickly traverse a directory tree and copy file contents into a ZIP archive. However, to truly appreciate the speed boost from NIO's asynchronous file channels, we'll first visit and benchmark a more "vintage" approach leveraging the java.util.zip and java.io packages.

In the recent months I happened across an article that gave me the necessary push to start blogging again. It wasn't the article as a whole that got me—in fact I hardly recall what it was about—but one headline which stood out: "teach everything you know." Before I began piecing together the second reincarnation of pixeldonor.com, I decided to set some goals for myself specific to this mission. In this first post I'd like to outline what I intend to accomplish in the next twelve months.