archives

MultiJava: Modular Symmetric Multiple Dispatch and Extensible Classes for Java


Home 

About 

Browse 

Search 

Register 

Subscriptions 

Deposit Papers 

Help
    

Clifton, Curtis, Leavens, Gary T., Chambers, Craig and Millstein, Todd (2000) MultiJava: Modular Symmetric Multiple Dispatch and Extensible Classes for Java. Technical Report TR00-06, Department of Computer Science, Iowa State University.

Full text available as:Postscript
Adobe PDF

Abstract

MultiJava: Modular Symmetric Multiple Dispatch
and Extensible Classes for Java
by
Curtis Clifton, Gary T. Leavens, Craig Chambers, and Todd Millstein
Abstract
Multiple dispatch offers several well-known advantages over the single
dispatching of conventional object-oriented languages, including a
simple solution to the "binary method" problem and cleaner
implementations of the "strategy" and similar design patterns.
Extensible classes allow one to extend the set of methods that an
existing class supports without editing that class or client
code. This provides, among other idioms, a simple implementation of
the "visitor" design pattern.  We present MultiJava, a
backward-compatible extension to Java supporting symmetric multiple
dispatch and extensible classes.  We adapt previous theoretical work
to allow MultiJava classes to be statically typechecked modularly and
safely, ruling out any link-time or run-time type errors.  We also
present a novel compilation scheme that operates modularly and incurs
performance overhead only where multiple dispatching or extensible
classes are actually used.
Keywords: Multimethods, generic functions, object-oriented programming
languages, single dispatch, multiple dispatch, encapsulation,
modularity, static typechecking, subtyping, inheritance, open objects,
extensible classes, external methods, Java language, MultiJava
language, separate compilation.
1999 CR Categories:
D.1.5 [Programming Techniques] Object-oriented programming;
D.3.2 [Programming Languages] Language Classifications ---
object-oriented languages;
D.3.3 [Programming Languages] Language Constructs and Features ---
abstract data types, classes and objects,
control structures, inheritance, modules, packages, patterns,
procedures, functions, and subroutines;
D.3.4 [Programming Languages] Processors --- compilers;
D.3.m [Programming Languages] Miscellaneous ---
multimethods, generic functions.
Copyright (c) 2000 by Curtis Clifton, Gary T. Leavens,
Craig Chambers, and Todd Millstein

Subjects:All uncategorized technical reports
ID code:00000214
Deposited by:Staff Account on 05 June 2000



Contact site administrator at: ssg@cs.iastate.edu