The main difference between a component and an object is that, a component is meant to be a runtime entity, whereas an object is an instance of a class. Objects are usually not thread-secure, because the designer knows (or thinks he
knows) how the objects are going to be used. In a component context, he cannot be sure about that, and therefore the
components have to be secured. To build complex units, objects can also use inheritance, whereas when components
build complex units, they are limited to composition. In other words, a developer connects several components to make a
super component. Components are deployed independently, and it is impossible to predict how the component is going to
be used. As a result, concerns about dependencies between components, call backs, components using each other - but
belonging to different threads, safety and security, and so on are much more important than they are in plain
object-oriented modeling or design