This book assumes little knowledge of distributed programming or networking so introduces the vital concepts before teaching the fundamentals of the remote method invocation (RMI) framework. It is targeted at competent Java developers.
The first section follows two examples to practise use of the RMI methods - a basic printer server and a more complex banking server with ATM application. I was impressed with the chapter that compared the RMI and non-RMI printer server examples; it highlighted the simplicity of RMI in comparison to solely using the java.net tools.
Unfortunately, examples are limited to code excerpts. At least towards the beginning of the book I felt complete examples were necessary to introduce Streams and Sockets. Although you can download the complete code from the associated website, I felt that pages did not make clear which Java packages were needed to produce the code.
The book is not only focused on coding. It addresses system design and software-engineering issues when first designing distributed applications.
The second section of the book deals with scalability issues, looking particularly at how the serialisation and Thread capabilities of Java can be applied to RMI applications.
The real differences that the RMI framework can make are not introduced until the final section, targeted at the more advanced programmer. The aim here is to introduce the juicy elements that makes Java RMI so impressive, so useful and so flexible. It looks at the Registry naming service, custom sockets and dynamic classloading.
Finally, the book addresses some of the security issues involved in distributing applications. It suggests design patterns - factories and activation frameworks. Then, almost as an afterthought, the author introduces CORBA and suggests how RMI and CORBA can be used alongside each other. I think this final section appears hurried and adds little to this book.