{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,2,9]],"date-time":"2024-02-09T23:30:09Z","timestamp":1707521409927},"reference-count":26,"publisher":"Association for Computing Machinery (ACM)","issue":"5","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2003,9]]},"abstract":"\n In this paper we present Jam, an extension of the Java language supporting\n mixins<\/jats:italic>\n , that is, parametric heir classes. A mixin declaration in Jam is similar to a Java heir class declaration, except that it does not extend a fixed parent class, but simply specifies the set of fields and methods a generic parent should provide. In this way, the same mixin can be instantiated on many parent classes, producing different heirs, thus avoiding code duplication and largely improving modularity and reuse. Moreover, as happens for classes and interfaces, mixin names are reference types, and all the classes obtained by instantiating the same mixin are considered subtypes of the corresponding type, and hence can be handled in a uniform way through the common interface. This possibility allows a programming style where different ingredients are \"mixed\" together in defining a class; this paradigm is somewhat similar to that based on multiple inheritance, but avoids its complication.The language has been designed with the main objective in mind to obtain, rather than a new theoretical language, a working and smooth extension of Java. That means, on the design side, that we have faced the challenging problem of integrating the Java overall principles and complex type system with this new notion; on the implementation side, it means that we have developed a Jam-to-Java translator which makes Jam sources executable on every Java Virtual Machine.\n <\/jats:p>","DOI":"10.1145\/937563.937567","type":"journal-article","created":{"date-parts":[[2003,10,10]],"date-time":"2003-10-10T09:44:12Z","timestamp":1065779052000},"page":"641-712","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":49,"title":["Jam---designing a Java extension with mixins"],"prefix":"10.1145","volume":"25","author":[{"given":"Davide","family":"Ancona","sequence":"first","affiliation":[{"name":"University of Genoa, Genoa, Italy"}]},{"given":"Giovanni","family":"Lagorio","sequence":"additional","affiliation":[{"name":"University of Genoa, Genoa, Italy"}]},{"given":"Elena","family":"Zucca","sequence":"additional","affiliation":[{"name":"University of Genoa, Genoa, Italy"}]}],"member":"320","published-online":{"date-parts":[[2003,9]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Jam: A smooth extension of Java with mixins. In ECOOP'00---European Conference on Object-Oriented Programming","author":"Ancona D.","year":"2000","unstructured":"Ancona , D. , Lagorio , G. , and Zucca , E . 2000 . Jam: A smooth extension of Java with mixins. In ECOOP'00---European Conference on Object-Oriented Programming , E. Bertino, Ed. Lecture Notes in Computer Science, vol. 1850 . Springer , Berlin, Germany, 154--178.]] Ancona, D., Lagorio, G., and Zucca, E. 2000. Jam: A smooth extension of Java with mixins. In ECOOP'00---European Conference on Object-Oriented Programming, E. Bertino, Ed. Lecture Notes in Computer Science, vol. 1850. Springer, Berlin, Germany, 154--178.]]"},{"key":"e_1_2_1_2_1","volume-title":"ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications","author":"Ancona D.","year":"2001","unstructured":"Ancona , D. , Lagorio , G. , and Zucca , E . 2001. A core calculus for Java exceptions . In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 2001 . ACM Press, New York, NY.]] 10.1145\/504282.504284 Ancona, D., Lagorio, G., and Zucca, E. 2001. A core calculus for Java exceptions. In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 2001. ACM Press, New York, NY.]] 10.1145\/504282.504284"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0960129598002576"},{"key":"e_1_2_1_4_1","volume-title":"ECOOP'01---European Conference on Object-Oriented Programming, J. Knudsen, Ed. Lecture Notes in Computer Science","volume":"2072","author":"Ancona D.","unstructured":"Ancona , D. and Zucca , E . 2001. True modules for Java-like languages . In ECOOP'01---European Conference on Object-Oriented Programming, J. Knudsen, Ed. Lecture Notes in Computer Science , vol. 2072 . Springer, Berlin, Germany, 354--380.]] Ancona, D. and Zucca, E. 2001. True modules for Java-like languages. In ECOOP'01---European Conference on Object-Oriented Programming, J. Knudsen, Ed. Lecture Notes in Computer Science, vol. 2072. Springer, Berlin, Germany, 354--380.]]"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796801004257"},{"key":"e_1_2_1_6_1","volume-title":"ECOOP'96---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science","volume":"1098","author":"Banavar G.","unstructured":"Banavar , G. and Lindstrom , G . 1996. An application framework for module composition tools . In ECOOP'96---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science , vol. 1098 . Springer, Berlin, Germany, 91--113.]] Banavar, G. and Lindstrom, G. 1996. An application framework for module composition tools. In ECOOP'96---European Conference on Object-Oriented Programming. Lecture Notes in Computer Science, vol. 1098. Springer, Berlin, Germany, 91--113.]]"},{"key":"e_1_2_1_7_1","article-title":"Mechanisms for secure modular programming","author":"Bauer L.","year":"1999","unstructured":"Bauer , L. , Appel , A. , and Felten , E. 1999 . Mechanisms for secure modular programming in Java. Tech. Rep. CS-TR-603-99, Department of Computer Science, Princeton University, Princeton, NJ.]] Bauer, L., Appel, A., and Felten, E. 1999. Mechanisms for secure modular programming in Java. Tech. Rep. CS-TR-603-99, Department of Computer Science, Princeton University, Princeton, NJ.]]","journal-title":"Java. Tech. Rep. CS-TR-603-99, Department of Computer Science, Princeton University, Princeton, NJ.]]"},{"key":"e_1_2_1_8_1","volume-title":"ECOOP'00---European Conference on Object-Oriented Programming, R. Guerraoui, Ed. Lecture Notes in Computer Science","volume":"1628","author":"Bono V.","unstructured":"Bono , V. , Patel , A. , and Shmatikov , V . 1999. A core calculus of classes and mixins . In ECOOP'00---European Conference on Object-Oriented Programming, R. Guerraoui, Ed. Lecture Notes in Computer Science , vol. 1628 . Berlin, Germany, 43--66.]] Bono, V., Patel, A., and Shmatikov, V. 1999. A core calculus of classes and mixins. In ECOOP'00---European Conference on Object-Oriented Programming, R. Guerraoui, Ed. Lecture Notes in Computer Science, vol. 1628. Berlin, Germany, 43--66.]]"},{"key":"e_1_2_1_9_1","unstructured":"Booch G. Rumbaugh J. and Jacobson J. 1998. Unified Modeling Language User Guide. Addison-Wesley Reading MA.]] Booch G. Rumbaugh J. and Jacobson J. 1998. Unified Modeling Language User Guide. Addison-Wesley Reading MA.]]"},{"key":"e_1_2_1_11_1","volume-title":"ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications","author":"Bracha G.","year":"1990","unstructured":"Bracha , G. and Cook , W . 1990. Mixin-based inheritance . In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 1990 . SIGPLAN Not. 25, 10, 303--311.]] 10.1145\/97945.97982 Bracha, G. and Cook, W. 1990. Mixin-based inheritance. In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 1990. SIGPLAN Not. 25, 10, 303--311.]] 10.1145\/97945.97982"},{"key":"e_1_2_1_12_1","volume-title":"OOPSLA96 Workshop on Extending the Smalltalk Language. Electronic note available online at http:\/\/www. javasoft.com\/people\/gbracha\/mwp.html.]]","author":"Bracha G.","unstructured":"Bracha , G. and Griswold , D . 1996. Extending Smalltalk with mixins . In OOPSLA96 Workshop on Extending the Smalltalk Language. Electronic note available online at http:\/\/www. javasoft.com\/people\/gbracha\/mwp.html.]] Bracha, G. and Griswold, D. 1996. Extending Smalltalk with mixins. In OOPSLA96 Workshop on Extending the Smalltalk Language. Electronic note available online at http:\/\/www. javasoft.com\/people\/gbracha\/mwp.html.]]"},{"key":"e_1_2_1_13_1","volume-title":"Proceedings of the International Conference on Computer Languages. IEEE Computer Society","author":"Bracha G.","unstructured":"Bracha , G. and Lindstrom , G . 1992. Modularity meets inheritance . In Proceedings of the International Conference on Computer Languages. IEEE Computer Society , Press, Los Alamitos, CA, 282--290.]] Bracha, G. and Lindstrom, G. 1992. Modularity meets inheritance. In Proceedings of the International Conference on Computer Languages. IEEE Computer Society, Press, Los Alamitos, CA, 282--290.]]"},{"key":"e_1_2_1_14_1","volume-title":"ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications","author":"Bracha G.","year":"1998","unstructured":"Bracha , G. , Odersky , M. , Stoutmire , D. , and Wadler , P . 1998. Making the future safe for the past: Adding genericity to the Java programming language . In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 1998 . Available online at http:\/\/www.cs.bell-labs.com\/who\/wadler\/pizza\/gj\/.]] 10.1145\/286936.286957 Bracha, G., Odersky, M., Stoutmire, D., and Wadler, P. 1998. Making the future safe for the past: Adding genericity to the Java programming language. In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 1998. Available online at http:\/\/www.cs.bell-labs.com\/who\/wadler\/pizza\/gj\/.]] 10.1145\/286936.286957"},{"key":"e_1_2_1_15_1","volume-title":"Ed. Lecture Notes in Computer Science","volume":"1523","author":"Drossopoulou S.","unstructured":"Drossopoulou , S. and Eisenbach , S . 1999. Describing the semantics of Java and proving type soundness. In Formal Syntax and Semantics of Java, J. Alves-Foss , Ed. Lecture Notes in Computer Science , vol. 1523 . Springer, Berlin, Germany, 41--82.]] Drossopoulou, S. and Eisenbach, S. 1999. Describing the semantics of Java and proving type soundness. In Formal Syntax and Semantics of Java, J. Alves-Foss, Ed. Lecture Notes in Computer Science, vol. 1523. Springer, Berlin, Germany, 41--82.]]"},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the IEEE Symposium on Logic in Computer Science. IEEE Computer Society Press","author":"Drossopoulou S.","unstructured":"Drossopoulou , S. , Eisenbach , S. , and Wragg , D . 1999. A fragment calculus---towards a model of separate compilation, linking and binary compatibility . In Proceedings of the IEEE Symposium on Logic in Computer Science. IEEE Computer Society Press , Los Alamitos, CA.]] Drossopoulou, S., Eisenbach, S., and Wragg, D. 1999. A fragment calculus---towards a model of separate compilation, linking and binary compatibility. In Proceedings of the IEEE Symposium on Logic in Computer Science. IEEE Computer Society Press, Los Alamitos, CA.]]"},{"key":"e_1_2_1_17_1","volume-title":"Proceedings of the International Conference on Functional Programming. ACM Press","author":"Duggan D.","unstructured":"Duggan , D. and Sourelis , C . 1996. Mixin modules . In Proceedings of the International Conference on Functional Programming. ACM Press , New York, NY, 262--273.]] 10.1145\/232627.232654 Duggan, D. and Sourelis, C. 1996. Mixin modules. In Proceedings of the International Conference on Functional Programming. ACM Press, New York, NY, 262--273.]] 10.1145\/232627.232654"},{"key":"e_1_2_1_18_1","volume-title":"PLDI'99---ACM Conference on Programming Language Design and Implementation. ACM Press","author":"Fisher K.","unstructured":"Fisher , K. and Reppy , J . 1999. The design of a class mechanism for Moby . In PLDI'99---ACM Conference on Programming Language Design and Implementation. ACM Press , New York, NY, 37--49.]] 10.1145\/301618.301638 Fisher, K. and Reppy, J. 1999. The design of a class mechanism for Moby. In PLDI'99---ACM Conference on Programming Language Design and Implementation. ACM Press, New York, NY, 37--49.]] 10.1145\/301618.301638"},{"key":"e_1_2_1_19_1","volume-title":"ACM Symposium on Principles of Programming Languages","author":"Flatt M.","year":"1998","unstructured":"Flatt , M. , Krishnamurthi , S. , and Felleisen , M . 1998. Classes and mixins . In ACM Symposium on Principles of Programming Languages 1998 . ACM Press, New York, NY, 171--183.]] 10.1145\/268946.268961 Flatt, M., Krishnamurthi, S., and Felleisen, M. 1998. Classes and mixins. In ACM Symposium on Principles of Programming Languages 1998. ACM Press, New York, NY, 171--183.]] 10.1145\/268946.268961"},{"key":"e_1_2_1_20_1","volume-title":"Design Patterns: Elements od Reusable Object-Oriented Software","author":"Gamma E.","year":"1995","unstructured":"Gamma , E. , Helm , R. , Johnson , R. , and Vlissides , J . 1995 . Design Patterns: Elements od Reusable Object-Oriented Software . Addison-Wesley Professional Computing Series. Addison-Wesley , Reading, MA.]] Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements od Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series. Addison-Wesley, Reading, MA.]]"},{"key":"e_1_2_1_21_1","unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2000. The JavaTM Language Specification 2nd ed. Addison-Wesley Reading MA.]] Gosling J. Joy B. Steele G. and Bracha G. 2000. The JavaTM Language Specification 2nd ed. Addison-Wesley Reading MA.]]"},{"key":"e_1_2_1_22_1","volume-title":"Object Oriented Programming in Common Lisp: A Programming Guide in CLOS","author":"Keene S.","unstructured":"Keene , S. 1989. Object Oriented Programming in Common Lisp: A Programming Guide in CLOS . Addison-Wesley , Reading, MA .]] Keene, S. 1989. Object Oriented Programming in Common Lisp: A Programming Guide in CLOS. Addison-Wesley, Reading, MA.]]"},{"key":"e_1_2_1_23_1","volume-title":"ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications","author":"McDirmid S.","year":"2001","unstructured":"McDirmid , S. , Flatt , M. , and Hsieh , W . 2001. Jiazzi: New age components for old fashioned Java . In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 2001 . ACM Press, New York, NY.]] 10.1145\/504282.504298 McDirmid, S., Flatt, M., and Hsieh, W. 2001. Jiazzi: New age components for old fashioned Java. In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 2001. ACM Press, New York, NY.]] 10.1145\/504282.504298"},{"key":"e_1_2_1_24_1","volume-title":"ACM Symposium on Principles of Programming Languages","author":"Meyers A.","year":"1997","unstructured":"Meyers , A. , Bank , J. , and Liskov , B . 1997. Parameterized types for Java . In ACM Symposium on Principles of Programming Languages 1997 . ACM Press, New York, NY.]] 10.1145\/263699.263714 Meyers, A., Bank, J., and Liskov, B. 1997. Parameterized types for Java. In ACM Symposium on Principles of Programming Languages 1997. ACM Press, New York, NY.]] 10.1145\/263699.263714"},{"key":"e_1_2_1_25_1","volume-title":"ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications","author":"Moon D.","year":"1986","unstructured":"Moon , D. 1986 . Object oriented programming with flavors . In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 1986. ACM Press, New York, NY, 1--8.]] 10.1145\/28697.28698 Moon, D. 1986. Object oriented programming with flavors. In ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications 1986. ACM Press, New York, NY, 1--8.]] 10.1145\/28697.28698"},{"key":"e_1_2_1_26_1","volume-title":"ACM Symposium on Principles of Programming Languages","author":"Odersky M.","year":"1997","unstructured":"Odersky , M. and Wadler , P . 1997. Pizza into Java: Translating theory into practice . In ACM Symposium on Principles of Programming Languages 1997 . ACM Press, New York, NY.]] 10.1145\/263699.263715 Odersky, M. and Wadler, P. 1997. Pizza into Java: Translating theory into practice. In ACM Symposium on Principles of Programming Languages 1997. ACM Press, New York, NY.]] 10.1145\/263699.263715"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/323648.323738"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/937563.937567","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,1,3]],"date-time":"2023-01-03T07:32:53Z","timestamp":1672731173000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/937563.937567"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2003,9]]},"references-count":26,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2003,9]]}},"alternative-id":["10.1145\/937563.937567"],"URL":"https:\/\/doi.org\/10.1145\/937563.937567","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2003,9]]},"assertion":[{"value":"2003-09-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}