JavaGI in the Battlefield: Practical Experience with Generalized Interfaces

Stefan Wehr and Peter Thiemann

In Proceedings of the 8th International Conference on Generative Programming and Component Engineering (GPCE 2009). Denver, Colorado, USA. ACM, 2009.

Abstract

Generalized interfaces are an extension of the interface concept found in object-oriented languages such as Java or C#. The extension is inspired by Haskell's type classes. It supports retroactive and type-conditional interface implementations, binary methods, symmetric multimethods, interfaces over families of types, and static interface methods.

This article reports practical experience with generalized interfaces as implemented in the JavaGI language. Several real-world case studies demonstrate how generalized interfaces provide solutions to extension and integration problems with components in binary form, how they make certain design patterns redundant, and how they eliminate various run-time errors. In each case study, the use of JavaGI results in elegant and highly readable code.

Furthermore, the article discusses the implementation of a compiler and a run-time system for JavaGI. Benchmarks show that our implementation offers acceptable performance.

Bibtex

@INPROCEEDINGS{WehrThiemann2009,
  author = {Stefan Wehr and Peter Thiemann},
  title = {{JavaGI} in the Battlefield: Practical Experience with Generalized Interfaces},
  booktitle = {Proceedings of the 8th International Conference on Generative Programming and Component Engineering (GPCE 2009)},
  year = 2009,
  address = {Denver, Colorado, USA},
  publisher = {ACM},
  publisher_address = {New York, NY, USA}
}

Resources

  • Preprint: .pdf (ŠACM 2009. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution.)
  • An extended version appeared as TR 247 of the Department of Computer Science, University of Freiburg.
  • Talk
  • Formalization
  • Acceptance rate: 30.6 % (62 papers submitted, 19 accepted)
  • Project homepage
Last modified: 2015-06-10T22:24:05+02:00