Implementing Traits In Java

Stc
Date: 2005 03 31

Time: 11:45

Room: CGN room C004

Speaker: Bart Groot

Title: Implementing Traits in Java

Abstract

The talk will be about my thesis project. In Object Oriented programming languages, the role of classes is overloaded. Because classes serve as units of reuse, as well as abstract data types, programmers cannot reuse code at arbitrary places in the class hierarchy. For small class hierarchies, this is not problematic, but in large hierarchies it is, resulting in duplicate code. The Traits inheritance model has been designed to cope with this problem. Traits are lightweight entities that serve as primitive units of code reuse. A trait has a name and contains methods, which may have an implementation. A class can make use a trait, by which it gains the trait's methods. Traits can also be combined, either by a class or by another trait. Common behavior can thus be placed in traits, instead of in the class, which allows a way of code reuse that is unrelated to the class hierarchy. In the past, there have been other solutions to the problem of code reuse, such as Multiple Inheritance and Mixins. However, these solutions bring along new problems, which are explained in the thesis. The traits model has been designed to avoid these problems. Until recently, traits had only been implemented for an untyped dialect of Smalltalk. The goal of this thesis project was to make traits available in Java, a widespread, and typed programming language. This has been done by extending Java using an extendible compiler framework. The resulting language is called JTL (Java Trait Language), and it improves regular Java.