Core Java although very easy to pickup, is quite a large beast in itself. Many rookie java programmers will roll out programs by knowing a few syntactical constructs but if you really
want to improve on using the full power of Java, you will have to spend quite some time training with it.
In my opinion, the real beauty of Java as a language is the simplicity it offers a newbie to dive into and a wide plethora of complex tools it offers to experts.
Remember, I am suggesting these books for Core Java only. Not for any particular Java framework.
In my experience, turning to these books for reference and implementing a pretty simple feature has helped me a lot, not only to improve design but to improve efficiency as well.
The ordering of books is increasing complexity. That is you are a beginner, you start with the first one.
So the list goes like this...
Beginner :Head First Java - Bert Bates and Kathy Sierra
This book was released way past my B.E. graduation time.
When I was doing my PostGrad, I asked one of my friends this book for a quick brush up and he suggested this one.
Although I had studied java during my BTech days by attending classes and learning from a book I don't remember anymore, I really really wished I had this book then. This book gives enough pictures for readers to quickly summarize the concepts at a glance.
If you are a beginner or a novice, I would highly suggest you spend time with this book and do all the exercises diligently.
Intermediate:SCJP Sun Certified Programmer for Java 6 Study Exam 310-065 Guide
- Kathy Sierra, Bert Bates
I owe my SCJP certification to this book. I am not an ad-agent for Kathy or Bert. But these folks really know how to teach.
But this book took me to an all new level in Core Java. You are assured to be in the top 40 percent of the java programming population once you are through this book.
I highly recommend taking up the OCJP1.6 exam. This goal will drive you to finish this book and boost your confidence while answering any interview question related to Java.
Thinking In Java - Bruce Eckel
I haven't personally read this book although lying in my collection. But I spent my hard earned money on this book for one sole reason. Why?
I had a guest java lecturer named Shakeel Ali who is one of the Top 5 trainers on java in whole of India! Every student who has ever attended his classes(C/C++/Java) will vouchsafe their knowledge to this expert. He strongly advised us to study this book!
Advanced:Effective Java - Joshua Bloch
The toughest book I have ever come across so far. This book was advised to me by my manager. Understanding some of the concepts of generics really pulls out your intestines! I am trudging half way through this book and exhausted. Hopefully will complete the book and understand it well by the end of this year.
Java Concurrency In Practice - Brian Goetze
This is a book I am yet to read. This was recommended by a Java trainer who visited our office for training on concurrency and boy , following his lecture left my brains fried!!
Bonus:Java Puzzlers- Joshua Bloch, Neal Gafter
This book is on my "Must Read" list.
Simply because I tried some of the puzzles here and found them to be informative and entertaining.
No doubt the saying is true - "As you increase your circle of knowledge, so does the circumference of ignorance around it!"-Einstein.