This book provides an in-depth resource to all features of RMI, building a firm, logical foundation for understanding and applying the RMI technology. It contains detailed information about how to apply RMI to get professional developers and students alike "up and running", while clarifying and extending the official information found in the specification. The authors address many of the real-world issues and unexpected features that you will encounter whilst working with the technology.
All you need to know about:
- understanding RMI in the context of Java and object-oriented programming
- using RMI to create applications in networked environments ranging from LANs to the Internet
- mastering serialization, remote interfaces, clients, the RMI registry, servers, security, and mobile code
- applying advanced concepts e.g. activation, socket factories, Internet firewalls, distributed garbage collection, and design patterns
- working with alternatives or extensions to the standard RMI implementation e.g., JNDI naming services and CORBA IIOP.
- Complete RMI Alamanac lift-out
- Extensive code samples and exercises
|Product dimensions:||7.44(w) x 9.25(h) x 0.74(d)|
About the Author
Kathleen McNiff is a freelance technical author-editor and Human Factors consultant. She has written for audiences as diverse as computer programmers, application users, paediatricians, and clinical geneticists.
Table of Contents
- About this book
- From Kathy
- From Esmond
- 1: Introduction to RMI
- 2: Characteristics of RMI
- 3: Serialization
- 4: Remote interfaces
- 5: RMI clients
- 6: Naming I-RMI registry
- 7: Servers I-unicast servers
- 8: Security I-execution
- 9: Mobile code
- 10: Servers II-activation
- 11: Socket factories
- 12: Agents and patterns
- 13: Naming II-JNDI and Jini
- 14: Servers III-RMI/IIOP
- 15: RMI through firewalls
- 16: Security II-the conversation
- 17: Servers IV-beyond unicast
- 18: Selected further topics
- Appendix A: Exceptions in RMI
- Appendix B: System properties
- Appendix C: References
- Appendix D: Glossary
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.
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.
Syntax is specified in the usual metalanguage, where square brackets and contain optional syntax elements, and ellipses denote optional repetitions. For example: rmi://host:port/directory /name
Throughout this book, we have used the terms "base class" and "derived class", rather than the counter-intuitive terms "superclass" and "subclass".
All the source code examples in this book have been compiled and executed on Windows and Solaris platforms, and in many cases have interoperated between both platforms.
The exercises are all feasible, but vary in difficulty from trivial upwards. Some few are of a more theoretical nature.
The examples and exercises are designed to promote understanding of the concepts, rather than to provide "lift-out" code which can be immediately deployed.
This book is set in Times New Roman PS MT produced by Adobe Systems Incorporated, and Arial Monospaced MT produced by Monotype Corporation. The book was written in Adobe FrameMaker on Apple and PC platforms, and typeset with Adobe FrameMaker, Distiller, and Acrobat, and submitted to the publisher in PDF format. Thanks to Adobe for making these tools.
The Almanac was produced by javadoc and Sun's unsupported MIF Doclet: thanks to Doug Kramer and his team, the people who mind these tools, for assistance and advice, and especially for implementing some of our requests in time for our deadlines.
This book could not have been written without the assistance of Sun Microsystems Inc, firstly in producing Java and the RMI package to provide us with our subject, and secondly in offering much valuable assistance and advice.
Thanks especially to:
- Helen Maclean, our typesetter extraordinaire
- our colleagues at Pearson Education: our supervising editor Alison Birtwell, for the opportunity, and our production editor, Sally Carter
- many respected colleagues on the RMI Mailing List, especially Brian Maso and Adrian Colley
- the Melbourne office of Sun Microsystems Australia, for supplying Solaris test facilities for the sample programs.
Thanks finally to our anonymous reviewers who diligently scrutinized our draft manuscript and made many valuable comments and suggestions. Any errors that remain are of course our responsibility.
Sun, Java, and many Java-related terms are trademarks of Sun Microsystems Incorporated, Santa Clara, California. Any other trademarks referred to in this book remain property of their respective owners.
Thank you Esmond for knowing so much about RMI.
Thanks to Andra Bruveris for directions in style and to Gavin Arndt for his never-ending technical support.
To my boys Pete, Frank, and Roythanks for your love and patience. To the little one for waiting until my deadline was met.
Northcote, Victoria, Australia, August 2000
Thanks Kath for being ever-engaging and unfailingly helpful, and for subtly project-managing this book.
Thanks to my valued professional colleagues: to John Marquet for providing the initial conditions which made this book possible; to Neil Belford for clear thinking, encouragement, wit, and advice; and to Gavin Arndt for all the amusement.
Finally, thanks to Tilly and to all my family for their understanding and support.
Great Ocean Road, Lorne, Victoria, Australia, July 2000