Thinking in Java : the definitive introduction to object-oriented programming in the language of the world wide web - Eckel, Bruce (Upper Saddle River : Prentice Hall, 2006)