Abstract
The term “Java” is used to denote two different concepts: the language itself and the related execution environment, the Java Virtual Machine (JVM), which executes byte code instructions. Several research projects deal with byte code-generating compilers or the implementation of new features via byte code transformations. Examples are code optimization, the implementation of parameterized types for Java, or the adaptation of run-time behavior through load-time transformations. Many programmers are doing this by implementing their own specialized byte code manipulation tools, which are, however, restricted in the range of their reusability. Therefore, we have developed a general purpose framework for the static analysis and dynamic creation or transformation of byte code. In this paper we present its main features and possible application areas.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
O. Agesen, S. N. Freund, and J. C. Mitchell. Adding Type Parameterization to the Java Language. In Proceedings OOPSLA’97, Atlanta, GA, 1997.
A. Aho, R. Sethi, and J. Ullman. COMPILERS Principles, Techniques and Tools. Addison-Wesley, 1985.
B. Bokowski and M. Dahm. Poor Man’s Genericity for Java. In Clemens Cap, editor, Proceedings JIT98. Springer, 1998.
B. Bokowski and A. Spiegel. Barat - A Front-End for Java. Technical report, Freie Univer-sität Berlin, 1998.
Per Bothner. The gnu.bytecode package, http://www.cygnus.com/ bothner/ gnu. bytecode/, 1998.
Gerald Brose. Reflection in Java, CORBA and JacORB. In Clemens Cap, editor, Proceedings JIT98. Springer, 1998.
Geoff Cohen, Jeff Chase, and David Kaminsky. Automatic Program Transformation with JOIE. In Proceedings USENIX Annual Technical Symposium, 1998.
Pascal Costanza. The ClassFilters package. Universität Bonn, http://www.es..
M.Dahm. Byte Code Engineering with the JavaClass API. Technical report, Freie Universität Berlin, 1998.
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
A. Goldberg and D.Robson. Smalltalk - The Language. Addison-Wesley, 1983.
Michael Golm and Jürgen Kleinöder. metaXa and the Future of Reflection. In Workshop on Reflective Programming in C++ and Java, 1998.
J. Gosling, B. Joy, and G. Steele. The Java Language Specification. Addison-Wesley, 1996.
JavaSoft. Reflection API. http://java.sun.eom/products/jdk/l, 1998.
Ralph Keller and Urs Hölzle. Binary Component Adaptation. In Eric Jul, editor, Proceedings ECOOP’98. Springer, 1998.
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-Oriented Programming. Technical report, Xerox Palo Alto Research Center, 1997.
Han Bok Lee and Benjamin G. Zorn. BIT: A Tool for Instrumenting Java Bytecodes. In Proceedings USENIX Symposium on Internet Technologies and Systems, 1998.
Sheng Lian and Gilad Bracha. Dynamic Class Loading in the Java Virtual Machine. In Proceedings OOPSLA’98, 1998.
Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1997.
J. Meyer and T. Downing. Java Virtual Machine. O’Reilly, 1997.
A.C. Myers, J. A. Bank, and B. Liskov. Parameterized Types for Java. In Proceedings POPL’97, Paris, France, 1997.
M. Thies and U. Kastens. Statische Analyse von Bibliotheken als Grundlage dynamischer Optimierung. In Clemens Cap, editor, Proceedings JIT98. Springer, 1998.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dahm, M. (1999). Byte Code Engineering. In: Cap, C.H. (eds) JIT’99. Informatik aktuell. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-60247-4_25
Download citation
DOI: https://doi.org/10.1007/978-3-642-60247-4_25
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66464-2
Online ISBN: 978-3-642-60247-4
eBook Packages: Springer Book Archive