Proceedings Article10.1145/320384.320414
Practical experience with an application extractor for Java
Frank Tip,Chris Laffra,Peter F. Sweeney,David Joseph Streeter +3 more
- 01 Oct 1999
- Vol. 34, Iss: 10, pp 292-305
TL;DR: A number of application extraction techniques in Jax, an application extractor for Java, are implemented and evaluated, and their effectiveness on a set of realistic benchmarks is evaluated.
read more
Abstract: Java programs are routinely transmitted over low-bandwidth network connections as compressed class file archives (i.e., zip files and jar files). 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 fields, inlining of method calls, and simplification 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 effectiveness on a set of realistic benchmarks ranging from 27 to 2,332 classes (with archives ranging from 56,796 to 3,810,120 bytes). We report archive size reductions ranging from 13.4% to 90.2% (48.7% on average).
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Soot: a Java bytecode optimization framework
Raja Vallée-Rai,Phong Co,Etienne Gagnon,Laurie Hendren,Patrick Lam,Vijay Sundaresan +5 more
- 01 Nov 2010
TL;DR: Soot, a framework for optimizing Java* bytecode, is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of bytecode which is simple to manipulate; Jimple, a typed 3-address intermediate representation suitable for optimization; and Grimp, an aggregated version of Jimple suitable for decompilation.
Parameterized object sensitivity for points-to analysis for Java
TL;DR: This work presents object sensitivity, a new form of context sensitivity for flow-insensitive points-to analysis for Java, and proposes a parameterization framework that allows analysis designers to control the tradeoffs between cost and precision in the object-sensitive analysis.
488
Optimizing Java Bytecode Using the Soot Framework: Is It Feasible?
Raja Vallée-Rai,Etienne Gagnon,Laurie Hendren,Patrick Lam,Patrice Pominville,Vijay Sundaresan +5 more
- 25 Mar 2000
TL;DR: The approach to class file optimization is to first convert the stack-based bytecode into Jimple, a three-address form more amenable to traditional program optimization, and then convert the optimized Jimple back to bytecode.
Practical virtual method call resolution for Java
Vijay Sundaresan,Laurie Hendren,Chrislain Razafimahefa,Raja Vallée-Rai,Patrick Lam,Etienne Gagnon,Charles Godin +6 more
- 01 Oct 2000
TL;DR: This paper addresses the problem of resolving virtual method and interface calls in Java bytecode by developing a technique that can be solved with only one iteration, and thus scales linearly with the size of the program, while at the same time providing more accurate results than two popular existing linear techniques, class hierarchy analysis and rapid type analysis.
Scalable propagation-based call graph construction algorithms
Frank Tip,Jens Palsberg +1 more
- 01 Oct 2000
TL;DR: Surprisingly, for detecting unreachable methods, the inexpensive RTA algorithm does almost as well as the seemingly more powerful algorithms, and one of the new algorithms obtains the current best tradeoff between speed and precision.
References
•Book
The Java Language Specification
James Gosling,Bill Joy,Guy L. Steele +2 more
- 12 Sep 1996
TL;DR: The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language.
•Book
The Java Virtual Machine Specification
Tim Lindholm,Frank Yellin +1 more
- 19 Sep 1996
TL;DR: In this article, the authors present a detailed overview of the Java Virtual Machine, including the internal structure of the class file format, the internal form of Fully Qualified Class and Interface names, and the implementation of new class instances.
Points-to analysis in almost linear time
Bjarne Steensgaard
- 01 Jan 1996
TL;DR: This is the asymptotically fastest non-trivial interprocedural points-to analysis algorithm yet described and is based on a non-standard type system for describing a universally valid storage shape graph for a program in linear space.
•Book
Java Virtual Machine Specification
Tim Lindholm,Frank Yellin +1 more
- 01 Apr 1999
TL;DR: The Java Virtual Machine as discussed by the authors is the technology that enables the Java 2 platform to host applications on any computer or operating system without rewriting or recompiling, and is the complete and definitive specification for the technology.
918
Fast static analysis of C++ virtual function calls
David F. Bacon,Peter F. Sweeney +1 more
- 01 Oct 1996
TL;DR: This work investigates the ability of three static analysis algorithms to improve C++ programs by resolving virtual function calls, thereby reducing compiled code size and reducing program complexity so as to improve both human and automated program understanding and analysis.
Related Papers (5)
David F. Bacon,Peter F. Sweeney +1 more
- 01 Oct 1996
Frank Tip,Jens Palsberg +1 more
- 01 Oct 2000
Tim Lindholm,Frank Yellin +1 more
- 19 Sep 1996
James Gosling,Bill Joy,Guy L. Steele +2 more
- 12 Sep 1996