Relaxed MultiJava: Balancing Extensibility and Modular
Typechecking
Conference on Object-Oriented
Programming, Systems, Languages, and Applications
(OOPSLA 2003), Anaheim,
California, October 26-30, 2003.
Todd Millstein, Mark Reay, and Craig Chambers
We present the rationale, design, and implementation of Relaxed
MultiJava (RMJ), a backward-compatible extension of Java that allows
programmers to add new methods to existing classes and to write
multimethods. Previous languages supporting these forms of
extensibility either restrict their usage to a limited set of
programming idioms that can be modularly typechecked (and modularly
compiled) or simply forego modular typechecking altogether. In
contrast, RMJ supports the new language features in a virtually
unrestricted form while still providing mostly-modular static
typechecking and fully-modular compilation. In some cases, the RMJ
compiler will warn that the potential for a type error exists, but it
will still complete compilation. In those cases, a custom class loader
transparently performs load-time checking to verify that the potential
error is never realized. RMJ's compiler and custom loader cooperate to
keep load-time checking costs low. We report on qualitative and
quantitative experience with our implementation of RMJ.
[Postscript
| PDF]
Cecil/Vortex
Project