April 2006 (Vol. 7, No. 4) 1541-4922/06/$26.00 © 2006 IEEE Published by the IEEE Computer Society Book Reviews: The New Wave--Concurrent Programming
Creating Components: Object Oriented, Concurrent, and Distributed Computing in Java Charles W. Kann 448 pages US$69.95 Auerbach 2003 ISBN: 0-849-31499-2 Until now, concurrent programming has been widely used primarily on systems that do a lot of processing—for example, Web servers. With the advent of dual-core processors, however, concurrent programming is becoming the name of the game, even for PC applications. Creating Components: Object Oriented, Concurrent, and Distributed Computing in Java by Charles W. Kann is a good reference for programming concurrency using objects. The book is based on Java and uses threads, interfaces, and exceptions extensively to describe system design and management. Written in a textbook-like format, the book is intended for an audience with Java knowledge. Although it provides some background material about Java programming, it by no means serves as a Java manual. Kann uses actual Java code generously throughout the book, which makes it easy to understand. The first few chapters cover background details and set the tone for the rest of the book. Kann covers concurrent programming fundamentals along with Java threads and other concurrent programming issues such as race conditions. If you're not well acquainted with Java, this section provides a good (but not thorough) introduction. The second section covers Java fundamentals. Kann discusses the concept of Java objects with references to concurrent programming, interfaces, exceptions, and event models and provides examples. The highlight of this section is the animator class, a well-designed example that you can readily use for creating animation. The next section deals with cooperative synchronization using the animator class. Kann explains concepts such as deadlocks and starvation through this visual program. He includes some new techniques to improve on cooperative and competitive synchronization. He also elegantly explains methods for avoiding race conditions and starvation and addresses some classic problems (such as the readers/writers problem) in this section. Kann should have expanded this section. It's the heart of the topic and could benefit from more discussion. The last section delves into object reuse. Kann explains different methods, from procedural to reuse by delegation, and provides examples. He also includes some general program management tips. He finishes up with an introduction to distributed programming in Java and explains it with a Java chat client in code form. Although this section is just an introduction, I was lost, especially in the last chapter, which Kann could have eliminated altogether. Conclusion This is one of the better-written books I've come across. It explores Java's full potential. The fluent style and Kann's extensive knowledge on the subject account for a smooth flow. It's a must-have reference for serious Java programmers. I encourage you to read it, even if you're well acquainted with Java, because Kann ties new concurrent programming concepts to some older Java concepts. Overall, I would give the book a 7.5 on a scale from one to 10. Milan Lathia is the president of Gridalogy, a grid software services and research company, and a master's student at the University of Illinois at Urbana-Champaign. Contact him at milan@gridalogy.com.
| |||||||||||||||||||||||||||||||||||