Finally, Further Reading lists works that may be interesting for further reading on complete details, object
orientation, programming with threads, software design, and other topics.
Examples and Documentation
All the code examples in the text have been compiled and run on the latest version of the language available at
the time the book was written, which was the JDK 1.5.0_02 product version. Only supported features are
covereddeprecated types, methods, and fields are ignored except when unavoidable or when knowledge of the
past is necessary to understand the present. We have also covered issues beyond writing programs that simply
compile. Part of learning a language is to learn to use it well. For this reason, we have tried to show principles
of good programming style and design.
In a few places we refer to online documentation. Development environments provide a way to automatically
generate documentation (usually HTML documents) for a compiled class from its documentation comments.
This documentation is normally viewed with a Web browser.
Acknowledgments (Fourth Edition)
Once again we are indebted to a group of people who took time out from their hectic schedules (and even their
own books!) to give us the benefit of their experiences in making this the best edition yet. Of course, some of
those people were also responsible for the huge volume of work required for us to catch up with all the new
language and library features, but we won't hold that against them. Much.
On the reviewing side our thanks go first to Yoshiki Shibata. Yoshiki produced the Japanese translation of the
third edition and in the process single-handedly discovered at least 85% of the errata. To get the fourth edition
as errata free as possible we knew we needed Yoshiki onboard as a reviewer very early on. Yoshiki became
our front-line reviewer and nothing went out for general review without his nod of approval. Not only did he
provide valuable corrections and feedback on the new material, he also pointed out several areas where there
had been language changes that we hadn't been aware of!
Brian Goetz also rates special thanks not only for reviewing the entire edition, but also for re-reviewing
various sections that took several iterations to get right. The turnaround times for these re-reviews were very
tight and we much appreciate Brian's time at that critical stage.
The remainder of the core reviewing team consisted of Beth Stearns and Kevin Davis, who were able to stay
for the long haul, while Bob Withers, Herb Jellinek, Ken Louden, Rich Wardwell, and Kevin Hammond
provided valuable feedback on the earlier portions of the text. Thank you all very much.
We'd also like to thank Tim Peierls for supplying the chess example used in the enum chapter; and Keith Lea
and Martin Buchholz for valuable reviews of the generics materialthanks!
It will come as no surprise to most that writing the generics chapter (and the related part of the appendix) was
the hardest part of this edition. Armed initially only with a draft of the third edition of the Java Language
Specification, it was never going to be easy to fathom the depths of the new type system, so we brought in the
big guns: Neal Gafter, Josh Bloch, Gilad Bracha, and Peter von der Ahé were all instrumental in educating us
about generics, and for that we thank them. Peter's in-depth review of the generics chapter was especially
valuable and warrants an additional thank you. Of course, the teachers cannot be blamed for the shortcomings
of the student, so any errors or omissions in the description of generics are the sole responsibility of the
authors. (We'd like to thank Phil Wadler for catching two such omissions in the generics coverage just prior to
publication.)