Joi - Java Objects By Interface

           

    Warum Joi?

“Ich würde Klassen [-Vererbung] weglassen.” - James Gosling, Principal Scientist bei Sun Microsystems, 2001 auf die Frage, was er anders machen würde, wenn er Java noch einmal zu entwerfen hätte.

“Ziehe Objektkomposition der Vererbung vor.” - E. Gamma, R. Helm, R. Johnson, J. Vlissides, in Entwurfsmuster, Elemente wiederverwendbarer objektorientierter Software.


Nachdem Objektorientierung lange Zeit mit Vererbung gleichgesetzt wurde, hat sich mittlerweile die Erkenntnis durchgesetzt, dass Vererbung zu Code-Abhängigkeiten führt und damit im ungünstigen Fall zu Änderungsanomalien. Deshalb wird Entwicklern heute geraten, Vererbung nur sparsam oder gar nicht einzusetzen, und stattdessen Delegation zu verwenden.

Eine weitere Technik, Code-Abhängigkeiten zu vermeiden, besteht in der strikten Trennung von Schnittstelle (Interface) und Implementierung (Klasse). Wenn eine Klasse K ein Objekt, das sie verwendet, nur unter seinem Schnittstellentyp sieht, ist es wesentlich einfacher, die konkrete Objekt-Implementierung auszutauschen als wenn die Implementierungsklasse in K bekannt ist.

Beide Techniken, (1) die Vermeidung von Vererbung und (2) die Trennung von Schnittstelle und Implementierung, können in objektorientierten Sprachen wie Java, C++ und C# eingesetzt werden. Das Problem ist, dass sie zwar möglich, nicht aber erzwungen sind. Der Anspruch an eine gute Programmiersprache ist aber nicht nur, guten Programmierstil zu erlauben (ein guter Programmierstil ist mit entsprechender Eigendisziplin in den meisten Programmiersprachen möglich), sondern gutes Programmieren zu erzwingen. 


    Was ist Joi?

Joi ist eine Java-Erweiterung - eigentlich eine Java-Einschränkung - , die die strikte Trennung von Schnittstelle und Implementierung erzwingt und in der es keine Vererbung gibt. Quasi als Nebeneffekt haben die Einschränkungen in Joi einige Vereinfachungen im Vergleich zu Java zur Folge, wie zum Beispiel das Wegfallen von Zugriffsrechte-Modifizierern.

Hier finden Sie eine Beschreibung von Joi.


    Wo bekomme ich Joi und wie verwende ich es?

Wir entwickeln zur Zeit einen Joi-Plugin für Eclipse. Sobald der Plugin verfügbar ist, wird er an dieser Stelle zum  Download bereitgestellt.


    Was kann ich beitragen? - oder: Abschlussarbeitsthemen

Aufbauend auf den bisherigen Arbeiten gibt es eine Reihe interessanter Erweiterungen, die als Abschlussarbeiten bearbeitet werden können. Bei Interesse wenden Sie sich bitte an Prof. Drachenfels oder an Prof. Haase.


    Literatur

Heiko von Drachenfels, Oliver Haase, Robert Walter. Joi - eine Java-Spracherweiterung zur Reduzierung von Codeabhängigkeiten. In HTWG FORUM, Ausgabe 2008/2009. ISSN 1619-9812.

Heiko von Drachenfels. Komponentenorientierte Programmierung im Kleinen. In Informatik-Spektrum, Vol. 28, No. 2, Springer Verlag, 2005.