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.

Downloads

A release of the J& compiler is planned for October 2006.

Papers

Support

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.