MultiJava: Design Rationale, Compiler Implementation, and Applications

dc.contributor.author Clifton, Curtis
dc.contributor.author Millstein, Todd
dc.contributor.author Leavens, Gary
dc.contributor.author Chambers, Craig
dc.contributor.department Computer Science
dc.date 2018-02-14T00:53:08.000
dc.date.accessioned 2020-06-30T01:56:43Z
dc.date.available 2020-06-30T01:56:43Z
dc.date.issued 2004-12-01
dc.description.abstract <p>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 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 paper 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.</p>
dc.identifier archive/lib.dr.iastate.edu/cs_techreports/326/
dc.identifier.articleid 1309
dc.identifier.contextkey 5539905
dc.identifier.s3bucket isulib-bepress-aws-west
dc.identifier.submissionpath cs_techreports/326
dc.identifier.uri https://dr.lib.iastate.edu/handle/20.500.12876/20156
dc.source.bitstream archive/lib.dr.iastate.edu/cs_techreports/326/paper.pdf|||Fri Jan 14 23:36:17 UTC 2022
dc.subject.disciplines Programming Languages and Compilers
dc.subject.keywords Open Classes
dc.subject.keywords Open Objects
dc.subject.keywords Extensible Classes
dc.subject.keywords Extensible External Methods
dc.subject.keywords External Methods
dc.subject.keywords Multimethods
dc.subject.keywords Method Families
dc.subject.keywords Generic Functions
dc.subject.keywords % so people searching on this term can find it Object-oriented Programming Languages
dc.subject.keywords Single Dispatch
dc.subject.keywords Multiple Dispatch
dc.subject.keywords Encapsulation
dc.subject.keywords Modularity
dc.subject.keywords Static Typechecking
dc.subject.keywords Subtyping
dc.subject.keywords Inheritance
dc.subject.keywords Java Language
dc.subject.keywords MultiJava Language
dc.subject.keywords Separate Compilation
dc.subject.keywords Expression Problem
dc.subject.keywords Binary Method Problem
dc.subject.keywords Augmenting Method Problem
dc.title MultiJava: Design Rationale, Compiler Implementation, and Applications
dc.type article
dc.type.genre article
dspace.entity.type Publication
relation.isOrgUnitOfPublication f7be4eb9-d1d0-4081-859b-b15cee251456
File
Original bundle
Now showing 1 - 1 of 1
Name:
paper.pdf
Size:
439.8 KB
Format:
Adobe Portable Document Format
Description:
Collections