A component is a reusable software building block; a pre-built piece of encapsulated application code that can be combined with other components and with handwritten code to produce a custom-built application rapidly.
An application developer can make use of a component without requiring access to its source code. Components can be customized to suit the specific requirements of an application through a set of external property values. For example, a button component has a property that specifies the caption that should appear on the button. An account management component has a property that specifies the location of the account database.
Components execute within a construct called a container, which (among other things) provides an operating system process in which to execute the component.
The component model defines the interfaces by which the component interacts with its container and with other components. The developer of a component may code it using a variety of internal methods and properties but, to ensure that it can be used with other components, he or she must implement the interfaces defined in the component model. These interfaces also allow components to be loaded into rapid application development (RAD) tools, such as WebSphere Studio Application Developer.