Abstract
CaesarJ is an aspect-oriented language which unifies aspects, classes and packages in a single powerful construct that helps to solve a set of different problems of both aspect-oriented and component-oriented programming. The paper gradually introduces the concepts of the language and illustrates them by showing how they can be used for noninvasive component refinement and integration, as well as for development of well modularized flexible aspects. In this way we demonstrate that the combination of aspect-oriented constructs for joinpoint interception with advanced modularization techniques like virtual classes and propagating mixin composition can open the path towards large-scale aspect components.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Aldrich, J.: Open modules: Modular reasoning in aspect-oriented programming. In: Workshop on Foundations of Aspect-Oriented Languages (FOAL) at AOSD 2004 (2004)
Arnold, K., Gosling, J.: The Java Programming Language. Addison-Wesley, Reading (1996)
Barrett, K., Cassels, B., Haahr, P., Moon, D.A., Playford, K., Withington, P.T.: A monotonic superclass linearization for Dylan. In: Proceedings of the 11th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 69–82. ACM, New York (1996)
Batory, D., Sarvela, J.N., Rauschmayer, A.: Scaling step-wise refinement. In: ICSE 2003: Proceedings of the 25th International Conference on Software Engineering, pp. 187–197. IEEE Computer Society, Los Alamitos (2003)
Batory, D., Singhal, V., Thomas, J., Dasari, S., Geraci, B., Sirkin, M.: The GENVOCA model of software-system generators. IEEE Softw. 11(5), 89–94 (1994)
Black, A.P., Scharli, N.: Traits: Tools and methodology. In: ICSE 2004: Proceedings of the 26th International Conference on Software Engineering, pp. 676–686. IEEE Computer Society, Washington (2004)
Bockisch, C., Haupt, M., Mezini, M., Ostermann, K.: Virtual machine support for dynamic join points. In: AOSD 2004: Proceedings of the 3rd International Conference on Aspect-Oriented Software Development, pp. 83–92. ACM, New York (2004)
Boner, J.: Aspectwerkz, http://aspectwerkz.codehaus.org/index.html
Bracha, G., Cook, W.: Mixin-based inheritance. In: OOPSLA/ECOOP 1990: Proceedings of the European Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 303–311. ACM, New York (1990)
Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: Multijava: Modular open classes and symmetric multiple dispatch for java. SIGPLAN Not. 35(10), 130–145 (2000)
Douence, R., Südholt, M.: A model and a tool for event-based aspect-oriented programming. Technical Report 02/11/INFO, Ecole des Mines de Nantes (2002)
Ernst, E.: gbeta—A Language With Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhD thesis, Department of Computer Science, University of Aarhus, Denmark (1999)
Ernst, E.: Propagating Class and Method Combination. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 67–91. Springer, Heidelberg (1999)
Ernst, E.: Family polymorphism. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)
Ernst, E.: Higher-order hierarchies. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 303–329. Springer, Heidelberg (2003)
Ernst, E., Ostermann, K., Cook, W.: A virtual class calculus. In: 33rd ACM Symposium on Principles of Programming Languages (POPL 2006). ACM SIGPLAN-SIGACT (to appear, 2006)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison- Wesley, Reading (1995)
Hallpap, J.: Towards Caesar: Dynamic deployment and aspectual polymorphism. Master’s thesis, Department of Computer Science, Darmstadt University of Technology (2003), http://www.st.informatik.tu-darmstadt.de/database/theses/thesis/DiplomaThesis.pdf?id=15
Hanenberg, S., Unland, R.: Parametric introductions. In: AOSD 2003: Proceedings of the 2nd International Conference on Aspect-Oriented Software Development, pp. 80–89. ACM, New York (2003)
Hannemann, J., Kiczales, G.: Design pattern implementation in Java and AspectJ. In: OOPSLA 2002: Proceedings of the 17th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 161–173. ACM, New York (2002)
Haupt, M., Mezini, M., Bockisch, C., Dinkelaker, T., Eichberg, M., Krebs, M.: An execution layer for aspect-oriented programming languages. In: VEE 2005: Proceedings of the 1st ACM/USENIX International Conference on Virtual Execution Environments, pp. 142–152. ACM, New York (2005)
Herrmann, S.: Object Teams: Improving Modularity for Crosscutting Collaborations. In: Aksit, M., Mezini, M., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 248–264. Springer, Heidelberg (2003)
Hirschfeld, R.: AspectS - Aspect-Oriented Programming with Squeak. In: Aksit, M., Mezini, M., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 216–232. Springer, Heidelberg (2003)
Hölzle, U.: Integrating Independently-Developed Components in Object-Oriented Languages. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 36–56. Springer, Heidelberg (1993)
JBoss Inc. JBoss aop beta3 (2004), http://www.jboss.org
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)
Kiczales, G., Mezini, M.: Aspect-oriented programming and modular reasoning. In: ICSE 2005: Proceedings of the 27th International Conference on Software Engineering, pp. 49–58. ACM, New York (2005)
Kniesel, G., Rho, T., Hanenberg, S.: Evolvable pattern implementations need generic aspects. In: RAM-SE, Fakultät für Informatik, Universität Magdeburg, Germany, pp. 111–126 (2004)
Lämmel, R.: A semantical approach to method-call interception. In: AOSD 2002: Proceedings of the 1st International Conference on Aspect-Oriented Software Development, pp. 41–55. ACM, New York (2002)
Lämmel, R., Stenzel, C.: Semantics-Directed Implementation of Method-Call Interception. IEEE Proceedings Software 151(2), 109–128 (2004)
Lieberherr, K., Lorenz, D., Mezini, M.: Programming with aspectual components. Technical Report NU-CCS-99-01, Northeastern University, Boston, MA (1999)
Lieberherr, K., Lorenz, D., Ovlinger, J.: Aspectual collaborations – combining modules and aspects. Journal of British Computer Society 46(5), 542–565 (2003)
Loughran, N., Rashid, A.: Framed Aspects: Supporting Variability and Configurability for AOP. In: Bosch, J., Krueger, C. (eds.) ICOIN 2004 and ICSR 2004. LNCS, vol. 3107, pp. 127–140. Springer, Heidelberg (2004)
Madsen, O.L., Møller-Pedersen, B.: Virtual classes: A powerful mechanism in object-oriented programming. In: OOPSLA 1989: Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications, pp. 397–406. ACM, New York (1989)
Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object Oriented Programming in the Beta Programming Language. Addison-Wesley, Reading (1993)
Mezini, M., Lieberherr, K.: Adaptive plug-and-play components for evolutionary software development. In: OOPSLA 1998: Proceedings of the 13th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 97–116. ACM, New York (1998)
Mezini, M., Ostermann, K.: Integrating independent components with on-demand remodularization. In: OOPSLA 2002: Proceedings of the 17th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 52–67. ACM, New York (2002)
Mezini, M., Ostermann, K.: Conquering aspects with Caesar. In: AOSD 2003: Proceedings of the 2nd International Conference on Aspect-Oriented Software Development, pp. 90–99. ACM, New York (2003)
Mezini, M., Seiter, L., Lieberherr, K.: Component integration with pluggable composite adapters. In: Aksit, M. (ed.) Software Architectures and Component Technology: The State of the Art in Research and Practice. Kluwer, Dordrecht (2000)
Millstein, T., Reay, M., Chambers, C.: Relaxed multijava: Balancing extensibility and modular typechecking. SIGPLAN Not. 38(11), 224–240 (2003)
Nishizawa, M., Chiba, S., Tatsubori, M.: Remote pointcut: A language construct for distributed aop. In: AOSD 2004: Proceedings of the 3rd International Conference on Aspect-Oriented Software Development, pp. 7–15. ACM, New York (2004)
Nystrom, N., Chong, S., Myers, A.C.: Scalable extensibility via nested inheritance. SIGPLAN Not. 39(10), 99–115 (2004)
Ostermann, K.: Dynamically Composable Collaborations with Delegation Layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 89–110. Springer, Heidelberg (2002)
Ostermann, K., Mezini, M., Bockisch, C.: Expressive Pointcuts for Increased Modularity. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 214–240. Springer, Heidelberg (2005)
Pawlak, R., Seinturier, L., Duchien, L., Florin, G.: JAC: A Flexible Solution for Aspect-Oriented Programming in Java. In: Yonezawa, A., Matsuoka, S. (eds.) Reflection 2001. LNCS, vol. 2192, pp. 1–24. Springer, Heidelberg (2001)
Popovici, A., Gross, T., Alonso, G.: Dynamic weaving for aspect-oriented programming. In: AOSD 2002: Proceedings of the 1st International Conference on Aspect-Oriented Software Development, pp. 141–147. ACM, New York (2002)
Rajan, H., Sullivan, K.J.: Classpects: Unifying aspect- and object-oriented language design. In: ICSE 2005: Proceedings of the 27th International Conference on Software Engineering, pp. 59–68. ACM, New York (2005)
Smaragdakis, Y., Batory, D.S.: Implementing layered designs with mixin layers. In: ECCOP 1998: Proceedings of the 12th European Conference on Object-Oriented Programming, pp. 550–570. Springer, Heidelberg (1998)
Szyperski, C.: Independently extensible systems – software engineering potential and challenges. In: Proceedings 19th Australian Computer Science Conference, Australian Computer Science Communications, Melbourne (1996)
Szyperski, C.: Component Software – Beyond Object-Oriented Programming. Addison-Wesley, New York (1998)
Tarr, P., Ossher, H.: Hyper/J user and installation manual (1999), http://www.research.ibm.com/hyperspace
Tarr, P., Ossher, H., Harrison, W., Sutton, S.M.: N degrees of separation: Multi-dimensional separation of concerns. In: ICSE 1999: Proceedings International Conference on Software Engineering, pp. 107–119. ACM, New York (1999)
Van Hilst, M., Notkin, D.: Using role components in implement collaboration-based designs. In: OOPSLA 1996: Proceedings of the 11th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 359–369. ACM, New York (1996)
Zenger, M.: Evolving software with extensible modules. In: ECOOP-WS 2002. LNCS, vol. 2548, pp. 92–106. Springer, Heidelberg (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Aracic, I., Gasiunas, V., Mezini, M., Ostermann, K. (2006). An Overview of CaesarJ. In: Rashid, A., Aksit, M. (eds) Transactions on Aspect-Oriented Software Development I. Lecture Notes in Computer Science, vol 3880. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11687061_5
Download citation
DOI: https://doi.org/10.1007/11687061_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-32972-5
Online ISBN: 978-3-540-32974-9
eBook Packages: Computer ScienceComputer Science (R0)