Some Patterns of Component and Language Integration.
Uwe Zdun · 2004
Integration is an important concern in many software systems. In this paper, we present a number of patterns that are used to improve the integration of a system with components or code that is written in different languages than the system itself. Component integration is necessary when (foreign) components should be used within a system. The challenge of integrating components into a system is that heterogeneous kinds of components exist, perhaps without distinct interfaces or other component boundaries. The task of the component integration code is to provide suitable, stable invocation interfaces and to compose the components with the system. Sometimes, however, invocation and composition of components is not enough, but a deeper language integration is required. Examples of what might be need are automatic type conversions between languages, preserving the destruction order of the other language, automatic forwarding of invocations into the other language, and runtime integration of foreign language components. The patterns, presented in this paper, are successful solutions in these areas. Each of these patterns plays an important role in different integration architectures. We will give examples from the areas of distributed systems, reengineering projects, scripting languages, and aspect-oriented programming systems. There are many others fields where the patterns are used as well.