Direkt zum Inhalt | Direkt zur Navigation

Eingang zum Volltext

Lizenz

Bitte beziehen Sie sich beim Zitieren dieses Dokumentes immer auf folgende
URN: urn:nbn:de:bsz:25-opus-76785
URL: http://www.freidok.uni-freiburg.de/volltexte/7678/


Wehr, Stefan

JavaGI: a language with generalized interfaces

JavaGI: eine Sprache mit generalisierten Interfaces

Dokument1.pdf (2.544 KB) (Printversion) (md5sum: 9ce066952cd6b419e04f9c7c048c8756)
Dokument2.pdf (4.001 KB) (Onlineversion) (md5sum: 72e1ca6511c440f404b865fd03c3a43e)

Kurzfassung in Englisch

Component-based software development in statically typed, object-oriented programming languages has proven successful in reducing development costs and raising software quality. However, this form of software development still poses many challenges and thus requires better support on the programming language level.

The language JavaGI, a conservative extension of Java 1.5, offers generalized interfaces as an effective improvement. Generalized interfaces subsume retroactive and type-conditional interface implementations, binary methods, symmetric multiple dispatch, interfaces over families of types, and static interface methods. These features allow non-invasive and in-place object adaptation, thus enabling solutions to several software extension, adaptation, and integration problems with components in binary form. Further, they make certain coding patterns redundant and increase the expressiveness of the type system. The generalized interface mechanism offers a unifying conceptual view on these seemingly disparate concerns, for which previously unrelated extensions have been suggested.

This dissertation introduces the language JavaGI by explaining its features and motivating its design. Technical contributions of the dissertation are the formalization of a core calculus for JavaGI and a proof of type soundness, determinacy of evaluation, and decidability of subtyping and typechecking. The formalization also includes a type- and behavior-preserving translation from a significant subset of the core calculus to a slightly extended version of Featherweight Java. Moreover, the dissertation explores two extensions of the type system, which both have undecidable subtyping relations but for which several decidable fragments exist. The undecidability result for one of the extensions sheds light on the decidability of subtyping in Scala and of subtyping with Java wildcards.

On the practical side, the dissertation presents the implementation of a JavaGI compiler and an accompanying run-time system. The compiler is based on an industrial-strength Java compiler and offers mostly modular typechecking but fully modular code generation. It defers certain well-formedness checks until load time to allow for greater flexibility and to enable full support for dynamic loading. Benchmarks show that the code generated by the compiler offers good performance. Several case studies demonstrate the practical utility of the language and its implementation. The implementation also includes a JavaGI plugin for the Eclipse IDE.


Kurzfassung in Deutsch

Komponentenbasierte Softwareentwicklung in objektorientierten, statisch getypten Programmiersprachen hat sich als erfolgreich erwiesen, um Entwicklungskosten zu senken und die Qualität von Software zu erhöhen. Dennoch ergeben sich bei dieser Art der Softwareentwicklung noch immer viele Herausforderung, so dass eine bessere Unterstützung auf der Programmiersprachenebene gewünscht ist.

Die Sprache JavaGI, eine konservative Erweiterung von Java 1.5, bietet generalisierte Interfaces als effektive Verbesserung an. Generalisierte Interfaces umfassen retroaktive und typbedingte Interface-Implementierungen, binäre Methoden, symmetrischen Mehrfachdispatch, Interfaces über Typfamilien und statische Interface-Methoden. Diese Eigenschaften erlauben nichtinvasive und direkte Objektanpassung und ermöglichen damit Problemlösungen im Bereich der Erweiterung, Anpassung und Integration von Software mit Komponenten in binärer Form. Außerdem subsummieren die Eigenschaften verschiedene Programmiermuster und erhöhen die Ausdrucksfähigkeit des Typsystems. Der Generalisierungsmechanismus für Interfaces bietet einen einheitlichen Rahmen für diese scheinbar ungleichen Belange, welche in der Vergangenheit mit verschiedenen, nicht miteinander in Beziehung stehenden Erweiterungen angegangen wurden.

Die vorliegende Dissertation präsentiert die Sprache JavaGI, erklärt ihre Eigenschaften und motiviert das Sprachdesign. Technische Beiträge der Arbeit sind ein Kernkalkül für JavaGI und ein Beweis der Typkorrektheit, Eindeutigkeit der Auswertung und Entscheidbarkeit der Subtyprelation sowie der Typüberprüfung. Die Formalisierung beinhaltet auch eine typ- und verhaltenserhaltende Übersetzung einer signifikanten Teilmenge des Kalküls in eine leicht erweiterte Fassung von Featherweight Java. Desweiteren werden zwei Erweiterungen des Typsystems untersucht. Die Subtyprelation ist für beide Erweiterungen unentscheidbar, allerdings existieren mehrere entscheidbare Fragmente. Das Unentscheidbarkeitsresultat für eine der Erweiterungen wirft neues Licht auf die Frage der Entscheidbarkeit der Subtyprelationen von Scala und von Java mit Wildcards.

Auf der praktischen Seite präsentiert die Dissertation die Implementierung eines Compilers und eines entsprechenden Laufzeitsystems für JavaGI. Der Compiler basiert auf einem industriell eingesetzten Java Compiler und unterstützt eine größtenteils modulare Typüberprüfung sowie vollständig modulare Codeerzeugung. Bestimmte Wohlgeformtheitsüberprüfungen werden bis zur Linkzeit aufgeschoben, um größere Flexibilität und volle Unterstützung für dynamisches Laden bieten zu können. Benchmarks zeigen, dass der Compiler Code mit guter Performanz erzeugt. Mehrere Fallstudien demonstrieren die praktische Anwendbarkeit der Sprache und ihrer Implementierung. Die Implementierung beinhaltet auch ein JavaGI Plugin für die Entwicklungsumgebung Eclipse.


SWD-Schlagwörter: Informatik , Programmiersprache , Objektorientierte Programmiersprache , Java , Typsystem , Schnittstelle , HASKELL
Freie Schlagwörter (deutsch): Retroaktive Interface-Implementierung , Multimethode , Externe Methode , Typklasse
Freie Schlagwörter (englisch): Programming Language , Retroactive Interface Implementation , External Method , Multimethod , Type Class
Institut: Institut für Informatik
Fakultät: Technische Fakultät (bisher: Fak. f. Angew. Wiss.)
DDC-Sachgruppe: Informatik
Dokumentart: Dissertation
Erstgutachter: Thiemann, Peter (Prof. Dr.)
Sprache: Englisch
Tag der mündlichen Prüfung: 09.07.2010
Erstellungsjahr: 2010
Publikationsdatum: 18.08.2010
Indexliste