Abstract
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.
Part of the contents of this paper was presented in the European Conference on Object Oriented Programming [1] and in a recently submitted paper [2].
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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)
Cohen, T., Gil, J.: Distinguishing class from type with factories and shakeins (submitted, 2006)
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)
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)
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 Communications
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)
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)
Laddad, R.: AspectJ in Action: Practical Aspect-Oriented Programming. Manning, Greenwich (2003)
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)
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)
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–344
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)
Gradecki, J.D., Lesiecki, N.: Mastering AspectJ: Aspect-Oriented Programming in Java. Wiley, Chichester (2003)
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)
Cardelli, L., Wegner, P.: On understanding types, data abstractions, and polymorphism. ACM Computing Surveys 17, 471–522 (1985)
Bracha, G.: The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, Department of Computer Science, University of Utah (1992)
Allen, E., Bannet, J., Cartwright, R.: A first-class approach to genericity. In: [36], pp. 96–114
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)
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)
McDirmid, S., Hsieh, W.C.: Aspect-oriented programming with Jiazzi. In: [37], pp. 70–79
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)
Pichler, R., Ostermann, K., Mezini, M.: On aspectualizing component models. Software - Practice and Experience 33, 957–974 (2003)
Bodoff, S., Green, D., Haase, K., Jendrock, E., Pawlan, M., Stearns, B.: The J2EE Tutorial. Addison-Wesley Publishing Company, Reading (2002)
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)
Mezini, M., Ostermann, K.: Conquering aspects with Caesar. In: [37], pp. 90–100
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)
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)
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)
Suvée, D., Vanderperren, W., Jonckers, V.: JAsCo: an aspect-oriented approach tailored for component based software development. In: [37], pp. 21–29
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)
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)
Gosling, J., Joy, B., Steele, G.L.J., Bracha, G.: The Java Language Specification, 3rd edn. Addison-Wesley Publishing Company, Reading (2005)
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)
Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Englewood Cliffs (1997)
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)
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)
Proc. of the Second International Conference on Aspect-Oriented Software Development (AOSD 2003), Boston, Massachusetts, USA. ACM Press, New York (2003)
Fähndrich, M., Leino, K.R.M.: Declaring and checking non-null types in an object-oriented language. In: [36], pp. 302–312
Grand, M.: Patterns in Java, vol. 1. John Wiley & Sons, USA (1998)
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
Cohen, T., Gil, J.(. (2006). Shakeins: Nonintrusive Aspects for Middleware Frameworks. In: Rashid, A., Aksit, M. (eds) Transactions on Aspect-Oriented Software Development II. Lecture Notes in Computer Science, vol 4242. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11922827_5
Download citation
DOI: https://doi.org/10.1007/11922827_5
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-48890-3
Online ISBN: 978-3-540-48891-0
eBook Packages: Computer ScienceComputer Science (R0)