A simple technique for handling multiple polymorphism
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
Static type checking of multi-methods
OOPSLA '91 Conference proceedings on Object-oriented programming systems, languages, and applications
A calculus for overloaded functions with subtyping
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Object-oriented programming: the CLOS perspective
Object-oriented programming: the CLOS perspective
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Covariance and contravariance: conflict without a cause
ACM Transactions on Programming Languages and Systems (TOPLAS)
Typechecking and modules for multimethods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theory and Practice of Object Systems - Special issue: type systems
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
The Dylan reference manual: the definitive guide to the new object-oriented dynamic language
Object-oriented programming: a unified foundation
Object-oriented programming: a unified foundation
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parasitic methods: an implementation of multi-methods for Java
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type checking higher-order polymorphic multi-methods
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pattern languages of program design 3
Pattern languages of program design 3
Multiple dispatch as dispatch on Tuples
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
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Efficient multiple and predicated dispatching
Proceedings of the 14th 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
Multi-Methods in a Statically-Typed Programming Language
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Object-Oriented Programming Versus Abstract Data Types
Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages
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
Extensible algebraic datatypes with defaults
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Incremental programming with extensible decisions
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Using mixins to build flexible widgets
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Runtime aspect weaving through metaprogramming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Maya: multiple-dispatch syntax extension in Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Proceedings of the 24th International Conference on Software Engineering
Static and dynamic structure in design patterns
Proceedings of the 24th International Conference on Software Engineering
Programming dynamically reconfigurable open systems with SALSA
ACM SIGPLAN Notices
Aspect-oriented programming with Jiazzi
Proceedings of the 2nd international conference on Aspect-oriented software development
Proceedings of the 2nd international conference on Aspect-oriented software development
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
Difference-Based Modules: A Class-Independent Module Mechanism
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Static reasoning about programs and queries
PCK50 Proceedings of the Paris C. Kanellakis memorial workshop on Principles of computing & knowledge: Paris C. Kanellakis memorial workshop on the occasion of his 50th birthday
HydroJ: object-oriented pattern matching for evolvable distributed systems
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Relaxed MultiJava: balancing extensibility and modular typechecking
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
MJ: a rational module system for Java and its applications
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
XAspects: an extensible system for domain-specific aspect languages
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
eclipse '03 Proceedings of the 2003 OOPSLA workshop on eclipse technology eXchange
Anomaly-free component adaptation with class overriding
Journal of Systems and Software
IEEE Transactions on Software Engineering
Modular typechecking for hierarchically extensible datatypes and functions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Scalable extensibility via nested inheritance
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A Reflective Implementation of Java Multi-Methods
IEEE Transactions on Software Engineering
How the design of JML accommodates both runtime assertion checking and formal verification
Science of Computer Programming - Formal methods for components and objects pragmatic aspects and applications
Reflection-based implementation of Java extensions: the double-dispatch use-case
Proceedings of the 2005 ACM symposium on Applied computing
Realization of multimethods in single dispatch object oriented languages
ACM SIGPLAN Notices
Handling the subclassing anomaly with Object Teams
ACM SIGPLAN Notices
PolyD: a flexible dispatching framework
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Using predicate fields in a highly flexible industrial control system
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software—Practice & Experience - Research Articles
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
J&: nested intersection for scalable software composition
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
Conservative aspect-orientated programming with the e language
Proceedings of the 6th international conference on Aspect-oriented software development
Making generic functions useable in Smalltalk
ACM-SE 45 Proceedings of the 45th annual southeast regional conference
Software—Practice & Experience
Multi-dispatch in the Java virtual machine: design and implementation
COOTS'01 Proceedings of the 6th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 6
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Featherweight Java with multi-methods
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
OOMatch: pattern matching as dispatch in Java
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
The JastAdd system — modular extensible compiler construction
Science of Computer Programming
A small extension to Java for class refinement
Proceedings of the 2008 ACM symposium on Applied computing
Implementing Java modeling language contracts with AspectJ
Proceedings of the 2008 ACM symposium on Applied computing
Resource management aspects for sensor network software
Proceedings of the 4th workshop on Programming languages and operating systems
Towards a DSAL for object layout in virtual machines
Proceedings of the 2008 AOSD workshop on Domain-specific aspect languages
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
DLS '08 Proceedings of the 2008 symposium on Dynamic languages
A pattern language for extensible program representation
Proceedings of the 2006 conference on Pattern languages of programs
UpgradeJ: Incremental Typechecking for Class Upgrades
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
The impact of static-dynamic coupling on remodularization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
The visitor pattern as a reusable, generic, type-safe component
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Virtual machines and intermediate languages for emerging modularization mechanisms
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Software—Practice & Experience
Expressive and modular predicate dispatch for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Predicate dispatch for aspect-oriented programming
Proceedings of the 2nd Workshop on Virtual Machines and Intermediate Languages for emerging modularization mechanisms
Matchmaking for covariant hierarchies
Proceedings of the 8th workshop on Aspects, components, and patterns for infrastructure software
Featherweight Java with dynamic and static overloading
Science of Computer Programming
Sharing classes between families
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
JavaGI in the battlefield: practical experience with generalized interfaces
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
CZ: multiple inheritance without diamonds
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Groovy package templates: supporting reuse and runtime adaption of class hierarchies
DLS '09 Proceedings of the 5th symposium on Dynamic languages
Classboxes: controlling visibility of class extensions
Computer Languages, Systems and Structures
MODELS '09 Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems
Translating Double Dispatch into Single Dispatch
Electronic Notes in Theoretical Computer Science (ENTCS)
Weaving generic programming and traversal performance
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
Design and evaluation of C++ open multi-methods
Science of Computer Programming
Patterns of component evolution
SC'07 Proceedings of the 6th international conference on Software composition
Integrating legacy systems with MDE
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Algorithms for traversal-based generic programming
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Type classes as objects and implicits
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
Mostly modular compilation of crosscutting concerns by contextual predicate dispatch
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Independently extensibile contexts
ECSA'10 Proceedings of the 4th European conference on Software architecture
Predicated generic functions: enabling context-dependent method dispatch
SC'10 Proceedings of the 9th international conference on Software composition
Model driven language engineering with kermeta
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
Modularity for the changing meaning of changing
Proceedings of the tenth international conference on Aspect-oriented software development
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Decouplink: dynamic links for Java
ECSA'11 Proceedings of the 5th European conference on Software architecture
The keyword revolution: promoting language constructs for data access to first class citizens
Proceedings of the 1st International Workshop on Free Composition
Computer Languages, Systems and Structures
Space efficient non-constant time multi-method dispatch in object oriented systems
ACM SIGSOFT Software Engineering Notes
A framework for modular linking in OO languages
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Reusable model transformations
Software and Systems Modeling (SoSyM)
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Evaluating support for features in advanced modularization technologies
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Efficient multimethods in a single dispatch language
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Feature-oriented programming with family polymorphism
Proceedings of the 3rd international workshop on Variability & Composition
Transactions on Aspect-Oriented Software Development I
SuperGlue: component programming with object-oriented signals
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Parameterized modules for classes and extensible functions
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
A pattern language for extensible program representation
Transactions on Pattern Languages of Programming I
FATES'06/RV'06 Proceedings of the First combined international conference on Formal Approaches to Software Testing and Runtime Verification
Using metadata transformations to integrate class extensions in an existing class hierarchy
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
COQ mechanization of featherweight fortress with multiple dispatch and multiple inheritance
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
A framework for the checking and refactoring of crosscutting concepts
ACM Transactions on Software Engineering and Methodology (TOSEM)
Extensibility for the masses: practical extensibility with object algebras
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
A machine model for aspect-oriented programming
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Customizing the common variability language semantics for your domain models
Proceedings of the VARiability for You Workshop: Variability Modeling Made Useful for Everyone
Using roles to model crosscutting concerns
Proceedings of the 12th annual international conference on Aspect-oriented software development
On flexible dynamic trait replacement for Java-like languages
Science of Computer Programming
Feature-Oriented programming with object algebras
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Join point interfaces for safe and flexible decoupling of aspects
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.01 |
We present MultiJava, a backward-compatible extension to Java supporting open classes and symmetric multiple dispatch. Open classes allow one to add to the set of methods that an existing class supports without creating distinct subclasses or editing existing code. Unlike the "Visitor" design pattern, open classes do not require advance planning, and open classes preserve the ability to add new subclasses modularly and safely. Multiple dispatch offers several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to some kinds of "binary method" problems. MultiJava's multiple dispatch retains Java's existing class-based encapsulation properties. We adapt previous theoretical work to allow compilation units to be statically typechecked modularly and safely, ruling out any link-time or run-time type errors. We also present a n compilation scheme that operates modularly and incurs performance overhead only where open classes or multiple dispatching are actually used.