Compressing Java binaries: the ristretto project

Compressing Java binaries: the ristretto project

phdthesis
This thesis presents the development of a wire format for Java applications. Whereas file formats, such as the Java class file format, put nowadays the emphasis on the ease with which they can be manipulated at the expense of the space they need, a wire format is specialized to achieve short transmission times. A wire format puts hence the emphasis on the space needed and takes a complex decoding step into account. The thesis presents the principal features of code systems, such as how the programs are represented, how they are executed and how portable the resulting environments are; it builds with these features a taxonomy of code systems. The special requirements of mobile code systems are discussed in this context. Java class files belong to the category of object files, which are files that contain compiled code. All these files have a strict syntax and they are frequently transformed to acquire specific properties, such as a smaller size. The thesis discusses the tools and techniques used to reduce the file size. The thesis presents for the first time detailed results of the analysis of Java applications. Beside external characteristics, such as the size and number of files, the analysis explores the content of the files. The development of the wire format takes place in two stages. In the first stage, the format of the class file is changed in order to reduce the size of individual files. In the second stage, redundancies are detected in groups of classes and the format is adapted to take advantage of them. All these transformations are confirmed experimentally. Finally, a measure of the distance between two classes is introduced. With this measure, data clustering algorithms can be used to define groups of classes that best compress together.
Compressing Java binaries: the ristretto project
2001
University of Zurich, Department of Informatics