Core Java, Volume Ii by Cay S. Horstmann & Gary Cornell