Font Size: a A A

Architecture, implementation, and applications of bytecode transformation

Posted on:2002-09-15Degree:Ph.DType:Thesis
University:Duke UniversityCandidate:Cohen, Geoff AFull Text:PDF
GTID:2468390011997232Subject:Computer Science
Abstract/Summary:
Bytecode transformation is a powerful technique to dynamically extend or adapt compiled Java software. Researchers have used bytecode transformation to integrate separately developed software components, to instrument programs with monitoring or debugging code, and to extend programs with new security or data management features, among other applications. By directly editing components of a program, bytecode transformation can insert new features into the program, a technique known as meta-programming. Although bytecode transformation has shown promise in research systems, acceptance of this technique in practice depends on effective software tools to facilitate development of transformations that are efficient and correct across the full range of legal inputs. While this research project considered only Java, the principles apply to other similar environments.; This thesis describes the technique of bytecode transformation, discusses implications of transformation beyond the Java environment, and presents the design, architecture, and implementation of JOIE, a bytecode transformation toolkit. Key to the success of JOIE is a layered architecture that provides flexible and powerful access to its functionality.; JOIE provides a core set of low-level functionality for manipulating Java classfiles, supplemented by higher level interfaces designed to enable the safe insertion of new code into existing applications. The new code can extend the interface of the target class, modify the implementation of existing methods, or change the behavior of reference access. These higher-level interfaces are simpler to use than the low-level interface and automatically apply checks that prevent the creation of invalid classfiles. The goal of this design is to make common transformations safe and efficient while simplifying development of more complex transformers.; To illustrate the issues and tradeoffs in the design of JOIE and related tools, this thesis presents applications of bytecode transformation including the observable design pattern, a capabilities-based security system, an object faulting system, and Ivory, a data management and replication service. The use of JOIE enables the automatic adaptation of application code to these services.
Keywords/Search Tags:Bytecode transformation, JOIE, Applications, Architecture, Implementation, Technique, Java
Related items