MultiJava
Authors:
Open Access
- 1 May 2006
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 28 (3) , 517-575
Abstract
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. 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 in Java.Keywords
This publication has 51 references indexed in Scilit:
- Labscape: a smart environment for the cell biology laboratoryIEEE Pervasive Computing, 2002
- A Formal Framework for Java Separate CompilationLecture Notes in Computer Science, 2002
- Parasitic methods1997
- Object-Oriented Programming A Unified Foundation1997
- Covariance and contravarianceACM Transactions on Programming Languages and Systems, 1995
- A Calculus for Overloaded Functions with SubtypingInformation and Computation, 1995
- On Binary MethodsTheory and Practice of Object Systems, 1995
- Static type checking of multi-methods1991
- Mixin-based inheritance1990
- A semantics of multiple inheritanceInformation and Computation, 1988