Distributed computing and Java go together naturally. As the first language designed from the bottom up with networking in mind, Java makes it very easy for computers to cooperate. Even the simplest applet running in a browser is a distributed application, if you think about it. The client running the browser downloads and executes code that is delivered by some other system. But even this simple applet wouldn't be possible without Java's guarantees of portability and security: the applet can run on any platform, and can't sabotage its host. Of course, when we think of distributed computing, we usually think of applications more complex than a client and server communicating with the same protocol. We usually think in terms of programs that make remote procedure calls, access remote databases, and collaborate with others to produce a single result. Java Distributed Computing discusses how to design and write such applications.
It covers Java's RMI (Remote Method Invocation) facility and CORBA, but it doesn't stop there; it tells you how to design your own protocols to build message passing systems and discusses how to use Java's security facilities, how to write multithreaded servers, and more. It pays special attention to distributed data systems, collaboration, and applications that have high bandwidth requirements. In the future, distributed computing can only become more important. Java Distributed Computing provides a broad introduction to the problems you'll face and the solutions you'll find as you write distributed computing applications. Topics covered in Java Distributed Computing: * Introduction to Distributed Computing * Networking Basics * Distributed Objects (Overview of CORBA and RMI) * Threads * Security * Message Passing Systems * Distributed Data Systems (Databases) * Bandwidth Limited Applications * Collaborative Systems
Jim Farley is a software engineer, computer scientist, and IT manager. His recent activities have included heading up the engineering group at the Harvard Business School and bringing good things to life at GE's Research and Development center. He's dealt with computing (distributed and otherwise) in lots of different ways, from automated image inspection to temporal reasoning systems. Jim has Bachelor's and Master's degrees in computer systems engineering from Rensselaer Polytechnic Institute.
Preface. 1. Introduction Anatomy of a Distributed Application Requirements for Developing Distributed Applications What Does Java Provide? 2. Networking in Java Sockets and Streams URLs, URLConnections, and ContentHandlers The ClassLoader. 3. Distributing Objects Why Distribute Objects? What's So Tough About Distributing Objects? Features of Distributed Object Systems Distributed Object Schemes for Java CORBA Java RMI RMI vs. CORBA. 4. Threads Thread and Runnable Making a Thread Managing Threads at Runtime Networked Threads. 5. Security Security Issues and Concerns The java.security Package Identities and Access Control Keys: Public, Private, and Secret Digital Signatures Data Encryption Choosing a Cryptographic Algorithm. 6. Message-Passing Systems Messages Defined Why Do We Need Messages? Message Processing Fixed Protocols Adaptable Protocols Message-Passing with Java Events Using Remote Objects. 7. Databases An Overview of JDBC Remote Database Applications Multi-Database Applications. 8. Bandwidth-Limited Systems Flavors of Limited Bandwidth Coping with Limited Bandwidth Scope of This Chapter Monitoring Bandwidth Bandwidth Management. 9. Collaborative Systems What Is a Collaborative System? Issues with Collaboration A Basic Collaborative Infrastructure. 10. Building Collaborative Applications A Simple Chat System A Shared Whiteboard A. Using the Examples in Applets B. CORBA Services C. JavaSpaces D. RMI Quick Reference Index