Head First Java is the best Java book for any programmer who are new in both programming and Java. Head first Java covers essential Java programming knowledge about class, object, Thread, Collection, language feature like Generics, variable arguments or auto-boxing etc. They also has some advanced section on Swing, networking and Java IO which makes them complete package for Java beginners.
2) Head First Design Pattern – Best book for Intermediate Java Programmer
Head First Design Pattern is another top class Java book from Head First lab. If you want to learn core Java design patterns and Object oriented design principle, this is the first Java book you should refer. Head First design pattern written by Kathy Sierra and team.
3) Effective Java – Best Book for Experienced Java Programmer
Effective Java is one of the best or top Java books. Joshua Bloch writer of this book. Important point of Effective Java is Item based structure which breaks whole book in small items and every Item is complete in itself, so you can read this book as short duration.
4) Java Concurrency in Practice – Best book to learn Java Multithreading
Java Concurrency in Practice is another classic from Joshua Bloch, Doug Lea and team. This book is very detailed and capture minor details of multi-threading and concurrency as well.
5) Java Generics and Collections – Best book to learn Java Generics
Java Generics and Collection by Naftalin and Philip Wadler from O’Reilly is another good book on Java. Strong knowledge of Java Collections and Generics are expected from any experienced programmer and this books help on that area.