Parametric Polymorphism for Software Component Architectures
San Diego Room
Tuesday, 16:30, 30 minutes
Cosmin Oancea, University of Western Ontario
Stephen Watt, University of Western Ontarion
Parametric polymorphism has become a common feature of mainstream programming languages, but software component architectures have lagged behind and do not support this feature. We examine the problem of providing parametric polymorphism in this setting.
The details of generics, templates or functors, as they are variously called, differ significantly in different programming languages. We have investigated how to resolve different binding times and parametric polymorphism semantics in a range of representative programming languages, and have identified a common ground that can be suitably mapped to different language bindings. We present a generic component architecture extension that provides support for parameterized components, and can be easily adapted to work on top of various software component architectures in use today (e.g., CORBA, JNI, DCOM). We have implemented and tested our extension on top of CORBA.
We present Generic Interface Description Language (GIDL), an extension to CORBA-IDL, supporting generic types, and our language bindings for C++, Java, and Aldor. We describe our implementation of GIDL, consisting of a GIDL to IDL compiler and tools for generating linkage code under the language bindings. Furthemore, we describe how this architecture can be used to expose C++'s STL and Aldor's BasicMath libraries to a multi-language environment, and discuss our mappings in the context of automatic library interface generation.
Using GIDL, component-based applications can enjoy the accepted benefits of generic programming: provide clearer and more precise specifications, eliminating ambiguities in the object interface definition, and ultimately exhibit a greater degree of component re-use.
KEYWORDS: Parametric polymorphism, generics, software component architecture, multi-language programming, interface definition languages