2004vm M. Cutumisu, C. Chan, P. Lu and D. Szafron, MCI-Java: A Modified Java Virtual Machine Approach to Multiple Code Inheritance, Usenix 3rd Virtual Machine Research and Technology Symposium (VM '04), May 2004, San Jose, USA, pp. 13-28, abstract or pdf.

Java has multiple inheritance of interfaces, but only single inheritance of code via classes. This situation results in duplicated code in Java library classes and application code. We describe a generalization to the Java language syntax and the Java Virtual Machine (JVM) to support multiple inheritance of code, called MCI-Java. Our approach places multiply-inherited code in a new language construct called an implementation, which lies between an interface and a class in the inheritance hierarchy. MCI-Java does not support multiply-inherited data, which can cause modeling and performance problems. The MCI-Java extension is implemented by making minimal changes to the Java syntax, small changes to a compiler (IBM Jikes), and modest localized changes to a JVM (SUN JDK 1.2.2). The JVM changes result in no measurable performance overhead in real applications.