The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
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
Modular object-oriented programming with units and mixins
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Component Software: Beyond Object-Oriented Programming
Component Software: Beyond Object-Oriented Programming
Proceedings of the 24th International Conference on Software Engineering
Mixin Modules in a Call-by-Value Setting
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
A Statically Safe Alternative to Virtual Types
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
A Basic Model of Typed Components
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
True Modules for Java-like Languages
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Type-Safe Prototype-Based Component Evolution
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Architectural Reasoning in ArchJava
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Journal of Functional Programming
Polymorphic bytecode: compositional compilation for Java-like languages
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Calculus of Components with Dynamic Type-Checking
Electronic Notes in Theoretical Computer Science (ENTCS)
MetaFJig: a meta-circular composition language for Java-like classes
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
DeepFJig: modular composition of nested classes
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Backpack: retrofitting Haskell with interfaces
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
We define a framework of components based on Java-like languages, where components are binary mixin modules. Basic components can be obtained from a collection of classes by compiling such classes in isolation; for allowing that, requirements in the form of type constraints are associated with each class. Requirements are specified by the user who, however, is assisted by the compiler which can generate missing constraints essential to guarantee type safety. Basic components can be composed together by using a set of expressive typed operators; thanks to soundness results, such a composition is always type safe. The framework is designed as a separate layer which can be instantiated on top of any Java-like language; a prototype implementation is available for a small Java subset. Besides safety, the approach achieves great flexibility in reusing components for two reasons: (1) type constraints generated for a single component exactly capture all possible contexts where it can be safely used; (2) composition of components is not limited to conventional linking, but is achieved by means of a set of powerful operators typical of mixin modules.