|
T
he
enormous Java hype still continues, which is reflected in an increasing
number of books covering the Java language and its growing environment.
If you consider how young Java is compared to other programming languages,
it is not surprising that a book covering in-depth and profound design
and implementation techniques using Java is hard to find.
Concurrent
Programming in Java: Design Principles and Patterns
by Doug Lea is
an amazing and rare exception. The book reflects the author's experience
in object orientation and concurrent programming, gathered long before
Java became a commonly known programming language. Doug Lea's ideas were
available on his Web page in the form of patterns, and he discussed them
with whomever was interested before he put them into his book.
Although the material was initially
presented in a pattern style, this book is written conventionally and consists
of nine chapters. The first introduces concurrency and the way it is (directly)
supported by the Java language. Chapters two and three discuss the two
main forces behind concurrency: safety and liveness. The following chapters
present design and implementation principles for concurrent object-oriented
programming. The detailed discussions of these principles make the book
invaluable for anyone interested in concurrent object-oriented systems
development. Take, for example, the chapter that discusses guarded suspension
and condition variables. It covers:
-
the forces that influence the waiting
and the notifying side
-
the pros and cons of different ways
to represent the logical state that leads to a wait or a notification
-
related abstractions such as semaphores
and latches
-
alternative solutions such as busy wait
or the use of suspend and resume.
A more comprehensive and sound discussion
of the topic is hard to conceptualize.
Our sole point of critique concerns
the title:
Concurrent Programming in Java
suggests that the book
is tightly bound to Java programming. However, the information contained
in this book is equally valuable to those implementing a concurrent system
in C++ or any other (strongly typed) object-oriented language. The code
examples are in Java and some small passages may apply only to Java, but
most of the book would benefit anyone involved in concurrent systems design
and development. In sum: The book is a must-read for everyone who is seriously
designing or implementing a concurrent system in an object-oriented way.
Angelika Langer
, a trainer
and consultant, develops and teaches classes on advanced C++, STL, multithreading,
internationalization, and Java. She has served on the ANSI/ISO C++ Committee
since 1993.
Klaus Kreft
is a software architect and consultant with
more than a decade of experience in industrial software development. He
works for Siemens Business Services in Germany. Langer and Kreft are working
on a book covering standard C++ iostreams and locales and are columnists
for
C++ Report.
|