2 Realizing software components

A large number of component models partly or fully conform to the definitions of Chapter 1. Some are specific to a certain domain, while others are a more generic nature. Domain-specific component models include plug-ins for software applications (such as web browsers, photo manipulation software and audio players), as well as components running in application servers (for instance, generating personalized web pages on-demand with the aid of a database server). This thesis is mainly concerned with attempts at building component models that are not limited to any one domain.

This chapter serves the dual purposes of tracing the evolution of component models, and in so doing, introduces many of the concepts that enable software to be usable as components. The large number of component models with differing goals and terminology makes this an imprecise task.

Literary criticism cautions that there is no final reading of a text. Following this, and considering component technology in all its forms as the text, no one interpretation can be seen to represent the objective “truth.” Yet, this chapter attempts to categorize component models into three somewhat arbitrary generations. The first-generation component models are proprietary, whereas the second-generation component models are standards-based. Both target native code. The third-generation component models discussed here target virtual machines.