Third USENIX Conference on Object-Oriented Technologies (COOTS), 1997
Harissa: a Flexible and Efficient Java Environment Mixing Bytecode and Compiled Code
Gilles Muller, Bárbara Moura, Fabrice Bellard, Charles Consel
IRISA / INRIA-University of Rennes
Campus de Beaulieu
F-35042 Rennes Cedex - France
Abstract
The Java language provides a promising solution to the design of safe
programs, with an application spectrum ranging from Web services to
operating system components. The well-known tradeoff of Java's
portability is the inefficiency of its basic execution model, which
relies on the interpretation of an object-based virtual machine. Many
solutions have been proposed to overcome this problem, such as
just-in-time (JIT) and off-line bytecode compilers. However, most
compilers trade efficiency for either portability or the ability to
dynamically load bytecode.
In this paper, we present an approach which reconciles portability and
efficiency, and preserves the ability to dynamically load bytecode. We
have designed and implemented an efficient environment for the
execution of Java programs, named Harissa. Harissa permits the
mixing of compiled and interpreted methods. Harissa's compiler
translates Java bytecode to C, incorporating aggressive optimizations
such as virtual-method call optimization based on the Class Hierarchy
Analysis. To evaluate the performance of Harissa, we have conducted an
extensive experimental study aimed at comparing the various existing
alternatives to execute Java programs. The C code produced by
Harissa's compiler is more efficient than all other alternative
ways of executing Java programs (that were available to us): it is up
to 140 times faster than the JDK interpreter, up to 13 times faster
than the Softway Guava JIT, and 30% faster than the Toba bytecode to
C compiler.
|