Posts Tagged ‘distributed objects’
What Are Distributed Objects?
Let’s make it clear about what an object is. An object is an entity that encapsulates some private state information or data, a set of associated operations or procedures that manipulate the data, and possibly a thread of control so that collectively they can be treated as a single unit.
This combination of state and logic imbues objects with identity. Apart from the singleton abstraction, the state in different objects may be different and therefore calling an operation on one object to manipulate its state may have a different outcome than calling the same operation on a different object of the same type. As a result, users of objects need to locate the object and keep track of objects and their current state in order to make repeated invocations to them. Because objects are instances, they also have a lifetime, that is, they are created, used and destroyed.
Object instances are instantiations of a particular type or class and instances of the same type share their class. When combined with the notion of inheritance, this leads to class hierarchies. Classes that inherit from others have dependencies on these and can only be understood in the context of their parent class.
Object-oriented programming languages such as Java leverage the encapsulation of data and behaviour, allowing a programmer to make one-grained decisions about access to data maintained by an object and the view presented to the outside world of that data. Java also defines a kind of global taxonomy for all objects that can be created within the bounds of the language, leading to a well-defined structured graph of inheritance and dependencies.
The 1990s saw a general trend away from mainframe computers acting as single intelligent processors and connected to by many dumb clients, towards a distributed network of processing, based on client/server technology. In order to facilitate more decentralized processing of multiple services, and multiple consumers, shared interfaces to software components needed to be defined. Drawing on the benefits apparent in object-oriented programming languages, in particular the encapsulation of data and logic, and the ability to break down large tasks into smaller, reusable components with well-defined behaviours, the transferral of object orientation to distributed environments was considered an appropriate approach.
A number of systems emerged that allow applications to make use of the strong data typing and structured relationships between components that object orientation encourages, while at the same time being able to communicate across a network. Examples include DCOM, OLE, CORBA and Jini.