A well-written and very interesting advanced Java text (assumes a working knowledge of Java) suitable for system developers or second level network modules.
Java's powerful APIs make it a clear candidate for implementing applications distributed across complex networks.
After an introductory chapter covering the basics of the anatomy of distributed applications there are four chapters covering fundamental tools; networking (Sockets/streams, URL connections, ClassLoader), distributed objects (CORBA and RMI), threads and security. There are then chapters on applications (which may be read in any order): message-passing systems, databases, bandwidth-limited systems and collaborative systems.
Consider an application running over a system which is bandwidth-limited. Does the application have high bandwidth requirements, e.g. real-time video, or does it have to run over slow connections, e.g. telephone lines? How does the application adapt to changes in traffic flow? For example, an application may compress information when it detects network congestion. How does the application measure data flow? What data flow - raw data (in terms of bits/secs at the socket level) or real data (in terms of application level data after encoding/decoding). Data compression may overload the host computer system making things worse not better. Should one chose best compression ratio (for low-bandwidth situations) or most robust (for lossy network situations)? The chapter on bandwidth limited system discusses these issues in detail, looking at monitoring bandwidth to measure raw and real data rates and managing the bandwidth.
A well-written and very interesting advanced Java text (assumes a working knowledge of Java) suitable for system developers or second level network modules. Plenty of example code (available from the book's web site). Highly recommended!