An Annotated Bibliography

CS 310, Object-Oriented Programming with Java

Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (collectively known as the Gang of Four), Addison-Wesley, 1995.

If Java is like an artist's paint set, this book is like Bob Ross (who died the year this book was published), showing you how to paint mountains, seascapes, and meadows with only a trowel and a sponge. There's also a similar book specific to Java available.

Frank Buschmann, Kevlin Henney, and Douglas Schmidt's article Past, Present, and Future Trends in Software Patterns (IEEE Software, July-August, 2007) describes what's happend in the pattern world since it coalesced around the Gang of Four's book.

Effective Java by Joshua Bloch, Addison-Wesley, 2001.

A book of tips similar to Scott Meyers' Effective books for C++. This is the first edition, covering features up to Java 1.4; a revised edition covering features up to Java 5 should be out real soon now (preview here; the slides can be downloaded without registration).

Java in a Nutshell, fifth edition by David Flanagan, O'Reilly, 2005.

A reference manual for the Java language and large sections of the class library. This isn't a book to learn from; it's a book to remind you of something you forgot, or to give you just enough information to extrapolate to something new.

Java Precisely, second edition by Peter Sestoft, MIT Press, 2005.

A concise description of Java features, mostly of the language with occasional forays into the class library (the I-O classes, for example).

The Java Virtual Machine by Tim Lindholm and Frank Yellin, Addison-Wesley, 1999.

What you need to know if you want to implement a Java virtual mahcine.

Program Development in Java by Barbara Liskov with John Guttag, Addison-Wesley, 2001.

One of the rare books that emphasizes the “object-oriented programming” part of “object-oriented programming in Java”. It's even rarer because it has intelligent and useful things to say about object-oriented programming.

If you ever have the chance, you should also buy this book's precursor, Abstraction and Specification in Program Development (MIT Press, 1986). It presents the lessons of the newer book in purer form because it uses CLU, and obscure and possibly obsolete language that's cleaner and better thought out than is Java.

Programming for the Java Virtual Machine by Joshua Engel, Addison-Wesley, 1999.

This book is the assembly-language manual for the the Java Virtual Machine (JVM). If you've ever wondered how other languages are implemented on the JVM, or what the Java execution model is like, this is the book to read.

This page last modified on 24 February 2008.