MultiJava: Modular Symmetric Multiple Dispatch and Extensible Classes for Java

Saved in:
Bibliographic Details
Title: MultiJava: Modular Symmetric Multiple Dispatch and Extensible Classes for Java
Authors: Clifton, Curtis, Leavens, Gary, Chambers, Craig, Millstein, Todd
Contributors: Computer Science
Source: archive/lib.dr.iastate.edu/cs_techreports/56/TR00_06.pdf|||Sat Jan 15 00:56:33 UTC 2022
Publication Year: 2000
Collection: Digital Repository @ Iowa State University
Subject Terms: Programming Languages and Compilers, 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
Description: 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. ; Copyright © Curtis Clifton, Gary T. Leavens, Craig Chambers, and Todd Millstein, 2000
Document Type: article in journal/newspaper
File Description: application/pdf
Language: unknown
Relation: archive/lib.dr.iastate.edu/cs_techreports/56/; 1050; 5282208; cs_techreports/56; https://dr.lib.iastate.edu/handle/20.500.12876/20242
Availability: https://dr.lib.iastate.edu/handle/20.500.12876/20242
https://hdl.handle.net/20.500.12876/20242
Accession Number: edsbas.957AB34E
Database: BASE
Description
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. ; Copyright © Curtis Clifton, Gary T. Leavens, Craig Chambers, and Todd Millstein, 2000