Java supports several related compression formats, including zlib, deflate, and gzip. These formats are documented in RFCs 1950, 1951, and 1952, and are available wherever RFCs are found, including http://www.faqs.org/rfcs/. The master site for these particular RFCs is ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html.
Java’s compression classes are native wrappers around the ZLIB compression library written by Jean-Loup Gailly and Mark Adler. You can learn about this library at http://www.cdrom.com/pub/infozip/zlib/.
For more general information about compression and archiving algorithms and formats, the http://comp.compression FAQ is a good place to start. See http://www.faqs.org/faqs/compression-faq/part1/preamble.html. More technical details and sample code in C for a variety of algorithms are available in The Data Compression Book, by Mark Nelson and Jean-Loup Gailly (M&T Books, 1996, ISBN 1-55851-434-1).
The JAR file format was developed by Sun for Java. The full specification can be found at http://java.sun.com/products/jdk/1.2/docs/guide/jar/jarGuide.html ( Java 2) or http://java.sun.com/products/jdk/1.1/docs/guide/jar/jarGuide.html ( Java 1.1). Aside from the name, the only thing that really distinguishes a JAR file from a zip file is the optional manifest of the contents. The manifest format specification can be found at http://java.sun.com/products/jdk/1.2/docs/guide/jar/manifest.html.