Sockets, RMI, CORBA and Mobile Agents Explored

Great socket, good RMI coverage, incomplete CORBA and interesting mobile agent coverage, reasonable investment.


Distributed programming is a huge wave. TCP networking has become virtually ubiquitous, and with it the need to develop systems that function across the network has exploded. "Distributed Programming with Java" explores four fundamental ways of approaching the problem - socket programming, RMI (Remote Method Invocation), CORBA (Common Object Request Broker) and mobile agents. Conspicuously missing is Jini, which might have been more pragmatic than agents, though agents are no less interesting. The coverage is clean and useful, but the book has occasional typos and errors that should have been caught before going to press.

The first part does a pretty good job of exploring socket programming in Java, including both TCP and UDP connectivity. The author demonstrates a number of useful techniques and explains the different types of low-level sockets, including the reason why raw sockets are not supported in Java and what cannot be done directly as a result. This section also covers the client/server paradigm, proxy servers, database connections and object serialization across Java sockets. Section 2 looks at RMI. The coverage is reasonable and fairly extensive, though there was little information on effective use of activatable objects, which disappointed me as a reader.

Part III looks at CORBA programming. Missing is a good high-level overview of the CORBA services and their relationship to each other. Naming services are used but there’s nothing about event services which are among those that inevitably come into play if you’re working on a real-world application. The coverage of Caffeine is interesting but useless unless you are using the VisiBroker ORB (Object Request Broker). The material is effectively accurate but too little to get you out of trouble on a real CORBA project. Five chapters on Mobile Agents close out the book with an exploration focussed on ObjectSpace’s Voyager technology. Voyager deserves its own book and this coverage is necessarily sparse and a little unsatisfying.

If you’re looking for a high-level overview of distributed programming, this book is a reasonable investment. There’s enough depth to get a taste of the technologies involved and probably enough to make an informed decision about which one to use in your project. While the socket coverage was fairly complete, and RMI complete enough to be practical, I found the CORBA and agent coverage a little short. This is a tough challenge for an author and perhaps future editions will extend these sections and add one that explores Jini technology in a distributed programing context. There’s a lot of good material in these pages, and the price is high but not unreasonable.