Effective Java by Joshua Bloch (Paperback, 2008)