Just finished reading Effective Java by Joshua Bloch.
It is a great book that contains many nuggets of info, best practices and gotchas. Definitely the best Java book I have read in a while.
Next up, I have started on another book that Bloch contributed to: Java Concurrency in Practice.