Component technology extends the benefits of scripting systems and object-oriented design to support reuse and interoperability of component software, transparent of language and location . A component is a software object that implements certain functionality and has a well-defined interface that conforms to a component architecture defining rules for how components link and work together. The term component framework is used to designate a specific component architecture implementation. Component technology offers many advantages to scientific computing since it allows domain-level knowledge to be encapsulated in component building blocks that can easily, hopefully efficiently, be used in application development, removed from concerns of how the component was developed or where it resides. As a result, scientists can focus their attention to overall application design and integration.
Unfortunately, the three most widely-used component standards (CORBA , COM/DCOM , Java Beans ) are ill-suited to handle high performance scientific computing due to a lack of support for efficient parallel communication, insufficient scientific data abstractions (e.g., complex numbers), and/or limited language interoperability . Furthermore, often the software does not run on the systems scientists use, or simply run too slow for their applications.