MAJOR: rapid tool development with aspect-oriented programming

The use of low-level techniques, such as bytecode instrumentation to develop tools for profiling, debugging, testing, and reverse engineering is error-prone, time-consuming, and therefore costly. As a solution to these problems, we promote high-level aspect-oriented programming for rapid tool development so as to hide low-level instrumentation details from the developer. We show that our aspect-based approach yields concise tools that are easy to develop and extend, hence reducing development and testing costs. As enabling technology, we rely on MAJOR, a new tool for comprehensive aspect weaving, which ensures that aspects are woven into all methods executing in a Java Virtual Machine (after an initial bootstrapping phase), including methods in the standard Java class library. MAJOR also supports efficient access to a complete and customizable calling context representation thanks to the pluggable module CARAJillo. Both comprehensive aspect weaving and efficient access to calling context information are of paramount importance in the aforementioned domains.

[1]  Walter Binder,et al.  Flexible calling context reification for aspect-oriented programming , 2009, AOSD '09.

[2]  Walter Binder,et al.  Advanced Java bytecode instrumentation , 2007, PPPJ.

[3]  Yannis Smaragdakis,et al.  J-Orchestra: Automatic Java Application Partitioning , 2002, ECOOP.

[4]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.

[5]  Laurie J. Hendren,et al.  *J: a tool for dynamic analysis of Java programs , 2003, OOPSLA '03.

[6]  James R. Larus,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997, PLDI '97.

[7]  Vijay Janapa Reddi,et al.  Persistence in dynamic code transformation systems , 2005, CARN.

[8]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[9]  Atanas Rountev,et al.  Precise memory leak detection for java software using container profiling , 2013, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[10]  Monica S. Lam,et al.  Static detection of leaks in polymorphic containers , 2006, ICSE '06.

[11]  Walter Binder,et al.  Aspect weaving in standard Java class libraries , 2008, PPPJ '08.

[12]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[13]  Michael D. Ernst,et al.  ReCrash: Making Software Failures Reproducible by Preserving Object States , 2008, ECOOP.

[14]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[15]  Paul H. J. Kelly,et al.  Profiling with AspectJ , 2007 .