Developing and maintaining tools for profiling, debugging, testing, and reverse engineering can be difficult when using low-level techniques, such as bytecode instrumentation. We promote tool development in Java using high-level aspect-oriented programming. We demonstrate that the use of aspects yields concise tools that are easy to develop, extend, and maintain, because low-level instrumentation details are hidden from the developer. We introduce MAJOR, a new tool for comprehensive aspect weaving, which ensures that aspects are woven into all classes executing in a Java Virtual Machine, including those in the standard Java class library. MAJOR includes the pluggable module CARAJillo, which supports efficient access to a complete and customizable calling context representation. Both distinguishing features of MAJOR ‐ comprehensive aspect weaving and efficient access to complete calling information ‐ are essential in the aforementioned domains.
[1]
Cristina V. Lopes,et al.
Aspect-oriented programming
,
1999,
ECOOP Workshops.
[2]
Gregor Kiczales,et al.
Aspect-oriented programming
,
1996,
CSUR.
[3]
Walter Binder,et al.
Flexible calling context reification for aspect-oriented programming
,
2009,
AOSD '09.
[4]
James R. Larus,et al.
Exploiting hardware performance counters with flow and context sensitive profiling
,
1997,
PLDI '97.
[5]
Walter Binder,et al.
Advanced Java bytecode instrumentation
,
2007,
PPPJ.
[6]
Walter Binder,et al.
Aspect weaving in standard Java class libraries
,
2008,
PPPJ '08.