In an increasingly popular model of software distribution, software is developed in one computing environment and deployed in other environments by transfer over the internet. Extraction tools perform a static whole-program analysis to determine unused functionality in applications in order to reduce the time required to download applications. We have identi ed a number of scenarios where extraction tools require information beyond what can be inferred through static analysis: software distributions other than complete applications, the use of re ection, and situations where an application uses separately developed class libraries. This paper explores these issues, and introduces a modular speci cation language for expressing the information required for extraction. We implemented this language in the context of Jax, an industrial-strength application extractor for Java, and present a small case study in which di erent extraction scenarios are applied to a commercially available libra...
Peter F. Sweeney, Frank Tip