Abstract
Despite the apparent success of the Java Virtual Machine, its lackluster performance makes it ill-suited for many speed-critical applications. Although the latest just-in-time compilers and dedicated Java processors try to remedy this situation, optimized code compiled directly from a C program source is still considerably faster than software transported via Java byte-codes. This is true even if the Java byte-codes are subsequently further translated into native code. In this paper, we claim that these performance penalties are not a necessary consequence of machine-independence, but related to Java's particular intermediate representation and runtime architecture. We have constructed a prototype and are further developing a software transportability scheme founded on a tree-based alternative to Java byte-codes. This tree-based intermediate representation is not only twice as compact as Java byte-codes, but also contains more high-level information, some of which is critical for advanced code optimizations. Our architecture not only provides on-the-fly code generation from this intermediate representation, but also continuous re-optimization of the existing code-base by a low-priority background process. The re-optimization process is guided by up-to-the-minute profiling data, leading to superior runtime performance.
Similar content being viewed by others
REFERENCES
T. Lindholm, F. Yellin, B. Joy, and K. Walrath, The Java Virtual Machine Specification, Addison-Wesley (1996).
Sun Microsystems, The Java Language: An Overview, http://java.sun.com/doc/Overviews/java/java-overview-1.html (1995).
D. W. Wall, Global Register Allocation at Link Time, Proc. '86 Symp. Compiler Construction, pp. 264–275 (July 1986).
M. Franz and T. Kistler, Slim Binaries, Comm. ACM, 40(12):87–94 (December 1997). Also published as Technical Report No. 96–24, Department of Information and Computer Science, University of California, Irvine (June 1996).
M. Franz, Code-Generation On-the-Fly: A Key to Portable Software, Doctoral Dissertation, Verlag der Fachvereine, Zürich (1994).
T. A. Welch, A Technique for High-Performance Data Compression, IEEE Computer,17(6):8–19 (June 1984).
M. Wolf and M. Lam, A Data Locality Optimization Algorithm, Proc.191 Conf. Progr. Lang. Design and Implementation. Published as SIGPLAN Notices 26(6):30–44 (June 1991).
J. Cocke and J. Schwartz, Programming Languages and Their Compilers: Preliminary Notes, Courant Institute of Mathematical Sciences, New York University (April 1970).
M. M. Brandis, Optimizing Compilers for Structured Programming Languages, Doctoral Dissertation, Eidgenö ssische Technische Hochschule Zürich (1995).
U. Hölzle, Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming, Ph.D. Dissertation, Department of Computer Science, Stanford University (1994).
T. Kistler, Dynamic Runtime Optimization, Proc. Joint Modular Lang. Conf. (JMLC'97), pp. 53–66. Published as Springer Lecture Notes in Computer Science No. 1204 (March 1997). Also published as Technical Report No. 9–54, Department of Information and Computer Science, University of California, Irvine (November 1996).
J. Anderson, L. Berc, J. Dean, S. Ghemawat, M. Henzinger, S.-T. Leung, R. Sites, M. Vandevoorde, C. Waldspurger, and W. Weihl, Continuous Profiling: Where Have All the Cycles Gone? Proc. 16th ACM Symp. Oper. Syst. Principles, St. Malo, France (October 1997). Also published as Technical Note 199– 016.
T. Ball and J. R. Larus, Optimally Profiling and Tracing Programs, ACM Trans. Progr. Lang. Syst., 16(4):1319–1360 (July 1994).
United Kingdom Defence Resesearch Agency, TDF Specification, Issue 2.1. (June 1993).
Open Software Foundation, OSF Architecture-Neutral Distribution Format Rationale(1991).
G. Hansen, Adaptive Systems for the Dynamic Run-Time Optimization of Programs, Ph.D. Dissertation, Department of Computer Science, Carnegie-Mellon University (1974).
D. Wall, Systems for Late Code Modification, WRL Research Report 92/3, Digital Equipment Corporation, Western Research Laboratory, Palo Alto California (May 1992).
R. Hookway and M. Herdeg, DIGITAL FX!32: Combining Emulation and Binary Translation,Digital Tech. J., 9(1):3–12 (1997).
X. Zhang, Z. Wang, N. Gloy, J. Chen, and M. Smith, System Support for Automatic Profiling and Optimization, Proc. 16th ACM Symp. Oper. Syst. Principles(September 1997).
Motorola, Inc. PowerPC 601: RISC Microprocessor User's Manual(1993).
N. Wirth, The Programming Language Oberon, Software-Practice and Experience, 18(7):67–690 (July 1988).
Rights and permissions
About this article
Cite this article
Kistler, T., Franz, M. A Tree-Based Alternative to Java Byte-Codes. International Journal of Parallel Programming 27, 21–33 (1999). https://doi.org/10.1023/A:1018740018601
Issue Date:
DOI: https://doi.org/10.1023/A:1018740018601