- Introduction to Java Programming and Data Structures
- Head First Java
- Think Java
- Clean Code
- Pragmatic Programmer
- Effective Java
- Java Concurrency in Practice
- Test Driven
- Head First Design Patterns
- Release It!
- Kotlin in Action
- Spring in Action
- Spring Boot in Action
- Cloud Native Java
- Spring Microservices in Action
- Learning Spring Boot 2.0
Personally, I am always on the hunt for good programming books. Books are an opinionated topic, therefore I am quite sure some people would disagree with this selection. Nonetheless let’s have a look at my opinionated selection of the best Java books to read in 2020.
You might realize that a lot of books here are not Java-specific at all, still they are the ones I would highly recommend to any Java Developer.
Let’s start with the books for the starters out there:
Introduction to Java Programming and Data Structures by Y. Daniel Liang
It took me years to properly master programming in Java. When I would have to start all over again - Introduction to Java Programming and Data Structures would be my first choice.
Following Liang along does not require any previous knowledge about programming or computers. As a Professor at the Georgia Southern University he knows exactly how to explain technical concepts to people who never have seen them. Starting from scratch, it covers a lot of topics like Programming Basics, Object-Oriented Programming, Inheritance and Data Structures.
The only downside to this really good text book is the price. It is quite expensive. Depending on your situation, I would try to grab an used but in good condition copy of the 10th edition which according to my knowledge is almost the same as the latest one.
Head First Java by Kathy Sierra & Bert Bates
This is not a book every Java Developers needs to own. If you come from any other programming language it is definitely not mandatory and the re-readability is pretty low.
Head First Java is still a good book for people trying to learn Java. It also would be a perfect fit for people learning Java as their first Object-Oriented programming language. It has a steeper learning curve than Introduction to Java Programming.
Similar to Head First Design Patterns which is further down the list, Head First Java is written in an engaging way and makes sure that you don’t want to put it away. After finishing it, one should be good switching to any other Java learning resource.
Think Java by Allen B. Downey & Chris Mayfield
Think Java has the subtitle “How to Think like a Computer Scientist”. Living up to its title, the book not only shows details about the Java Programming Language but also about common Computer Science topics.
What I like about the book is that it not only teaches to code with Java. It also also teaches a lot of vocabulary and concepts which you will need when you want to talk about it with other people. Vocabulary is really an issue overlooked in a lot of learner books.
Overall: If you want to learn Java, you can’t go wrong with this book.
Let’s have a look at more books for the more advanced people out there.
Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
Let’s start with the book that influenced my day to day work the most: Clean Code: A Handbook of Agile Software.
For many it is more than a book. It is a movement, a cult. Ok, back to being serious: It is a book about Coding Principles with valuable knowledge extracted from years of experience.
Since I read that one early in my career it was eye-opening and immensely improved my way of writing and thinking about code. This is one of the books for which I would recommend to keep it around. It doesn’t hurt to reread it from time to time.
If you ever think about getting a welcome gift for a Junior Developer in your company - Please go for this book.
The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt & David Thomas
Also an early read for me. It is a book I thoroughly enjoyed.
Both authors succeeded in creating good analogies for most of there concepts. As a result, The Pramatic Programmer is a breeze to read and makes remembering the concepts based on analogies really easy.
In comparison to Clean Code it is less about code but more about principles and the Programming as a craft.
Effective Java by Joshua Bloch
Hey, finally a Java Book on this “Best Java Books list”. Actually I think it is THE BOOK every Java developer should read and have around.
Effective Java is in my eyes also an evergreen book. With the release of the 3rd edition it was updated for Java 7, 8 and 9. Here we have another book which I would definitely recommend to buy. For me it is not a “read once” book. From time to time I pick it up at work to look up a few things here and there.
It is also a good source for solving arguments in Code Reviews 😊.
Refactoring: Improving the Design of Existing Code by Martin Fowler
A book I only recently lend from a co-worker. What I liked about Refactoring: It is easy to follow and teaches you the process and mechanics involved in refactoring code.
Fowler teaches a lot about different refactoring technologies and has a lot of examples on how to use them. Also he stresses writing Tests, since they are the safety net for all the executed refactorings.
I personally only read the first edition, so I can not speak directly for the second.
Java Concurrency in Practice by Brian Goetz
Dealing with concurrency is not as easy as one might think. Java Concurrency in Practice presents a lot of pitfalls and how to deal with them. It is not an easy read, but I think this is due to concurrency not being an easy topic.
Sadly it is a bit dated and based on Java 6, a lot of the new constructs could also use an explaination similar to the ones mentioned in the book. For all the things covered it is still spot-on.
Test Driven: TDD and Acceptance TDD for Java Developers
I am a big fan of Test Driven Development. Therefore it is really a no-brainer to put Test Driven on this list.
Lasse Koskela managed to make a not so popular topic, pretty bearable. The book is not perfect, still it sold TDD to me. It comes with all the techniques and tools you need for successfully writing your code in a test driven manner.
I would recommend it to the more experienced Java Developers.
Head First Design Patterns
If you ever had to force your way through any Design Patterns book and you couldn’t keep reading it - this book is for you!
Head First Design Patterns is an easy to read book. It is by a mile not a reference book, but it is a book which helps you to learn a few Design Patterns AND remember them. I really appreciate how Head First Design Patterns made learning about Design Patterns actually fun.
Release It!: Design and Deploy Production-Ready Software by Michael Nygard
As of writing this, I did not complete it yet. The reason I had to buy it was that I heard about it on two conference talks back to back.
What I liked already after skimming over it was that it covers a lot of real-world issues with software in production. The title is really underselling it - think I will still have some fun and learn a lot about hard won lessons.
I think Release It! is a book you can recommend to just anybody wanting to write production-ready applications.
Kotlin in Action
Whoa! This is not a Java Book. Yes that’s right.
A few months back, we started a new project with Kotlin instead of Java. Mostly we did this because we only heard good things from our Android Developers about it. All the involved developers enjoyed it after a while.
Kotlin is a programming language also running on the JVM. And it is perfectly compatible with Java.
In fact, the interoperability with Java is so good that you can really mix it in your code. If you like Java, I am pretty sure you could get used to Kotlin and love it.
Kotlin in Action is a good match for Java Developers wanting to learn Kotlin. The official documentation is also great!
At first I didn’t wanted to include books about Frameworks in this list. After thinking more about it I came to the conclusion that (IMGO) Java is currently nothing without Spring and Spring Boot. This is at least true if you want to get a Job as a Java Developer.
To be totally honest I am not really satisfied with all the books out there about Spring and Spring Boot in particular. I think I am not alone with this opinion: As of writing this, there is no Spring/Spring Boot book which has a 4.5 star rating on Amazon with a decent amount of ratings.
Spring in Action by Craig Walls
I skimmed this book at work. It was a copy of the 4th edition. Back then the book felt really solid. This is also why I personally recommended it in the past.
Once one of my colleagues came back with his copy of the 5th edition and told me how disappointed he was with this book. After talking a while I really think the 4th edition must be way better than the newer version.
The sloppiness and errors he mentioned were at least not in the 4th edition. If you want a solid book about Spring, go get Spring in Action 4th edition.
Spring Boot in Action by Craig Walls
Spring Boot in Action is the other book by Craig Walls. This one was leaving me behind wanting more details.
Still I would think that it makes a good job as a starting point for your Spring Journey. For further reading you can always refer to the official documentation.
Another problem it has: It was written prior to Spring Boot 2.0 and therefore it did not age too well.
Cloud Native Java by Josh Long and Kenny Bastani
Cloud Native Java tries to cover a lot of things in one place. From the Twelve-Factor App, to do advanced things with Spring Cloud. This is a book, I really would love to recommend owning to every Java developer since I really respect the authors - sadly I can’t.
There are two reasons: The first reason is that it is really tied to Cloud Foundry and using a lot of estate in the book on that. The second reason is that for me it is not a reference book.
Don’t get me wrong, it is a great book for exploring all the things Spring and Spring Cloud offer. For me it wasn’t more. I read it from cover to cover but now it collects dust since I refer to the documentations.
Spring Microservices in Action
One of the best Spring books out there. Spring Microservices in Action is really for the advanced reader. If you don’t bring at least a year of Spring experience with you, it could get difficult. That’s fine since the Author also claims this on the cover - I just wanted to also mention it here.
Spring Microservices in Action describes similar things to Cloud Native Java. Overall I liked Spring Microservices in Action a bit more but that might be personal preference. Because of the similar topics, it has the same issues: Being written prior to Spring 5 and that it is not a reference since a lot of things are now outdated.
Learning Spring Boot 2.0 by Greg L. Turnquist
Learning Spring Boot 2.0 is written by Greg L. Turnquist who is a member of the Spring Team at Pivotal. I think based on his previous experience, he had some issues to see the topic from a total beginners perspective.
Having said that, the book is really good in presenting all the reactive new things Spring 5 has to offer and how they integrate with Spring Boot 2. Back then I already had a bit of experience with Spring and Spring Boot and therefore really enjoyed the read. Your mileage may vary.
That’s it for now. I hope you enjoyed the article and could learn something about good Java Books! Who knows? Maybe the next Java Book you read is one from this list.
I would be really interested what kind of books you would add to this list. Just let me know!
Feel free to reach out on Twitter in case you want to discuss or just say