12 Must Read Advance Java Books for Intermediate Programmers - Part 1
The Java Developer's Reading list
I often receive loads of email about Java book and courses recommendations, something like, I have 2 years of experience in Java and Spring, which Java books should I read to become an expert Java programmer, or I have 5 years of experience in core Java and want to become a Java expert, which books or courses should I refer to?
These are just some of the examples, but most of the requests are like that. Interestingly, most of the email I receive is not from beginners- I mean those who want to learn Java from scratch- but, from Java developers who have 2 to 3 years of experience.
I call them Intermediate Java programmers because they are in the state of their career where they know how to program in Java, but they are not experts yet.
They don’t know how to write scalable, concurrent, and robust code using Java concurrency features; they are learning design patterns, but they are not yet using them in real code.
They lack unit testing skills, and they also don’t have design skill a key for expert and senior Java developers.
Keeping those things in mind, In this three-part series of Java book recommendation article, I’ll share some 10 to 12 books to develop skills which both intermediate and advanced Java developers should have.
Based on my experience, the following are key skills to become an expert Java programmer.
Good knowledge of Java collection
Good knowledge of Java Networking API
Good knowledge of Java Concurrency
Good understanding of Object-oriented design patterns
Unit testing
Performance tuning, profiling, and JVM internals
Object-oriented analysis and design skill
UML
Good Coding skill
Good knowledge of frameworks likes Spring and Hibernate
Functional programming using Java 8 and beyond like Java 12
Everything is not mandatory, e.g. if you are a core Java developer, it’s not expected from you to know Spring, Hibernate, and REST or SOAP Web Services. Similarly, if you are a Java web developer, it’s not likely that you are a master of Java Concurrency, but yes, a good understanding of the basics is expected.
In general, I advise every Java programmer to go through The Complete Java Masterclass once to fill the gaps in their learning. It’s a comprehensive course and also most up-to-date, recently updated to cover recent Java changes.
12 Best Advanced Java Books for Intermediate Programmers
In the first part of this series, we’ll focus on four key areas, extremely important for intermediate and advanced Java programmers. They are multithreading, collections, JVM internals, and design patterns. My book recommendations will be based on that.
Since online courses have become a better medium of learning new technology, I’ll also share some online courses from Udemy and Pluralsight, which you can use along with these books to learn these advanced Java Programming skills.
1. Optimizing Java by Benjamin J. Evans
Performance is critical for any kind of application, be it an e-commerce website, a high-frequency trading application, or a video game built on Java.
As a senior developer, it’s expected from you to know how to measure and improve the performance of Java applications.
You should be able to profile your Java application, troubleshoot performance-related problems like OutOfMemoryError, and able to solve them. This book will give you all the information you need to acquire these skills.
It will teach you about tools, processes, and best practices for measuring and improving performance, GC tuning, and JVM internals. In short, a must-read the book to become an expert Java programmer.
And, If you want, you can further join the Java Application Performance and Memory Management course by Matt Greecroft and Virtual Programmers on Udemy to learn more about memory management, Garbage collection, and JVM tuning from experts.
2. Head First Design Patterns
The best book to learn design pattern in Java. I first read these books some 14 years back, and from then I have read it several times. It’s one of that book which you never mind reading a couple of pages.
What makes this book great is the head first style of teaching and content. The book contains so much information about design patterns, their motivation, how to implement them, tweak them, and with some non-trivial real-world examples.
As an intermediate programmer, it’s expected from you to know design patterns and to become an expert, you must understand design patterns, should be able to evaluate the pros and cons of different patterns, and just how to choose the right pattern for your problem.
Another good thing about this is books that now it is updated to cover Java SE 8 features like lambdas and Stream and how to implement those Object-Oriented design patterns in the modern Java way.
And, if you like online courses, then you can also check out the Basics of Software Architecture & Design Patterns in Java course on Udemy. It covers both design patterns and architecture, which is very important for an experienced Java developer. The course is also not expensive, you can get in just $10 in one of Udemy flash sale which happens every month.
3. Java Concurrency in Practice
This is one of the most recommended books in the Java ecosystem. I guess it should be the next one after Effective Java, which is definitely the must-read book for any Java developer, be it beginner, experienced, or expert.
If you remember, Java was one of the first mainline programming languages which came with the built-in support for multi-threading and concurrency. In those days, the decade of 1990 programmers is excited to see how easy it was to download a file in the background or showing animation.
Those features made Java famous, and now Concurrency is its single biggest strength, but it has become more complex.
It’s challenging to master concurrency, be it in Java or any other programming language, and that’s why you need a book that is accurate, thorough but yet readable.
The Java Concurrency in Practice fits all those criteria. Kudos to Brian Goetz and the team for creating such a valuable book. In short, if you want to become an expert Java programmer, you must read Java Concurrency in Practice twice.
And, if you like an online course, then Java Multithreading, Concurrency & Performance Optimization course by Michael Pogrebinsky is the best one along with this book. This is an excellent course for experienced Java developers to become an expert in Multithreading, Concurrency & Parallel programming in Java, with a strong emphasis on high performance.
4. Java Generics and Collections
Apart from Concurrency, the other shiny part of the Java API was its vast collection of built-in data structures like List, Set, hash tables, binary tree, etc. This is collectively known as the Java Collections framework, and any intermediate Java programmer needs to learn and master critical classes from this framework.
Every Java programmer knows about ArrayList and HashMap, intermediate knows about ConcurrentHashMap and CopyOnWriteArrayList, but the expert knows almost about everything.
They know how to choose the right collection for the job. They know about the list, queue, stack, set, map, and other data structures.
This book will give you all the information you need to acquire that knowledge. It’s a short and focused book and a must-read for experienced Java programmers.
And if you need a course, there is no better than then the Java Fundamentals: Collections by Richard Warburton. It explains the Java Collection framework in depth.
That’s all in this first part of must-read advanced Java books for intermediate and experienced Java programmers. In this part, I have recommended Java books on collections, multithreading, performance, and design patterns.
In the next part, I’ll show you the right books for learning object-oriented analysis and design, UML, improving coding skills, and also learning networking in Java. In the third and final part of this series, I’ll tell you about books to learn Java 8, Spring, Hibernate, and Unit testing. So, stay tuned and keep reading.







