Last week one of my friend who was planning to shift his career focus from something else to Java platform asked me to recommend some must read books to advance his understanding and coding ability in Java, and I came up with this list. Although by no means if you haven't read all the books does not mean you are not a serious Java developer, especially for people who collected his/her fundamental coding knowledge on platform other than Java before he/she started exploring the Java world, but this is a list at least from my opinion definitely worth having them on your bookshelf.
Thinking in Java – Entry level book perfect as a reference book as well as be used to establish a sound and solid understanding on Java language and its core API
Effective Java Programming Language Guide – A book teaches you how to be more efficient and disciplined on Java platform
Design Pattern in Java – A Java version of the classic GoF pattern book a must read for any developer if you have not already
Refactory Improving the Design of Existing Code – A must read for any developer who want to be able to stop of the constant struggle between creating the design as well as being enslaved by your design
Once you finish all these books I believe you will obtain both a solid understanding of the platform and most importantly a set of good habits for programming on Java platform or in this matter even any other Object Oriented platform, because I believe what Kent Beck said about a great programmer is nothing but just a good programmer with very good habits.