Shakeins: Nonintrusive Aspects for Middleware Frameworks

  • Tal Cohen
  • Joseph (Yossi) Gil
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4242)


Shakeins are a novel programming construct which, like mixins and generic classes, generates new classes from existing ones in a universal, uniform, and automatic manner: From a given class, a shakein generates a new class which has the same type as the original, but with different data and code implementation. We argue that shakeins are restricted, yet less chaotic, aspects. We further claim that shakeins are well suited for the introduction of aspect-oriented programming (AOP) into existing middleware applications. We introduce the AspectJ2EE language which, with the help of shakeins and a new deploy-time weaving mechanism, brings the blessings of AOP to the J2EE framework. A unique advantage of AspectJ2EE, which is less general (and hence less complicated) than AspectJ, is that it can be smoothly integrated into J2EE implementations without breaking their architecture.


Target Class Method Invocation Enterprise Application Client Code Method Execution 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Cohen, T., Gil, J.: AspectJ2EE = AOP + J2EE: towards an aspect based, programmable and extensible middleware framework. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 219–243. Springer, Heidelberg (2004)Google Scholar
  2. 2.
    Cohen, T., Gil, J.: Distinguishing class from type with factories and shakeins (submitted, 2006)Google Scholar
  3. 3.
    Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)CrossRefGoogle Scholar
  4. 4.
    Soares, S., Laureano, E., Borba, P.: Implementing distribution and persistence aspects with AspectJ. In: Proc. of the Seventeenth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2002), pp. 174–190 (2002)Google Scholar
  5. 5.
    Hao, R., Boloni, L., Jun, K., Marinescu, D.C.: An aspect-oriented approach to distributed object security. In: Proc. of the Fourth IEEE Symp. on Computers and CommunicationsGoogle Scholar
  6. 6.
    Kim, H., Clarke, S.: The relevance of AOP to an applications programmer in an EJB environment. In: Proc. of the First International Conference on Aspect-Oriented Software Development (AOSD) Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS) (2002)Google Scholar
  7. 7.
    Choi, J.P.: Aspect-oriented programming with Enterprise JavaBeans. In: Proc. of the Fourth International Enterprise Distributed Object Computing Conference (EDOC 2000), pp. 252–261 (2000)Google Scholar
  8. 8.
    Laddad, R.: AspectJ in Action: Practical Aspect-Oriented Programming. Manning, Greenwich (2003)Google Scholar
  9. 9.
    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–355. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  10. 10.
    Bracha, G., Cook, W.R.: Mixin-based inheritance. In: Meyrowitz, N.K. (ed.) Proc. of the Fifth Object-Oriented Programming Systems, Languages, and Applications / European Conference on Object-Oriented Programming OOPSLA/ECOOP 1990, pp. 303–311 (1990)Google Scholar
  11. 11.
    Parnas, D.L.: Information distribution aspects of design methodology. In: Freiman, C.V., Griffith, J.E., Rosenfeld, J.L. (eds.) Proc. of the IFIP Congress, pp. 339–344Google Scholar
  12. 12.
    Kiczales, G., Mezini, M.: Aspect-oriented programming and modular reasoning. In: Roman, G.-C., Griswold, W.G., Nuseibeh, B. (eds.) Proc. of the Twenty Seventh International Conference on Software Engineering (ICSE 2005), pp. 49–58 (2005)Google Scholar
  13. 13.
    Gradecki, J.D., Lesiecki, N.: Mastering AspectJ: Aspect-Oriented Programming in Java. Wiley, Chichester (2003)Google Scholar
  14. 14.
    Schärli, N., Ducasse, S., Nierstrasz, O., Black, A.P.: Traits: Composable units of behavior. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, pp. 248–274. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  15. 15.
    Cardelli, L., Wegner, P.: On understanding types, data abstractions, and polymorphism. ACM Computing Surveys 17, 471–522 (1985)CrossRefGoogle Scholar
  16. 16.
    Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, Department of Computer Science, University of Utah (1992)Google Scholar
  17. 17.
    Allen, E., Bannet, J., Cartwright, R.: A first-class approach to genericity. In: [36], pp. 96–114Google Scholar
  18. 18.
    Ancona, D., Lagorio, G., Zucca, E.: Jam — a smooth extension of Java with mixins. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 154–178. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  19. 19.
    McDirmid, S., Flatt, M., Hsieh, W.C.: Jiazzi: New-age components for old-fashioned Java. In: Proc. of the Sixteenth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2001), pp. 211–222 (2001)Google Scholar
  20. 20.
    McDirmid, S., Hsieh, W.C.: Aspect-oriented programming with Jiazzi. In: [37], pp. 70–79Google Scholar
  21. 21.
    Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.M.: Design Patterns: Elements of Reusable Object-Oriented Software. Professional Computing series. Addison-Wesley Publishing Company, Reading (1995)Google Scholar
  22. 22.
    Pichler, R., Ostermann, K., Mezini, M.: On aspectualizing component models. Software - Practice and Experience 33, 957–974 (2003)CrossRefGoogle Scholar
  23. 23.
    Bodoff, S., Green, D., Haase, K., Jendrock, E., Pawlan, M., Stearns, B.: The J2EE Tutorial. Addison-Wesley Publishing Company, Reading (2002)Google Scholar
  24. 24.
    Duclos, F., Estublier, J., Morat, P.: Describing and using non functional aspects in component based applications. In: Proc. of the First International Conference on Aspect-Oriented Software Development (AOSD 2002), pp. 22–26 (2002)Google Scholar
  25. 25.
    Mezini, M., Ostermann, K.: Conquering aspects with Caesar. In: [37], pp. 90–100Google Scholar
  26. 26.
    Pawlak, R., Seinturier, L., Duchien, L., Florin, G., Legond-Aubry, F., Martelli, L.: JAC: an aspect-based distributed dynamic framework. Soft. - Pract. and Exper. 34, 1119–1148 (2004)CrossRefGoogle Scholar
  27. 27.
    Truyen, E., Vanhaute, B., Joosen, W., Verbaeten, P., Jørgensen, B.N.: Dynamic and selective combination of extensions in component-based applications. In: Proc. of the Twenty Third International Conference on Software Engineering (ICSE 2001), pp. 233–242 (2001)Google Scholar
  28. 28.
    Popovici, A., Gross, T.R., Alonso, G.: Dynamic weaving for aspect-oriented programming. In: Proc. of the First International Conference on Aspect-Oriented Software Development (AOSD 2002), pp. 141–147 (2002)Google Scholar
  29. 29.
    Suvée, D., Vanderperren, W., Jonckers, V.: JAsCo: an aspect-oriented approach tailored for component based software development. In: [37], pp. 21–29Google Scholar
  30. 30.
    Walker, R.J., Baniassad, E.L.A., Murphy, G.C.: An initial assessment of aspect-oriented programming. In: Proc. of the Twenty First International Conference on Software Engineering (ICSE 1999), pp. 120–130 (1999)Google Scholar
  31. 31.
    Constantinides, C.A., Elrad, T., Fayad, M.E.: Extending the object model to provide explicit support for crosscutting concerns. Software - Practice and Experience 32, 703–734 (2002)zbMATHCrossRefGoogle Scholar
  32. 32.
    Gosling, J., Joy, B., Steele, G.L.J., Bracha, G.: The Java Language Specification, 3rd edn. Addison-Wesley Publishing Company, Reading (2005)Google Scholar
  33. 33.
    Nishizawa, M., Chiba, S., Tatsubori, M.: Remote pointcut: a language construct for distributed AOP. In: Proc. of the Third international conference on Aspect-Oriented Software Development (AOSD 2004), pp. 7–15 (2004)Google Scholar
  34. 34.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Englewood Cliffs (1997)zbMATHGoogle Scholar
  35. 35.
    Filman, R.E., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. In: OOPSLA 2000 Workshop on Advanced Separation of Concerns. ACM, Minneapolis (2000)Google Scholar
  36. 36.
    Crocker, R., Steele Jr., G.L. (eds.): Proc. of the Eighteenth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2003), Anaheim, California, USA. ACM SIGPLAN Notices 38(11) (2003)Google Scholar
  37. 37.
    Proc. of the Second International Conference on Aspect-Oriented Software Development (AOSD 2003), Boston, Massachusetts, USA. ACM Press, New York (2003)Google Scholar
  38. 38.
    Fähndrich, M., Leino, K.R.M.: Declaring and checking non-null types in an object-oriented language. In: [36], pp. 302–312Google Scholar
  39. 39.
    Grand, M.: Patterns in Java, vol. 1. John Wiley & Sons, USA (1998)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Tal Cohen
    • 1
  • Joseph (Yossi) Gil
    • 1
  1. 1.Department of Computer ScienceTechnion—Israel Institute of TechnologyHaifaIsrael

Personalised recommendations