MultiJava: Design Rationale,
Compiler Implementation, and Applications
ACM Transactions on Programming Languages and Systems (TOPLAS),
Vol. 23, No. 3, pp. 517-575, May 2006.
Curtis Clifton, Todd Millstein, Gary T. Leavens, and Craig Chambers
MultiJava is a conservative extension of the Java programming language
that adds symmetric multiple dispatch and open classes. Among other
benefits, multiple dispatch provides a solution to the binary method
problem. Open classes provide a solution to the extensibility problem
of object-oriented programming languages, allowing the modular
addition of both new types and new operations to an existing type
hierarchy. This article illustrates and motivates the design of
MultiJava and describes its modular static typechecking and modular
compilation strategies. Although MultiJava extends Java, the key
ideas of the language design are applicable to other object-oriented
languages, such as C# and C++, and even, with some modifications, to
functional languages such as ML.
This article also discusses the variety of application domains in
which MultiJava has been successfully used by others, including
pervasive computing, graphical user interfaces, and compilers.
A PDF version of the paper is available here.