12 Must Read Advance Java Books for Intermediate Programmers - Part 1

I often receive loads of email about Java book recommendations, something like, I have 2 years of experience, which Java book I should read to become an expert Java programmer, or I have 5 years of experience and want to become a Java expert, which books should I refer? It's interesting that most of the email I receive are not from beginners but from Java developers who has 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 expert 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 developer. Keeping those things in mind, In this three part series of Java book recommendation article, I'll share 10 to 12 books to develop skills which both an intermediate and advanced Java developer should have.

Based on my experience, following are key skills to become an expert Java programmer
  1. Good knowledge of Java collection
  2. Good knowledge of Java Networking API
  3. Good knowledge of Java Concurrency
  4. Good understanding of Object oriented design pattern 
  5. Unit testing
  6. Performance tuning, profiling and JVM internals
  7. Object oriented analysis and design skill
  8. UML
  9. Good Coding skill
  10. Good knowledge of frameworks likes Spring and Hibernate
  11. Java 8

Everything is not mandatory e.g. if you are core Java developer, it's not expected from you to know Spring, Hibernate, and REST or SOAP Web Service. Similarly, if you are Java web developer it's not expected that you are master of Java Concurrency but certainly a good understanding of basics are expected.

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 recommendation will be based upon that.

Java Performance The Definitive Guide
Performance is key 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 e.g. 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, process and best practices for measuring and improving performance, GC tuning and JVM internals. In short, a must read book to become an expert Java programmer.

Head First Design Patterns
The best book to learn design pattern in Java. I first read this book on 2005 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 pattern, should be able to evaluate pros and cons of different patterns and must how to chose right pattern for your problem. Another good thing about this is books that now it is updated to cover Java SE 8.

Java Concurrency in Practice
This is one of the most recommended books in 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 popular and now Concurrency is its single biggest strength, but it has become more complex. It's really difficult to master concurrency be it in Java or any other programming language and that's why you need a book which is accurate, thorough but yet readable. Java Concurrency in Practice fits all those criteria. Kudos to Brian Goetz and 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.

Java Generics and Collections
Apart from Concurrency the other shiny part of Java API was its huge collection of built-in data structures like List, Set, hash tables, binary tree etc. This is collectively known as Java Collections framework and it's extremely important for any intermediate Java programmer to learn and master key classes from this framework. Beginners know about ArrayList and HashMap, intermediate knows about ConcurrentHashMap and CopyOnWriteArrayList, but 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 compact and focused book and must read for experienced Java programmers.

That's all in this first part of must read advanced Java books for intermediate and experienced Java programmers. I have recommended Java books on the collection, multithreading, performance, and design pattern in this part. In the next part, I'll show you the good books for learning object-oriented analysis and design, UML, improving coding skill 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.

Best Java books for intermediate and experienced programmers

Related Programming Book Recommendations for Senior Developers
  • 10 Books Every Programmer Should Read (See here)
  • 10 Computer Algorithm Books Every Software Engineer Should Read (See here)
  • 5 Books to Improve Coding Skill of Programmer (See here)
  • 5 Great Book to Learn Java 8 (See here)
  • 5 Books to Learn Data Structure and Algorithm in Java (See here)


  1. Replies
    1. Hello @Night White, you can take a look at Java Virtual Specification. It has enough detail about how JVM works but its quite technical. If you want to have overview, look at the The Definitive Guide of Java performance, it explains JVM and its components e.g. JIT, Garbage collector etc quite well.

  2. This comment has been removed by the author.

  3. "Java Concurrency in Practice" is published in 2006, in era of Java 8, is this book still valid?