Skip to main content

A Lua-based AOP infrastructure


In this paper we describe an aspect-oriented infrastructure to handle dynamic AOP based on the Lua language. This infrastructure is composed of AspectLua, a Lua extension that allows the declaration of aspects, and a meta-object protocol, LuaMOP, that unifies the introspective and reflective mechanisms provided by Lua. Aspects are defined in isolation using AspectLua and then they are weaved through LuaMOP. An important feature of AspectLua is to allow the association of aspects with undeclared elements of the application code (anticipated join points). Furthermore, it combines a range of features to make AOP easier and powerful.


  • [1]A. Bryant, R. Feldt. AspectR — Simple aspect-oriented programming in Ruby., 2002.

  • [2]D. Dechow. Advanced Separation of Concerns for Dynamic, Lightweight Languages. In5th Generative Programming and Component Engineering.

  • [3]A. Gal, W. Schröder-Preikschat, O. Spinczyk. AspectC++: Language Proposal and Prototype Implementation.OOPSLA 2001 Workshop on Advanced Separation of Concerns in Object-Oriented Systems, Tampa — Fl, October, 2001.

  • [4]A. Goldberg, D. Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley, 1983.

  • [5]S. Herrmann, M. Mezini. Combining Composition Styles in the Evolvable Language LAC. In:ASoC Workshop in ICSE — International Conference on Software Engineering, 2001.

  • [6]R. Hirschfeld. AspectS — Aspect-Oriented Programming with Squeak. InRevised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World, LNCS 2591, pp. 216–232, Springer-Verlag, London, 2002.

    Chapter  Google Scholar 

  • [7]R. Ierusalimsky, L. H. Figueiredo, W. Celes. Lua — an extensible extension language.Software: Practice and xperience, 26(6):635–652. 1996.

    Article  Google Scholar 

  • [8]P. Maes. Concepts and Experiments in Computational Reflection. InObject-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Orlando, Florida, pp. 147-155, 1987.

  • [9]G. Kiczales, J. Lamping, A. Mendhekar et al. Aspectoriented programming. In:ECOOP’97 - European Conference on Object-Oriented Programming. Springer-Verlag, Finland. 1997.

    Google Scholar 

  • [10]G. Kiczales, E. Hilsdale, J. Hugunin et al. An Overview of AspectJ. InECOOP’2001 — European Conference on Object-Oriented Programming. Budapest, Hungary. 2001.

  • [11]K. Lierberherr, D. Lorenz, M. Mezini. Programming with Aspectual Components. Technical Report NUCCS99-01, Notheastern University. 1999.

  • [12]R. Miles. Lazy Loading with Aspects., 7/lazyAspects.html. 2004.

  • [13]G. Rossum. Python Reference Manual, 2003.

  • [14]D. Thomas, A. Hunt. Programming Ruby: A Pragmatic Programmer’s Guide. book/, 2004.

  • [15]N. Cacho, T. Batista. Adaptação Dinâmica no Open-Orb: detalhes de implementação In 23th Brazilian Symposium on Computer Networks (SBRC’2005), SBC, Fortaleza, CE, May 2005, pp. 495–508.

  • [16]A. Andersen, G. S. Blair, F. Eliassen. A reflective component-based middleware with quality of service management. InPROMS 2000, Protocols for Multimedia Systems. Cracow, Poland, 2000.

  • [17]G. S. Blair et al. The design and implementation of Open ORB v2.IEEE Distributed Systems Online, 2(6), 2001.

  • [18]J. Sztipanovits, G. Karsai. Generative Programming for Embedded Systems.The ACM SIGPLAN/ SIGSOFT Conference on Generative Programming and Component Engineering. Lecture Notes In Computer Science (LNCS), Vol. 2487, pp. 32-49, 2002.

  • [19]Nicoara, G. Alonso. Dynamic AOP with PROSE. Department of Computer Science. Swiss Federal Institute of Technology Zürich. ttp:// PROSE-ASMEA05.pdf

  • [20]Chiba, S. A Metaobject Protocol for C++. InObject-Oriented Programming, Systems, Languages, and Applications (OOPSLA), Austin, Texas, October 1995, pp. 285-299.

  • [21]Tatsubori, M. et al. OpenJava: A Class-based Macro System for Java. InReflection and Software Engineering, LNCS 1826, Springer Verlag, 200, pp. 117-133.

  • [22]D. H. H. Ingalls, T. Kaehler, J. Maloney et al. Back to the Future: The Story of Squeak, A Practical Smalltalk Written in Itself. InProceedings of OOPSLA ’97, Atlanta, Georgia, October 5–9, 1997. SIGPLAN Notices 32(10).

  • [23]A. D. Almeida, N. Cacho, T. Batista. LuaSpace Plus: Um Ambiente Visual para Desenvolvimen-to de Aplicaçães CORBA. InProceeding of the 18th Brazilian Symposium on Software Engineering(SBES’2004), SBC, pp. 163-177, Brasília, DF, October 2004.

  • [24]N. Cacho, F. Fernandes, T. Batista. Handling Dynamic Aspects in Lua.Journal of Universal Computer Science (J.UCS), 11(7):1177–1197, 2005.

    Google Scholar 

  • [25]F. Fernandes, T. Batista, N. Cacho. Exploring reflection to dynamically aspectizing corba-based applications. InProceedings of the 3rd workshop on Adaptive and reflective middleware, pp. 220–225, New York, USA. ACM Press. 2004.

    Chapter  Google Scholar 

  • [26]J. Bonér. AspectWerkz — Dynamic AOP for Java. 2003.

  • [27]R. Pawlak, L. Duchien, G. Florin et al. JAC: An Aspect-Based Distributed Dynamic Framework

  • [28]C. Zhang, D. Gao, H. Jacobsen. Towards Just- in-time Middleware Architectures. InFourth International Conference on Aspect-riented Software Development, Chicago, USA, March 2005.

  • [29]F. Hunleth, R. Cytron, C. Gill. Building Customizable Middleware using Aspect Oriented Programming. InOOPSLA 2001 Workshop on Advanced Separation of Concerns in Object-Oriented Systems. 2001. Tampa, Florida.

Download references

Author information

Authors and Affiliations


Rights and permissions

Open Access This article is distributed under the terms of the Creative Commons Attribution 2.0 International License ( ), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

Reprints and permissions

About this article

Cite this article

Cacho, N., Batista, T. & Fernandes, F. A Lua-based AOP infrastructure. J Braz Comp Soc 11, 7–20 (2005).

Download citation

  • Issue Date:

  • DOI: