|
J
ava
2 Performance and Idiom Guide
,
by Craig Larman and Rhett Guthrie, is another second-generation Java title
like
Practical
Java Programming Language Guide
by Peter Haggar or
The
Elements of Java Style
by Scott Ambler et al. These new books do
not aim to teach the Java programming language or any of the elements of
the Java environment. Instead, they focus on Java idioms and programming
techniques that have been developed during the past five or more years
since the advent of Java.
As
the title suggests,
Java 2 Performance and Idiom Guide
deals with
performance techniques and idioms in Java. In more detail, it breaks down
like this:
-
The book
contains three chapters (100+ pages) devoted to performance issues, from
high-level design techniques that can have a significant impact on the
performance to fine-grained implementation tips that have only moderate
to minor impact.
-
The next-largest
section (70+) deals with Java library idioms. It covers the universal super
class java.lang.Object, reflection, concurrency, collections, resources,
and exceptions.
-
Three
shorter chapters follow (around 20 pages each) and cover language idioms,
packaging idioms, and testing idioms.
-
The book
closes with a section on coding idioms (roughly 50 pages) dealing with
naming and style conventions.
As the
overview reveals,
Java 2 Performance and Idiom Guide
aims to cover
a broad range of topics: performance techniques, programming and design
idioms, testing techniques, and coding conventions. Unfortunately, this
broad scope comes at the cost of some parts appearing a little bit "thin,"
because the entire book is only 300 pages long. This is true especially
for the Java design and implementation idioms, a topic that cannot be discussed
comprehensively in 100 pages. However, the same number of pages is sufficient
to explore the performance techniques in adequate depth and detail.
For
this reason, the section on Java design and implementation idioms leaves
much to be desired, while the section on performance techniques, to our
knowledge, is one of the best collections of Java-relevant performance
techniques currently available in book form. Unfortunately, Java performance
is a fast-moving area and, as the authors themselves point out, for some
techniques like JIT compilers or Hot Spot technology,
Java 2 Performance
and Idiom Guide
can give only a snapshot of the current situation.
It will be outdated soon.
We
also noticed that the book, despite its title, includes a number of general
- that is, non-Java-specific - idioms. For example, the section about performance
offers advice like "use buffered I/O" or "move loop invariants out of the
loop." This kind of advice might be welcome to novice programmers, but
an experienced software engineer will not find anything new or Java-specific
in these idioms.
In
sum,
Java 2 Performance and Idiom Guide
is a good starting point
for software engineers or programmers who are relatively new to Java and
want to get a broad overview of idioms and performance techniques relevant
to Java. While the performance issues are discussed adequately, the reader
should not expect deep, detailed explanations of Java idioms. Only a title
specifically devoted to a certain Java issue will deliver this type of
coverage. For example, the reader will not get the same understanding of
concurrency and multi-threading idioms in Java from the 22 pages devoted
to the issue in this book as he or she would get from Doug Lea's more-than-400-page
book,
Concurrent
Programming in Java
.
Angelika
Langer
develops and teaches classes on advanced C++, STL, multithreading, internationalization,
and Java. She served on the ANSI/ISO C++ Committee from 1993 to 1998.
Klaus
Kreft
is a software architect and consultant with 15+ years of experience
in industrial software development. He works for Siemens Business Services
in Germany. Langer and Kreft are authors of "Standard C++ IOStreams and
Locales: Advanced Programmer's Guide and Reference" (Addison-Wesley, 1999)
and are columnists for
C++
Report
magazine.
|