MultiJava: modular open classes and symmetric multiple dispatch for Java
By Curtis Clifton, Gary T. Leavens, Craig Chambers, Todd D. Millstein. Conference on Object-Oriented Programming Systems, Languages, and Applications, 2000
356 citations recorded by the source corpus.
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.
Subfields: Artificial Intelligence, Computational Theory and Mathematics
View Paper: https://www.semanticscholar.org/paper/e2e12a5b9715c99da86bc27ec5378d66dc3ba32f
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Artificial Intelligence
- Mira Mezini
- Don S. Batory
- Michael R. Clarkson
- A. Myers
- Klaus Ostermann
- Nathaniel Nystrom
- Christian Kästner
- Sven Apel
In Computational Theory and Mathematics
Citations in the corpus
- Polyglot: An Extensible Compiler Framework for Java (2003, background): “Open classes [6] would probably have provided a cleaner solution to the extensibility problem, particularly in conjunction with multimethods.”
- Scaling step-wise refinement (2003, methodology): “Our concept of code refinement is similar to the open class concept in MultiJava [ 16 ] where separate compilation and type checking of class extensions (which could correspond to AHEAD features) are correctly handled, but Multi-Java does not support method refinement or the composition of selected ”
- Conquering aspects with Caesar (2003, methodology): “The mechanism of most specific wrapper is very similar to multiple dispatch in languages such as CLOS, Cecil [3], or MultiJava [4].”