ADVANCED AND RAPID DEVELOPMENT OF DYNAMIC ANALYSIS TOOLS FOR JAVA

Alex Villazón, Danilo Ansaloni, Philippe Moret

Resumen


Low-level bytecode instrumentation techniques are widely used in many software-engineering tools for the Java Virtual Machine (JVM), that perform some form of dynamic program analysis, such as profilers or debuggers. While program manipulation at the bytecode level is very flexible, because the possible bytecode transformations are not restricted, tool development based on this technique is tedious and error-prone. As a promising alternative, the specification of bytecode instrumentation at a higher level using aspect-oriented programming (AOP) can reduce tool development time and cost. Unfortunately, prevailing AOP frameworks lack some features that are essential for certain dynamic analyses. In this article, we focus on three common shortcomings in AOP frameworks with respect to the development of aspect-based tools - (1) the lack of mechanisms for passing data between woven advices in local variables, (2) the support for user-defined static analyses at weaving time, and (3) the absence of pointcuts at the level of individual basic blocks of code. We propose @J, an annotation-based AOP language and weaver that integrates support for these three features. The benefits of the proposed features are illustrated with concrete examples.

Palabras clave


Aspect-Oriented Programming, Aspect Weaving, Analysis at Weaving Time, Bytecode Instrumentation, Dynamic Program Analysis

Texto completo:

ABSTRACT RESUMEN FULL ARTICLE

Referencias


S. Akai, et al. Region pointcut for AspectJ. In ACP4IS ’09: Proceedings of the 8th Workshop on Aspects, Components, and Patterns for Infrastructure Software, pages 43– 48, New York, NY, USA, 2009. ACM.

B. Alpern et al. “The Jalapeño virtual machine.” IBM Systems Journal, vol. 39, no. 1, pp. 211–238, 2000.

T. Aotani and H. Masuhara. “SCoPE: an AspectJ compiler for supporting user-defined analysis-based pointcuts.” In AOSD ’07: Proceedings of the 6th international conference on Aspect-oriented software development, pages 161–172, New York, NY, USA, 2007. ACM.

W. Binder et al. “@J - Towards Rapid Development of Dynamic Analysis Tools for the Java Virtual Machine.” In VMIL ’09: Proceedings of the 3th Workshop on Virtual Machines and Intermediate Languages, pages 1–9, New York, NY, USA, 2009. ACM.

S. Artzi et al. “ReCrash: Making Software Failures Reproducible by Preserving Object States.” In J. Vitek, editor, ECOOP ’08: Proceedings of the 22th European Conference on Object-Oriented Programming, volume 5142 of Lecture Notes in Computer Science, pp. 542–565, Paphos, Cyprus, 2008. Springer- Verlag.

Aspectwerkz. “AspectWerkz - Plain Java AOP.” Internet: http://aspectwerkz.codehaus.org/.

P. Avgustinov et al. “abc: An extensible AspectJ compiler.” In AOSD ’05: Proceedings of the 4th International Conference on Aspect-Oriented Software Development, pp. 87–98, New York, NY, USA, 2005. ACM Press.

L. D. Benavides et al. “Debugging and testing middleware with aspect-based control-flow and causal patterns.” In Middleware ’08: Proceedings of the 9th ACM/IFIP/USENIX International Conference on Middleware, pages 183–202, New York, NY, USA, 2008. Springer-Verlag New York, Inc.

W. Binder and J. Hulaas. “A portable CPU-management framework for Java.” IEEE Internet Computing, vol. 8, no. 5, pp. 74–83, Sep./Oct. 2004.

W. Binder et al. “Advanced Java Bytecode Instrumentation.” In PPPJ’07: Proceedings of the 5th International Symposium on Principles and Practice of Programming in Java, pp. 135–144, New York, NY, USA, 2007. ACM Press.

W. Binder et al. Platform-independent profiling in a virtual execution environment. Software: Practice and Experience, vol. 39, no. 1, pp. 47–79, 2009.

W. Binder et al. Portable resource control in Java. ACM SIGPLAN Notices, vol. 36, no. 11, pp. 139–155, Nov. 2001. Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA’01).

W. Binder, et al. “Cache-aware cross-profiling for Java processors.” Presented at International Conference on Compilers, Architecture, and Synthesis for Embedded Systems (CASES-2008), pp. 127–136, Atlanta, Georgia, USA, Oct. 2008. ACM.

C. Bockisch et al. “Adapting virtual machine techniques for seamless aspect support.” In OOPSLA ’06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, pp. 109–124, New York, NY, USA, 2006. ACM.

E. Bodden and K. Havelund. “Racer: Effective Race Detection Using AspectJ.” In International Symposium on Software Testing and Analysis (ISSTA), Seattle, WA, July 20-24 2008, pp. 155–165, New York, NY, USA, 07 2008. ACM.

F. Chen et al. “jPredictor: A Predictive Runtime Analysis Tool for Java.” In ICSE ’08: Proceedings of the 30th international conference on Software engineering, pp. 221– 230, New York, NY, USA, 2008. ACM.

S. Chiba. “Load-time structural reflection in Java.” In Proceedings of the 14th European Conference on Object-Oriented Programming (ECOOP’2000), volume 1850 of Lecture Notes in Computer Science, pages 313–336. Springer Verlag, Cannes, France, June 2000.

J. Cook and A. Nusayr. “Using AOP for Detailed Runtime Monitoring Instrumentation.” Presented at WODA 2008: the sixth international workshop on dynamic analysis, New York, NY, USA, jul 2009. ACM.

B. De Fraine et al. “StrongAspectJ: flexible and safe pointcut/advice bindings.” In AOSD ’08: Proceedings of the 7th international conference on Aspect-oriented software development, pp. 60–71, New York, NY, USA, 2008. ACM.

M. Dmitriev. “Profiling Java applications using code hotswapping and dynamic call graph revelation.” In WOSP ’04: Proceedings of the Fourth International Workshop on Software and Performance, pp. 139–150. ACM Press, 2004.

B. Dufour et al. “*J: A tool for dynamic analysis of Java programs.” In OOPSLA ’03: Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 306– 307, New York, NY, USA, 2003. ACM Press.

R. Dyer and H. Rajan. “Nu: A dynamic aspect-oriented intermediate language model and virtual machine for flexible runtime adaptation.” In AOSD ’08: Proceedings of the 7th International Conference on Aspect-oriented Software Development, pp. 191–202, New York, NY, USA, 2008. ACM.

B. Goetz et al. Java Concurrency in Practice. Addison-Wesley, 2006.

J. Gosling et al. The Java Language Specification, Third Edition. The Java Series. Addison-Wesley, 2005.

E. Hilsdale and J. Hugunin. “Advice weaving in AspectJ.” In AOSD ’04: Proceedings of the 3rd International Conference on Aspect- Oriented Software Development, pp. 26–35, New York, NY, USA, 2004. ACM.

JBoss. “Open source middleware software.” Internet: http: //labs.jboss.com/jbossaop/.

M. Jovic and M. Hauswirth. “Measuring the performance of interactive applications with listener latency profiling.” In PPPJ ’08: Proceedings of the 6th international symposium on Principles and practice of programming in Java, pp. 137–146, New York, NY, USA, 2008. ACM.

G. Kiczales et al. “An overview of AspectJ.” In J. L. Knudsen, editor, Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP-2001), volume 2072 of Lecture Notes in Computer Science, pp. 327–353, 2001.

G. Kiczales et al. “Aspect-oriented programming.” In M. Akşit and S.Matsuoka, editors ECOOP’97: Proceedings of the 11th European Conference on Object-Oriented Programming, volume 1241 of Lecture Notes in Computer Science, pages 220–242, Jyväkylä, Finnland, June 1997. Springer-Verlag.

K. Klose et al. Partial evaluation of pointcuts. PADL, pp. 320–334, 2007.

J. Manson et al. “The Java Memory Model.” In POPL ’05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 378–391, New York, NY, USA, 2005. ACM.

P. Moret et al. “CCCP: Complete calling context profiling in virtual execution environments.” In PEPM ’09: Proceedings of the 2009 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, pp. 151–160, Savannah, GA, USA, 2009. ACM.

NetBeans. “The NetBeans Profiler Project.” Internet: http: //profiler.netbeans.org/.

OW2 Consortium. “ASM – A Java bytecode engineering library.” Internet: http://asm.ow2.org/.

K. Palacz et al. “Engineering a customizable intermediate representation.” In IVME ’03: Proceedings of the 2003 workshop on Interpreters, virtual machines and emulators, pp. 67–76, New York, NY, USA, 2003. ACM.

R. Pawlak. “Spoon: Compile-time annotation processing for middleware.” IEEE Distributed Systems Online, vol. 7, no. 11, pp. 1, 2006.

D. J. Pearce et al. “Profiling with AspectJ.” Software: Practice and Experience, vol. 37, no. 7, pp. 747–777, June 2007.

A. Popovici et al. “Just-in-time aspects: efficient dynamic weaving for Java.” In AOSD ’03: Proceedings of the 2nd International Conference on Aspect-Oriented Software Development, pp. 100–109, New York, NY, USA, 2003. ACM Press.

H. Rajan. “A Case for Explicit Join Point Models for Aspect-Oriented Intermediate Languages.” In VMIL ’07: Proceedings of the 1st Workshop on Virtual Machines and Intermediate Languages for Emerging Modularization Mechanisms, pp. 4, New York, NY, USA, 2007. ACM.

D. Röthlisberger et al. “Augmenting static source views in IDEs with dynamic metrics.” In ICSM ’09: Proceedings of the 25th IEEE International Conference on Software Maintenance, pp. 253–262, Edmonton, Alberta, Canada, 2009. IEEE Computer Society.

Spring Framework. “Open source application framework.” Internet: http://www.springsource.org/.

Sun Microsystems, Inc. “The Maxine Virtual Machine.” Internet: http://research.sun.com/projects/maxine/.

Sun Microsystems, Inc. “JVM Tool Interface (JVMTI) version 1.1.” Internet: http://java.sun.com/javase/6/docs/ platform/jvmti/jvmti.html, 2006.

The Apache Jakarta Project. “The Byte Code Engineering Library (BCEL).” Internet: http://jakarta.apache.org/bcel/.

R. Valleée-Rai et al. “Optimizing Java bytecode using the Soot framework: Is it feasible?” In Compiler Construction, 9th International Conference (CC 2000), pp. 18–34, 2000.

A. Villazón et al. “Advanced Runtime Adaptation for Java.” In GPCE ’09: Proceedings of the Eighth International Conference on Generative Programming and Component Engineering, pp. 85–94. ACM, Oct. 2009.

A. Villazón et al. “Aspect Weaving in Standard Java Class Libraries.” In PPPJ ’08: Proceedings of the 6th International Symposium on Principles and Practice of Programming in Java, pp. 159–167, New York, NY, USA, Sept. 2008. ACM.

A. Villazón et al. “Flexible Calling Context Reification for Aspect-Oriented Programming.” In AOSD ’09: Proceedings of the 8th International Conference on Aspect-oriented Software Development, pp. 63–74, Charlottesville, Virginia, USA, Mar. 2009. ACM.

G. Xu and A. Rountev. “Precise memory leak detection for Java software using container profiling.” In ICSE ’08: Proceedings of the 30th international conference on Software engineering, pp. 151–160, New York, NY, USA, 2008. ACM.

P. Avgustinov et al. “Optimising AspectJ.” In PLDI ’05: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, pp. 117–128, New York, NY, USA, 2005. ACM.


Enlaces refback

  • No hay ningún enlace refback.


ESTADÍSTICAS DEL ARTICULO
Resumen : 246
ARCHIVO PDF ABSTRACT : 50
ARCHIVO PDF RESUMEN : 36
ARCHIVO PDF FULL ARTICLE : 101



Copyright (c) 2018 Revista Investigación & Desarrollo

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.