Title
Jam---designing a Java extension with mixins
Abstract
In this paper we present Jam, an extension of the Java language supporting mixins, 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.
Year
DOI
Venue
2003
10.1145/937563.937567
ACM Trans. Program. Lang. Syst.
Keywords
Field
DocType
java virtual machine,java extension,mixin name,java language,generic parent,language design,mixin declaration,java,fixed parent class,new theoretical language,jam sources executable,java heir class declaration,java overall principle,multiple inheritance,type system
Programming language,Interface (Java),Scala,Mixin,Java annotation,Computer science,Real time Java,Generics in Java,strictfp,Java Modeling Language
Journal
Volume
Issue
ISSN
25
5
0164-0925
Citations 
PageRank 
References 
39
1.30
16
Authors
3
Name
Order
Citations
PageRank
Davide Ancona172769.43
Giovanni Lagorio221217.98
Elena Zucca3497101.25