without waiting for them to complete. This maps better to parallel programming on a Beowulf, because you can tell processors to perform arbitrary work without blocking, and interprocessor coordination can be relegated to synchronous calls.
5.5.2 Distributed Objects: CORBA and Java RMI
As the software development advantages of object oriented programming languages became more popularly evident during the late '80s and early '90s. programmers saw that they could extend the concept of a remote procedure call to that of a remote object allowing remote method invocations. You could represent network services as objects distributed across a network and use method invocations to perform transactions, rather than esoteric socket-based protocols or unwieldy collections of remote procedure calls. Again, the idea was to simplify the programming model by making distributed programs appear like sequential programs- you should be able to reference objects and invoke their methods independent of their location on the network.
Distributed objects are mostly used to build corporate enterprise applications that require access to data spread out in different locations across the network. Sometimes this actually requires coordinating computation with machines in different parts of the world. A common use is to simplify the implementation of application specific network databases that can become difficult to implement using a client/server approach and SQL queries. It is much easier for a programmer to write something like the following than to pass an embedded SQL query to a vendor-specific client API.
mySSN = getSSN(; // Get my social security number from some input source myID = employeeIDs.getID(mySSN); // Lookup my employee ID myBenefits = employeeBenefits.getBenefits(myID); // Lookup my benefits myRetirement = myBenefits.getRetirementPlan(); // Lookup my retirement plan
Here the program may be accessing anywhere from one to three databases in different parts of the network, but the programmer doesn't have to be aware of that fact. In a client/server program, the programmer would have to specifically set up connections to network databases, issue queries in SQL or some other query language, and convert results into a usable form. With distributed objects, a programmer can access network resources in a transparent manner. To the programmer, employeeIDs is just another object to be used through its public methods. In