If I Could Recommend Five Books For Java Developers....
There are many books that are essential for your bookshelf if you're a Java developer. But if I had space for just five books, which ones would I recommend? This question came into my head when I read this post about book recommendations.
Going Back To Basics
Topping the list of essentials for me has to be A Programmer's Guide to Java Certification. I bought it before I did the certification exam years ago. Even though the edition I have refers to Java 1.4, it's always been an excellent reference for the basics of the language. Without doubt, it's the best book available to get going in Java.
Improving Performance
A few years back, I was working on some performance intensive features. I thought I knew threads well enough - I was wrong! This seems to be a common trend among all developers, we don't have a great grasp on concurrency. Thankfully, Brian Goetz does and published Java Concurrency In Practice
As well as simply explaining threading you'll find how to design and test your applications for concurrency. As multiple cores become more common this book is a must have for Java developers - especially as we dispel the myth that Java can't be fast.
Becoming A Better Developer
The Pragmatic Programmer surprised me when I read it first. While not being specific to any language it sets out some great principles, habits and approaches for developers. I still read it every year or so to refresh. It's been good for my own growth as a developer, and for the growth of development processes I've been involved in.
This book should be used in all computer courses, as it would lead to a higher percentage of graduates with a practical view on development.
Becoming a Java Expert
The second edition of Effective Java has been a welcome addition to my developer bookshelf. It has some great tips that I wouldn't have picked up had I not read the book. And with such high praise from James Gosling, it's a book that can't be ignored.
"I sure wish I had had this book ten years ago. Some might think that I don't need any Java books, but I need this one."
Designing With The Future In Mind
Picking a final book is difficult. It's tempting, and predictable to add the GoF Design Patterns book. But I'm not sure that it lives up to the hype anymore. However, it has set the scene for other books on patterns and design in general. Emergent Design: The Evolutionary Nature of Software Development really caught my attention recently. It has a nice concise appendix of design patterns giving a non-software analog for each, which really helps with understanding them.
It's a great book for architects and developers to read to make designs more futureproof, stable and helps answer the question How Much Design Is Enough. It easy reading and shows how the software development industry can mature, and what you can do to improve your own practices.
I'm sure this isn't the definitive list for all developers so I'd be happy to see your own opinions. What books related to software development have you found indispensable?
James is a DZone Zone Leader and has posted 231 posts at DZone. You can read more from them at their website.
- Login or register to post comments
- 25714 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)











Comments
Schalk Neethling replied on Fri, 2008/08/08 - 9:34am
Casper Bang replied on Fri, 2008/08/08 - 10:02am
Decent list, though I think you should add "Java Generics and Collections". Unless you are writing very complicated stuff, you are after all more likely to deal with generics and collection issues (erasure, wildcards, arrays etc.) than concurrency issues (locks, visibility, fairness etc.).
Meera Subbarao replied on Fri, 2008/08/08 - 10:28am
James Sugrue replied on Fri, 2008/08/08 - 10:28am
Thanks for the suggestions. I haven't actually read either of those. I've heard a lot about Puzzlers alright - will check them out
pwoodward replied on Fri, 2008/08/08 - 11:51am
I too enjoyed Java Puzzlers - as it's extremely helpful in developing useful debugging skills. Some of the problems described there you probably won't come across all that easily in day-to-day development. However, by honing your knowledge of them in advance - when they do rear themselves it makes it easier to identify them.
Another book I would throw into the mix would be Interface Oriented Design by Ken Pugh. While the concept of interfaces is not unique to Java - it's probably the first large scale language to make heavy use of them. Learning to use them effectively can make your life as a Java coder much, much more pleasant.
Also useful is Implementation Patterns by Kent Beck. It's a slim volume though. However it does cover a lot of strategies for writing code that is clear, easy to read/understand and consistent. It's less about large scale architectural patterns and OOA/D and more about the process of writing clean code.
Slava Imeshev replied on Fri, 2008/08/08 - 5:46pm
Regards,
Slava Imeshev
Cacheonix: Data Grid for Java
Alex(JAlexoid) replied on Sun, 2008/08/10 - 2:25pm
in response to: imeshev
[quote=Slava]For concurrent programming I'd recommend Doug Lea's Concurrent Programming In Java. Doug is the guy who developed the java.concurrent package, so it doesn't get more insightful. [/quote]
Java Concurrency In Practice actually refers to Concurrent Programming In Java on several occasions, and Doug Lea is one of co-authors ot taht book.
Slava Imeshev replied on Sun, 2008/08/10 - 2:58pm
in response to: jalexoid
Java Concurrency In Practice actually refers to Concurrent Programming In Java on several occasions, and Doug Lea is one of co-authors ot taht book.
[/quote]
I own both books. Doug's book is a bit more academical, and Brian's one is leaned more towards practical use cases. It is good to start with Concurrent Programming in Java and then proceed to Java Concurrency In Practice. This way you will have a better understanding of the problem when working on practical applications of concurrency.
Regards,
Slava Imeshev
Cacheonix Systems
Peter Karich replied on Sun, 2008/08/10 - 3:50pm
Morten Nobel-Jø... replied on Tue, 2008/08/12 - 3:21pm
The best Java book I have read for years is "Filthy Rich Clients" by Chet Haase and Romain Guy.
The book focuses on creating applications so graphically rich that they ooze cool.
I really enjoyed reading it - it gave me a great insight of how to use Swing to create really nice looking applications.
Regards,
Morten Nobel-Jørgensen
gamalpower replied on Sat, 2008/09/13 - 2:00pm
DAER SIR
how are u today?
with java don't worry about every thin with this good company and good prducts