J&: Nested Inheritance and Intersection for Java
J& (pronounced “jet”) is an extension of Java that provides type-safe scalable extensibility via nested inheritance.
Software is frequently constructed by extending or composing existing code. The aim of the J& project is to develop type-safe programming languages to more easily reuse code. Extending a large system written in a conventional language, can require either duplicating code—drastically complicating code maintenance—or writing boilerplate or glue code far larger than the code necessary to implement the new functionality. Programming languages should support scalable extensibility: the amount of code required to extend a body of code with a new feature should be proportional to the size of the feature.
Nested inheritance creates an interaction between containment and inheritance to addresses some of the limitations of ordinary class inheritance. Nested inheritance provides scalable extensibility, the ability to extend a body of code by writing new code proportional to the differences in functionality, without violating type safety.
J& is an outgrowth of our work on the Polyglot compiler framework. An earlier version of the language was known as Jx.
A release of the J& compiler is planned for October 2006.
- Scalable Extensibility via Nested Inheritance, Nathaniel Nystrom, Stephen Chong, Andrew C. Myers, OOPSLA 2004.
- J&: Software Composition with Nested Intersection, Nathaniel Nystrom, Xin Qi, Andrew C. Myers, OOPSLA 2006.
The development of J& has been supported by a number of funding sources, including DARPA Contract F30602-99-1-0533, monitored by USAF Rome Laboratory, ONR Grant N00014-01-1-0968, NSF Grants CNS-0208642, CNS-0430161, and CCF-0133302, an Alfred P. Sloan Research Fellowship, and an Intel Research Ph.D. Fellowship.