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

I often receive loads of email about Java books 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? These are just some of the examples but most of the requests are like that. It's interesting that 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 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 some 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. Functional programming using Java 8 and beyond like Java 12
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 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 Java 11 changes.



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

Since online courses have become a better medium to learn new technology, I'll also share some online courses from Udemy and Pluaralsight which you can use along with these books to learn these advanced Java Programming skills.



1. 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 the book to become an expert Java programmer.

And, If you want, you further join Understanding the Java Virtual Machine: Memory Management course on Pluarlsight to learn more about memory management, Garbage collection, and JVM tuning from experts.

Useful JVM garbage collection options.





2. Head First Design Patterns
The best book to learn design pattern in Java. I first read this 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 pattern, should be able to evaluate pros and cons of different patterns and just 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 features like lambdas and Stream and how to implement those Object-Oriented design pattern in modern Java way.


And, if you like online courses then you can also check out 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 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.

The 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.



And, if you like an online course then Java Concurrency in Practice Bundle course by Heinz Kabutz is the best one along this book. If you don't know, Heinz is a Java champion and his course is based upon the Java Concurrency in Practice book itself, with the purpose of making it easier to understand tricky concurrency concepts introduced in the book.



4. 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 the Java Collections framework and it's extremely important for any intermediate Java programmer to learn and master key classes from this framework.

Every Java programmer knows 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 a compact 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. 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.


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)
  • 10 Things Java Developers Should Learn in 2019 (see)
  • 20 Essential libraries for Java Developers (libraries)
  • 20 Books Java Programmers Can Read in 2019 (books)
  • 10 Frameworks for Java and Web Developers (frameworks)
  • 5 Free Courses to Learn Spring and Spring Boot Online (courses)
  • 10 Everyday tools for Java Programmers (tools)
  • 5 Books to Learn Data Structure and Algorithm in Java (books)

Thanks for reading this article so far. If you like these books then please share with your friends and colleagues. If you have any questions or feedback then please drop a note. 

10 comments:

  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.

      Delete
  2. This comment has been removed by the author.

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

    ReplyDelete
    Replies
    1. Hello Shobhit, Sorry for late reply. I have tried to answer your question in my blog post Is "Java Concurrency in Practice" still valid in era of Java 8. It was a great question and many others have also asked same question, I thought to answer in detail which merits a blog post. Please have a read and let me know how do you find it.

      Thanks
      Javin

      Delete
  4. thank you and which format of books you have read either soft copy or hard copy?any suggestion best way to read those books

    ReplyDelete
    Replies
    1. Hello Marees, I personally like to read hard copy of books but now a days I am also reading a lot of eBooks on my phone while commuting.

      Delete
  5. Hi... If u Have ebooks can you please email to my mail ID sandysanthosh101@gmail.com
    Thanks in advance!!

    ReplyDelete
  6. where is part 3 of this blog post ?

    ReplyDelete