Advanced Java: Idioms, Pitfalls, Styles and Programming Tips (Prentice Hall PTR Java)