2.2 Second-generation component models

The component models introduced after the first generation are far more ambitious, and encompass far more functionality. No longer tied to a single platform or programming language, they are often based on published specifications or even formal standards. They make it possible to use services running in other processes and on other computers, and include standards for such disparate things as dynamic dispatch, memory management, distribution formats and naming. They target the enterprise in addition to the desktop. They abstract away notions of where a component is executing, and tackle issues ranging from concurrency to working with database transactions. Their ambition, compounded by the fact that they are layered on top of traditional programming languages and target a wide range of machines, makes them significantly more complex than the comparatively simple first-generation component models. As they target platforms with no object models of their own, they standardize objects in addition to components. Microsoft’s Component Object Model (COM) and the Object Management Group’s Common Object Request Broker Architecture (OMG’s CORBA) are prominent members of this generation.