Andrew C. Myers, Joseph A. Bank, Barbara Liskov
Laboratory for Computer Science
Massachusetts Institute of Technology
545 Technology Square, Cambridge, MA 02139
{andru, jbank, liskov}@lcs.mit.edu
Java offers the real possibility that most programs can be written in a type-safe language. However, for Java to be broadly useful, it needs additional expressive power. This paper extends Java in one area where more power is needed: support for parametric polymorphism, which allows the definition and implementation of generic abstractions. We discuss both the rationale for our design decisions and the impact of the extension on other parts of Java, including arrays and the class library. We also describe optional extensions to the Java virtual machine to allow parameterized bytecodes, and how to verify them efficiently. We have extended the Java bytecode interpreter to provide good performance for parameterized code in both execution speed and code size, without slowing down non-parameterized code.
This research was supported in part by the Advanced Research Projects
Agency of the Department of Defense, monitored by the Office of Naval
Research under contract N00014-91-J-4136, and in part by a grant from
Sun Microsystems.
Appears in ACM POPL '97, Paris, France, January 1997.
Copyright ©1997 by the Association for Computing Machinery,
Inc. Permission to make digital or hard copies of part or all of this
work for personal or classroom use is granted without fee provided that
copies are not made or distributed for profit or commercial advantage
and that new copies bear this notice and the full citation on the first
page. Copyrights for components of this work owned by others than ACM
must be honored. Abstracting with credit is permitted. To copy
otherwise, to republish, to post on servers, or to redistribute to
lists, requires prior specific permission and/or a fee. Request
permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or
"permissions@acm.org".
Andrew C. Myers, Joseph A. Bank, Barbara Liskov