The Remote Method Invocation Guide

0
420

“There can be nothing intermediate between that which undergoes and that which causes alteration.” Aristotle, Physics, Book VII, §2. About this book This book is about Remote Method Invocation (RMI) in Java. It both clarifies and extends the information in the RMI Specification. While it is primarily aimed at software developers and students, it will be useful to Java applications architects and designers as well. The book has grown from our own experience in designing, writing, and deploying RMI applications, and from a detailed observation of common questions, difficulties, and discussions on the Internet and in “cyberspace” generally, especially the Java-networking and RMI mailing lists. We feel confident that it addresses many of the real-world issues facing Java developers programming in distributed environments. This book is an accurate account of Java RMI as at Java 2 Java Development Kit (JDK) 1.3. It documents RMI as it really is. To this end, we have noted a number of errors and inconsistencies in the specifications and documentation which are distributed with the JDK. Where possible we have confined our discussion to matters defined in the RMI Specification for JDK 1.3. However, in practice there are a number of areas of RMI which are unspecified, underspecified, or which cannot be understood without reference to an implementation: in these cases we have referred to Sun’s implementation, taking care to clearly mark such excursions. How it is organized The first two chapters introduce RMI and set it within the context of Java and object-oriented programming. While this book assumes that you are familiar with Java and distributed computing, these first chapters can help to reacquaint you with some relevant concepts. Along with a brief introduction to the principles of RMI, Chapter 1 also introduces a simple RMI service which is used throughout the book for illustrative purposes. Chapters 3 to 9 provide the fundamental building blocks for getting up and running with RMI. They discuss what you need to know about serialization, remote interfaces, clients, the RMI registry, servers, security, and mobile code. Chapters 10 to 14 build on the topics discussed in earlier chapters. These chapters move toward more advanced concepts in RMI such as activation, socket factories, and design patterns. These chapters may be especially useful to those already familiar with RMI and its implementation. The remaining chapters provide additional information for developers looking for alternatives to the standard RMI implementation, or extensions to it, such as JNDI naming services, Jini, CORBA/IIOP, and SSL. These chapters also discuss peripheral issues which may interest those wanting to go deeper into RMI –including firewalls, performance, conversational security, and debugging. In the appendices we have listed all the exceptions that can arise in RMI, and all the system properties which can modify its behaviour. Further appendices list our references and other resources, and provide a comprehensive glossary of terms. Prerequisite knowledge We have assumed that you have a reasonable knowledge of the Java programming language (specifically the concepts class, abstract, object, interface, method, parameter, argument, result, and exception), and of the basic principles of object-oriented programming (inheritance and polymorphism). All this can be found in the standard reference– Arnold, Gosling, and Holmes, The Java Programming Language, 3rd edition, Addison-Wesley, 2000. We have also assumed that you have an elementary understanding of networking in Java: specifically the java.net package (in particular the classes Socket and ServerSocket), and of the standard Java exception classes. Terminology and conventions In this manual, Java code samples and extracts are given in this font. Indented paragraphs in a smaller font size, such as the following paragraph, contain detailed matter which can be skipped on a first reading. This is an example of an indented paragraph providing greater detail about the preceding material. It can be skipped on a first reading.