14 great Java books you need to read before you die
Since 2001, I have read tons of books about programming. This page is dedicated to a best of the best list of Java books and general programming books I have read so far. On your journey to becoming a Software Craftsman, I highly recommend that you read every single book I have mentioned on this page.
Head First Java – Kathy Sierra and Bert Bates
Head First Java is a perfect fit for beginner to intermediate Java programmers. The book is fun to read, entertaining and motivating – it is full of images, exercises, puzzles, and jokes, yet still covers a LOT of ground in a very short time. I just checked on Amazon, it has about 310 5 star ratings, and besides that it is the
#1 in books about Object-Oriented Design
#1 in Java books
#1 in books about Object-Oriented Software Design
Head First Design Patterns - Eric Freeman, Elisabeth Robson, Kathy Sierra and Bert Bates
Yet another great Java book of the famous O’Reilly Head First series. Fun to read and very motivating. Much easier to digest then the original Gang of Four book!
OCA / OCP Java SE 8 Programmer Certification Kit OCA / OCP Java SE 8 Programmer Certification Kit by Jeanne Boyarsky and Scott Selikoff
This Java book is aimed at more experienced Java developers. You need to have a few years of experience in Java before reading this book. It will teach you Java from scratch – just in WAY more detail. It is aimed at developers who want to do the OCA / OCP certificate, but I would recommend this book to anyone who wants to get a deep understanding of the Java programming language. I personally use this book as a reference, or as inspiration for many of my video tutorials.
Effective Java: A Programming Language Guide (Java Series) – Joshua Bloch
This Java book is another all-time favorite of mine in my Java library of a few hundred books.
In the 3rd edition of this famous book, Josh Bloch gives you 90 actionable items that will improve your clean coding style. I personally use it as a reference as well as an inspiration for my Java Clean Coding videos!
Clean Code: A Handbook of Agile Software Craftsmanship – Robert C. Martin
I am a big fan of Robert C. Martin. He originally coined the term “Clean Code”.
What else can I say? Read this book! I devoured the book in a matter of days!
The Pragmatic Programmer. From Journeyman to Master – Andrew Hunt and David Thomas
As this book was first published in 1999, it is probably the grandfather of all Agile / Clean Coding books. If you seriously want to become a Software Craftsman, then you must read this book.
Coding: On Software Design Process – Jonathan Locke
A very slim (72 pages) book, that will guide you along your way from journeyman to a Master Software Craftsman.
The Passionate Programmer: Creating a Remarkable Career in Software Development (Pragmatic Life) – Chad Fowler
After reading this book I joined a local Java user group as well as a Software Craftsman guild, and soon after that I started this blog. If you execute what Chad teaches you, this book can change your life!
Practical Unit Testing with JUnit and Mockito – Tomek Kaczanowski
I love short, pragmatic, actionable books, without too much pathos.
This book will teach you how to do (Unit)-Testing properly.
Bad Tests, Good Tests – Tomek Kaczanowski
Yet another great book from this great author. After reading two of his books, I am addicted, and have committed to buy just about any book he is going to publish in the future. 🙂
Domain-Driven Design: Tackling Complexity in the Heart of Software – Eric Evans
This book is tough. Not an easy read, and it took me a while to digest.
Still, it is also a must- read book. Once you have understood Domain-Driven-Design, you will never want to program in any other style. I have integrated some of the concepts of
Domain-Driven-Design into my video tutorials.
Implementing Domain-Driven Design – Vaughn Vernon
In this book Vaughn Vernon aims at explaining Domain-Driven Design in an easier way. Well, digesting it was easier for me, but that might also be because I read it many years after reading the book from Eric Evans. If you want to seriously get in touch with Domain-Driven Design, then you should definitely also read this book.
Release It! Design and Deploy Production -Ready Software (Pragmatic Programmers) – Michael T. Nygard
A famous book that covers a completely different, but very important aspect of software development – releasing it. Full of great ideas and stories, and an easy read.
The Clean Coder: A Code of Conduct for Professional Programmers - Robert C. Martin
Yet another awesome book from Robert C. Martin, or Uncle Bob! You seriously need to read this book! As with “Clean Code”, I devoured the book in a matter of days.
I think they are still recommended reading even after you die, if you can!
That’s a good list, Marcus (y)
In my case, my mentor suggested me to start one of Head First or Thinking in Java. I tossed a coin and the result was Thinking in Java so that too, taught me a lot and improved me greatly as a Java programmer. While it doesn’t cover the “functional programming” elements that are new in Java 8, it does lay a solid ground for some needed basics. I’m unsure how it compares with Head First though my guess is that they’re similar, maybe Head First is little more comprehensive and easy-going.
Great list of mouth-watering books that I’ll immediately start looking for and read. Thanks for this treasure Marcus!
Michael Feathers, Working Effectively with Legacy Code is also a must-read for anyone who has the misfortune to work with a large codebase with an absence of test coverage, which, in the real-world, is pretty much all of us at some time.
It is a good book which I also have in my large library of Java books, but it didn’t make it into my “must-reads” section on purpose. It was written in 2005 and seems a bit outdated. Also I am missing a bit the “hands-on approach” in this book.Today I would do a refactoring guided by Unit-Test + Mockito, so the book “Pratical Unit Testing with JUnit and Mockito” seems to be a better guide for refactoring, these days.
Hey Marcus,
this list really is great. I just recently finished The Pragmatic Programmer and started with Effective Java and just ordered a copy of Clean Code.
From what I’ve read on the internet so far, many people call these books a must-read and to become a good software engineer you ought to know about them. Thanks for sharing them, anyway.
Hello Marcus,
Yours is by far one of the most resourceful and practical websites that I have come across so far this year.
Watch out for my reviews about your tutorials. I want to take my time and go through them all.
Cheers.
Thanks, Charles! Looking forward to hearing from you soon again 🙂