ACM Home Page
Please provide us with feedback. Feedback
MultiJava: Design rationale, compiler implementation, and applications
Full text PdfPdf (1.14 MB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 28 ,  Issue 3  (May 2006) table of contents
Pages: 517 - 575  
Year of Publication: 2006
ISSN:0164-0925
Authors
Curtis Clifton  Rose-Hulman Institute of Technology, Terre Haute, IN
Todd Millstein  University of California, Los Angeles, CA
Gary T. Leavens  Iowa State University, Ames, IA
Craig Chambers  University of Washington, Seattle, WA
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 12,   Downloads (12 Months): 105,   Citation Count: 12
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1133651.1133655
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
 
3
 
4
 
5
AspectJ Team. 2004. The AspectJ programming guide. Available online from http://eclipse.org/aspectj.
 
6
Baumgartner, G., Jansche, M., and Läufer, K. 2002. Half & Half: Multiple dispatch and retroactive abstraction for Java. Tech. rep. OSU-CISRC-5/01-TR08. Department of Computer Science, The Ohio State University. Columbus, OH.
 
7
Bonniot, D. 2003. Using kinds to type partially-polymorphic methods. In Electronic Notes in Theoretical Computer Science, G. Barthe and P. Thiemann, Eds. Vol. 75. Elsevier, New York, NY.
 
8
Bonniot, D. and Keller, B. 2003. The Nice user's manual. Available online at http://nice.sourceforge.net.
9
10
11
 
12
Bridges, S., Figueroa, M., Hsu, D., and Diorio, C. 2003. Field-programmable learning arrays. In Advances in Neural Information Processing Systems 15. MIT Press, Cambridge, MA.
 
13
 
14
15
 
16
 
17
 
18
 
19
Chambers, C. 1997. The Cecil language specification and rationale: Version 2.1. Available online from http://www.cs.washington.edu/research/projects/cecil/www/pubs/cecil-spec.html.
 
20
Chambers, C. 1998. Towards Diesel, a next-generation OO language after Cecil. Invited talk. In Proceedings of the Fifth Workshop of Foundations of Object-Oriented Languages (San Diego, CA).
21
22
 
23
Clifton, C. 2001. MultiJava: Design, implementation, and evaluation of a Java-compatible language supporting modular open classes and symmetric multiple dispatch. Tech. Rep. 01-10. Department of Computer Science, Iowa State University, Ames, IA. The author's masters thesis.
24
 
25
 
26
27
 
28
Dutchyn, C., Szafron, D., Bromling, S., and Holst, W. 2001. Multi-dispatch in the Java virtual machine: Design and implementation. In Sixth Conference on Object-Oriented Technologies and Systems (COOTS). USENIX, Berkeley, CA.
 
29
30
 
31
Feinberg, N., Keene, S. E., Mathews, R. O., and Withington., P. T. 1997. The Dylan Programming Book. Addison-Wesley Longman, Reading, MA.
32
33
34
 
35
Forax, R., Duris, E., and Roussel, G. 2000. Java multi-method framework. In Proceedings of the International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '00), Sydney, Australia. IEEE Computer Society Press, Los Alamitos, CA.
 
36
 
37
 
38
Garrigue, J. 2000. Code reuse through polymorphic variants. In Proceedings of the Workshop on Foundations of Software Engineering, Sassaguri, Japan. Available online from http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/papers/fose2000.html.
 
39
 
40
 
41
Grimm, R., Davis, J., Lemar, E., MacBeth, A., Swanson, S., Gribble, S., Anderson, T., Bershad, B., Borriello, G., and Wetherall, D. 2001. Programming for pervasive computing environments. Tech. Rep. UW-CSE-01-06-01. Department of Computer Science and Engineering, University of Washington, Seattle, WA.
 
42
Grothoff, C. 2003. Walkabout revisited: The Runabout. In ECOOP 2003---Object-Oriented Programming, 17th European Conference, Darmstadt, Germany, Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science, vol. 2743. Springer-Verlag, New York, NY, 103--125.
43
 
44
45
 
46
 
47
 
48
Kiczales, G., Lamping, J., Menhdhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In ECOOP '97---Object-Oriented Programming 11th European Conference, Jyväskylä, Finland, Proceedings, M. Akşit and S. Matsuoka, Eds. Lecture Notes in Computer Science, vol. 1241. Springer-Verlag, New York, NY, 220--242.
 
49
Kopi 2004. Kopi project home page. Go online to http://www.dms.at/kopi.
 
50
51
52
53
 
54
55
56
57
 
58
59
60
 
61
Millstein, T. and Chambers, C. 2002. Modular statically typed multimethods. Inform. Computat. 175, 1 (May), 76--118.
62
 
63
 
64
 
65
Nystrom, N., Clarkson, M. R., and Myers, A. C. 2003. Polyglot: An extensible compiler framework for java. In Compiler Construction: 12'th International Conference, CC 2003. Vol. 2622. Springer-Verlag, New York, NY, 138--152.
 
66
Odersky, M., Cremet, V., Röckl, C., and Zenger, M. 2003. A nominal theory of objects with dependent types. In ECOOP 2003---Object-Oriented Programming, 17th European Conference, Darmstadt, Germany, Proceedings, L. Cardelli, Ed. Lecture Notes in Computer Science, vol. 2743. Springer-Verlag, New York, NY, 201--224.
67
68
 
69
 
70
71
 
72
 
73
 
74
Rain 2004. Rain home page. Go online to http://seattleweb.intel_research.net/projects/rain.
 
75
Reynolds, J. C. 1975. User-defined types and procedural data structures as complementary approaches to type abstraction. In New Directions in Algorithmic Languages, S. A. Schuman, Ed. INRIA, Rocquencourt, France, 157--168.
 
76
 
77
 
78
 
79
80
 
81
Torgersen, M. 2004. The expression problem revisited: Four new solutions using generics. In ECOOP 2004---Object-Oriented Programming, 18th European Conference, Oslo, Norway, Proceedings, M. Odersky, Ed. Lecture Notes in Computer Science, vol. 3086. Springer-Verlag, New York, NY, 123--143.
 
82
 
83
Vlissides, J. 1999. Visitor in frameworks. C++ Rep. 11, 10 (Nov./Dec.), 40--46.
84
 
85
Zenger, M. and Odersky, M. 2005. Independently extensible solutions to the expression problem. In Proceedings of the 12th International Workshop on Foundations of Object-Oriented Languages (FOOL 12, Long Beach, CA). ACM Press, New York, NY.

CITED BY  12

Collaborative Colleagues:
Curtis Clifton: colleagues
Todd Millstein: colleagues
Gary T. Leavens: colleagues
Craig Chambers: colleagues