Advertisement

An Overview of CaesarJ

  • Ivica Aracic
  • Vaidas Gasiunas
  • Mira Mezini
  • Klaus Ostermann
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3880)

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.

Keywords

Family Class Company Model Inheritance Hierarchy Remote Process Virtual Classis 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Aldrich, J.: Open modules: Modular reasoning in aspect-oriented programming. In: Workshop on Foundations of Aspect-Oriented Languages (FOAL) at AOSD 2004 (2004)Google Scholar
  2. 2.
    Arnold, K., Gosling, J.: The Java Programming Language. Addison-Wesley, Reading (1996)zbMATHGoogle Scholar
  3. 3.
    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)Google Scholar
  4. 4.
    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)CrossRefGoogle Scholar
  5. 5.
    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)CrossRefGoogle Scholar
  6. 6.
    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)Google Scholar
  7. 7.
    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)Google Scholar
  8. 8.
  9. 9.
    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)Google Scholar
  10. 10.
    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)CrossRefGoogle Scholar
  11. 11.
    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)Google Scholar
  12. 12.
    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)Google Scholar
  13. 13.
    Ernst, E.: Propagating Class and Method Combination. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 67–91. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  14. 14.
    Ernst, E.: Family polymorphism. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  15. 15.
    Ernst, E.: Higher-order hierarchies. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 303–329. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  16. 16.
    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)Google Scholar
  17. 17.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison- Wesley, Reading (1995)zbMATHGoogle Scholar
  18. 18.
    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
  19. 19.
    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)Google Scholar
  20. 20.
    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)CrossRefGoogle Scholar
  21. 21.
    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)CrossRefGoogle Scholar
  22. 22.
    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)CrossRefGoogle Scholar
  23. 23.
    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)CrossRefGoogle Scholar
  24. 24.
    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)CrossRefGoogle Scholar
  25. 25.
    JBoss Inc. JBoss aop beta3 (2004), http://www.jboss.org
  26. 26.
    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)CrossRefGoogle Scholar
  27. 27.
    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)Google Scholar
  28. 28.
    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)Google Scholar
  29. 29.
    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)Google Scholar
  30. 30.
    Lämmel, R., Stenzel, C.: Semantics-Directed Implementation of Method-Call Interception. IEEE Proceedings Software 151(2), 109–128 (2004)CrossRefGoogle Scholar
  31. 31.
    Lieberherr, K., Lorenz, D., Mezini, M.: Programming with aspectual components. Technical Report NU-CCS-99-01, Northeastern University, Boston, MA (1999)Google Scholar
  32. 32.
    Lieberherr, K., Lorenz, D., Ovlinger, J.: Aspectual collaborations – combining modules and aspects. Journal of British Computer Society 46(5), 542–565 (2003)zbMATHGoogle Scholar
  33. 33.
    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)CrossRefGoogle Scholar
  34. 34.
    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)Google Scholar
  35. 35.
    Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object Oriented Programming in the Beta Programming Language. Addison-Wesley, Reading (1993)Google Scholar
  36. 36.
    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)Google Scholar
  37. 37.
    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)CrossRefGoogle Scholar
  38. 38.
    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)Google Scholar
  39. 39.
    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)Google Scholar
  40. 40.
    Millstein, T., Reay, M., Chambers, C.: Relaxed multijava: Balancing extensibility and modular typechecking. SIGPLAN Not. 38(11), 224–240 (2003)CrossRefGoogle Scholar
  41. 41.
    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)Google Scholar
  42. 42.
    Nystrom, N., Chong, S., Myers, A.C.: Scalable extensibility via nested inheritance. SIGPLAN Not. 39(10), 99–115 (2004)CrossRefGoogle Scholar
  43. 43.
    Ostermann, K.: Dynamically Composable Collaborations with Delegation Layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 89–110. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  44. 44.
    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)CrossRefGoogle Scholar
  45. 45.
    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)CrossRefGoogle Scholar
  46. 46.
    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)Google Scholar
  47. 47.
    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)Google Scholar
  48. 48.
    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)Google Scholar
  49. 49.
    Szyperski, C.: Independently extensible systems – software engineering potential and challenges. In: Proceedings 19th Australian Computer Science Conference, Australian Computer Science Communications, Melbourne (1996)Google Scholar
  50. 50.
    Szyperski, C.: Component Software – Beyond Object-Oriented Programming. Addison-Wesley, New York (1998)Google Scholar
  51. 51.
    Tarr, P., Ossher, H.: Hyper/J user and installation manual (1999), http://www.research.ibm.com/hyperspace
  52. 52.
    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)Google Scholar
  53. 53.
    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)Google Scholar
  54. 54.
    Zenger, M.: Evolving software with extensible modules. In: ECOOP-WS 2002. LNCS, vol. 2548, pp. 92–106. Springer, Heidelberg (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Ivica Aracic
    • 1
  • Vaidas Gasiunas
    • 1
  • Mira Mezini
    • 1
  • Klaus Ostermann
    • 1
  1. 1.Darmstadt University of TechnologyDarmstadtGermany

Personalised recommendations