Object-oriented programming with flavors
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
A programmer's guide to object-oriented programming in Common LISP
A programmer's guide to object-oriented programming in Common LISP
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Making the future safe for the past: adding genericity to the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Unified Modeling Language user guide
The Unified Modeling Language user guide
The design of a class mechanism for Moby
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
OOPWORK '86 Proceedings of the 1986 SIGPLAN workshop on Object-oriented programming
A core calculus for Java exceptions
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Jiazzi: new-age components for old-fasioned Java
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
An Application Framework For Module Composition Tools
ECCOP '96 Proceedings of the 10th European Conference on Object-Oriented Programming
True Modules for Java-like Languages
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
A Fragment Calculus Towards a Model of Separate Compilation, Linking and Binary Compatibility
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
A theory of mixin modules: basic and derived operators
Mathematical Structures in Computer Science
Journal of Functional Programming
Selective method combination in mixin-based composition
Proceedings of the 2005 ACM symposium on Applied computing
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
A provenly correct translation of Fickle into Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
FeatherTrait: A modest extension of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Decomposing Verification Around End-User Features
Verified Software: Theories, Tools, Experiments
Using modern mathematics as an FOSD modeling language
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Feature featherweight java: a calculus for feature-oriented programming and stepwise refinement
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
A mechanism for flexible dynamic trait replacement
Proceedings of the 11th International Workshop on Formal Techniques for Java-like Programs
Towards safe and flexible object adaptation
International Workshop on Context-Oriented Programming
Three approaches to object evolution
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Featherweight Jigsaw: A Minimal Core Calculus for Modular Composition of Classes
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
CZ: multiple inheritance without diamonds
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type safety for feature-oriented product lines
Automated Software Engineering
A prototypical Java-like language with records and traits
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
MetaFJig: a meta-circular composition language for Java-like classes
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Contracts for first-class classes
Proceedings of the 6th symposium on Dynamic languages
Implementing statically typed object-oriented programming languages
ACM Computing Surveys (CSUR)
Data model driven implementation of web cooperation systems with Tricia
ICOODB'10 Proceedings of the Third international conference on Objects and databases
On the integration of classboxes into c#
SC'06 Proceedings of the 5th international conference on Software Composition
Featherweight Jigsaw - Replacing inheritance by composition in Java-like languages
Information and Computation
Scheme with classes, mixins, and traits
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Combining traits with boxes and ownership types in a Java-like setting
Science of Computer Programming
TraitRecordJ: A programming language with traits and records
Science of Computer Programming
Correctness of intrusive data structures using mixins
Proceedings of the 16th International ACM Sigsoft symposium on Component-based software engineering
On flexible dynamic trait replacement for Java-like languages
Science of Computer Programming
Pure trait-based programming on the Java platform
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Reified type parameters using Java annotations
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Contracts for First-Class Classes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
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.