Java programs are routinely transmitted over low-bandwidth network connections as compressed class le archives (i.e., zip les and jar les). Since archive size is directly proportional to download time, it is desirable for applications to be as small as possible. This paper is concerned with the use of program transformations such as removal of dead methods and elds, inlining of method calls, and simpli cation of the class hierarchy for reducing application size. Such \extraction" techniques are generally believed to be especially useful for applications that use class libraries, since typically only a small fraction of a library's functionality is used. By \pruning away" unused library functionality, application size can be reduced dramatically. We implemented a number of application extraction techniques in Jax, an application extractor for Java, and evaluate their e ectiveness on a set of realistic benchmarks ranging from 27 to 2,332 classes (with archives ranging fro...
Frank Tip, Chris Laffra, Peter F. Sweeney, David S