Here is my suggestion on best available books for learning java programming – from complete beginner to competent programmer. I do not want to confuse anyone with a long list, so I have taken 1-2 books for each area of important topic you must know.
Best book to learn Core Java
Anytime you want to quick access any java concept online, this should be your first choice. They are enough explanatory and full of knowledge. You may find some problem if you are beginner, because it is reference material and not step-by-step guide to teach you the concepts, and to make use of this information you first know the basics, right??
This book should be read by every Java programmer. It’s exercises are challenging, and tutorials on Collections and concurrency are simply superb. It has lots and lots of example codes and their explanations; which make learning a bit easy.
Even “James Gosling” recommend this book by saying “I sure wish I had this book ten years ago. Some might think that I don’t need any Java books, but I need this one.”
I will recommend you to go after this book, once you are comfortable in basic java and have spent 1-2 years in actual coding. It’s full of excellent advices; and to consume those advices, you better be prepared.
Best Book to learn Java Multi-threading
I really admire this book and have read it’s many chapters multiple times. It’s surprisingly good book covering even minor details of java concurrency concepts and explaining in detail. It also provides you example code for teaching you the correct usage of java threads and it’s APIs.
This is free reference material available at your disposal for getting knowledge of very important generics concepts. An excellent resource. Bookmark it now !!
In my view the Gang of Four is the best book ever written on object-oriented design – possibly of any style of design. The book provides numerous examples where using composition rather than inheritance can improve the re-usability and flexibility of code.
I will not recommend this book to you, until you’re pretty comfortable with the basic principles of OO design. Even then you may put some efforts to grasp correct concepts. But trust me, unlike most books, however, it amply pays that investment.
This book is the definitive reference to UML 2.0 diagramming. It will give you simple solid explanation of how UML works and how you can make most of it. A great resource.
Apart from above books, I will suggest you to browse some good java blogs/forums ( like howtodoinjava.com :-) ); and discuss your understanding with others, and argue with other’s understanding of java. Discussion is single most powerful tool to enhance knowledge.
Happy Learning !!