The table below provides a quick review of the books' main characteristics. The first three rows are the administrative details. The remaining rows rate each book's coverage of different RMI topics.
| RMI books overview | ||||||
|---|---|---|---|---|---|---|
| Title | Mastering RMI | Java.rmi | ||||
| Price | 9.99 | 9.99 | ||||
| Total pages | 305 | 284 | ||||
| CD-ROM/Companion Website | Yes / Yes | No / Yes | ||||
| Basic RMI | Good | Good | ||||
| Serialization | Good | Excellent | ||||
| Naming services | Good | Average | ||||
| Threading issues | Excellent | Good | ||||
| Exceptions | Average | Excellent | ||||
| Dynamic classloading | Excellent | Excellent | ||||
| Sockets | Good | Good | ||||
| Activation | Average | Average | ||||
| RMI over IIOP | None | Excellent | ||||
| Jini | Excellent | None | ||||
| Security | Average | Good | ||||
| Firewalls | None | Excellent | ||||
| Agents | Good | Average | ||||
| Basic EJB | Good | None | ||||
| Scale: None, Poor, Average, Good, Excellent | ||||||
Rickard Öberg's Mastering RMI emphasizes instruction by example with a collection of tutorials that show and explain extensive sample code. If you are
new to RMI, the ample code is a big plus because you can experiment with meaningful applications. The downside to the book's
tutorial approach is that coverage of some topics spreads across more than one chapter.
Chapter 1 is an overview of client/server architectures. It provides introductory information on distributed computing and network protocols. Chapter 2 introduces RMI and then goes into its details. Öberg discusses the difference between the RMI specification and Sun's default implementation, which is based on the Java Remote Method Protocol (JRMP). He also introduces the threading model, marshalling, naming, and dynamic classloading, and then uses these concepts in Chapter 3 to describe a simple example application.
Chapter 4 improves that example application by using the Java Naming and Directory Interface (JNDI) and dynamic classloading. One of the book's strengths is that Öberg provides several examples on dynamic classloading, which is often difficult to configure in RMI. The chapter covers several dynamic classloading pitfalls in depth.
Chapters 5 and 6 contain topics optional for many RMI users. Chapter 5 describes custom socket factories while Chapter 6 covers activation. Unlike the first four chapters, I didn't feel I had mastered these subjects after reading their respective chapters. The sample code is well described, but I was left wondering which methods am I required to override when creating a custom socket factory? The information on activation likewise left me with the need to do further study before writing code that uses this RMI capability.