MultiJava: Design Rationale, Compiler Implementation, and User Experience







Deposit Papers 


Clifton, Curtis, Millstein, Todd, Leavens, Gary T. and Chambers, Craig (2004) MultiJava: Design Rationale, Compiler Implementation, and User Experience. Technical Report 04-01, Dept. of Computer Science, Iowa State University.

Full text available as:Adobe PDF

There is a later version of this eprint available: Click here to view it.


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 paper illustrates and motivates the design of the MultiJava programming language and describes MultiJava’s 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 paper also discusses the experience of MultiJava users in a variety of application domains, including pervasive computing, graphical user interfaces, and compilers. MultiJava allows users to express desired programming idioms in a way that is declarative and supports static typechecking, in contrast to the tedious and type-unsafe workarounds required in Java. MultiJava also provides opportunities for new kinds of extensibility that are not easily available to users in Java.

Keywords:Open Classes, Open Objects, Extensible Classes, Extensible External Methods, External Methods, Multimethods, Generic Functions, Object-oriented Programming Languages, Single Dispatch, Multiple Dispatch, Encapsulation, Modularity, Static Typechecking, Subtyping, Inheritance, Java Language, MultiJava Language, Separate Compilation
Subjects:Software: PROGRAMMING LANGUAGES: Language Classifications
Software: PROGRAMMING LANGUAGES: Language Constructs and Features (E.2)
ID code:00000326
Deposited by:Curtis Clifton on 22 January 2004

Available Versions of This Paper

Contact site administrator at: