Effective Java - Bloch, Joshua, 1961- (Java Series, 2008)