November 2004 (Vol. 5, No. 11)
1541-4922/04/$31.00 © 2004 IEEE
Published by the IEEE Computer Society
Published by the IEEE Computer Society
Programming Concurrent and Distributed Algorithms In Java
|Two books in one!|
|Concise source code|
|A new edition would be nice…|
PDFs Require Adobe Acrobat
Concurrent and Distributed Computing in Java
By Vijay K. Garg
Wiley-IEEE Press, 2004
Aimed primarily at undergraduate and graduate students in concurrent and distributed computing courses, Concurrent and Distributed Computing in Java by Vijay K. Garg is also useful for programmers and software engineers who want practical experience with Java while learning concurrent and distributed computing fundamentals. Because the book covers two topics (distributed and parallel systems) and numerous algorithms in a relatively small number of pages, it should supplement a longer, more theoretical book, especially for professionals without extensive knowledge of the concepts.
Two books in one!
The book has two parts: five chapters on concurrent systems and 13 chapters on distributed systems. The first 14 chapters consider fault-free systems, and the final four describe methods for handling several types of faults.
The first part of the book describes multithreaded programming topics related to shared-memory-based systems, such as mutual-exclusion problems, synchronization primitives, consistency conditions, and wait-free synchronization. The second part, which makes up two-thirds of the book, explains items related to message-passing systems, such as sockets, remote method invocations, resource allocation, message ordering, self-stabilization, and so on.
I like the book's formal structure, which makes it easier to gain a thorough understanding of the algorithms. Every chapter follows a similar order: an introduction followed by specific topics, problems, and bibliographic remarks (useful for referring to a more theoretical explanation of the topics). (But I do think it's redundant for Chapter 1, called "Introduction," to include an item called "Introduction.")
Concise source code
Since there aren't any instructions about how to write, compile, and run a Java program, Garg assumes the reader has a basic knowledge about this. Regardless, the source code—written in Java and related to algorithms from the book—is simple and easy to understand. The book also has an appendix that includes some source code for generic utility classes.
You can access all of the book's source code from the author's Web page ( www.ece.utexas.edu/~garg). It also contains the Javadoc (API documentation in HTML format) for the source code and an interesting applet—a distributed program simulator for animating most of the book's algorithms.
A new edition would be nice…
Despite being well-written and accurate (although a bit boring to read because of the standard black-and-white printing style), this book could benefit from an expanded second edition. Descriptions of the algorithms are limited, probably because the book's so short. A new edition could include further topics such as simulation of distributed and concurrent algorithms (on Solaris, Linux, and/or Windows workstations), application of certain algorithms on real-time operating systems, and so on.
If the author wrote a second edition including a more detailed elucidation of the book's algorithms and the topics I just suggested—and if the publisher printed it in color and in paperback to decrease the list price—this book would attract more students and professionals.
Concurrent and Distributed Computing in Java is a good book for anyone who'd like hands-on training in the concepts of concurrent and distributed systems. It focuses on real implementations rather than the algorithms' pseudocode. The book's only disadvantage is its high list price—almost US$90 for just 300 pages.
Wilson Pardi Jr. is a software/hardware engineer at Toshiba Machine Co. and a researcher at Tokyo Denki University in Japan. Contact him at firstname.lastname@example.org.