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 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 an intermediate and advanced Java developer should have.
Based on my experience, the following are key skills to become an expert Java programmer.
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.
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.
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 further join 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.
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 an intermediate and advanced Java developer 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 pattern
- 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
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 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 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 further join 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.
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.
4. Java Generics and Collections
Apart from Concurrency, the other shiny part of 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. 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 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.
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 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.
Related Programming Book Recommendations for Senior Developers
Thanks for reading this article so far. If you like these books, then please share them with your friends and colleagues. If you have any questions or feedback, then please drop a note.
P. S. - If you are looking for some free Java courses to take your Java skills to the next level, you can take a look at my list of 10 Free Java Courses for intermediate programmers and developers. It not only contains free tutorials on core Java but also free courses to learn essential Java tools like Jenkins, Mockito, Docker, Kubernetes, and others.
- The Complete Java Developer RoadMap (tutorial)
- 10 Books Every Programmer Should Read (See here)
- 10 Computer Algorithm Books Every Programmer Should Read (See here)
- 5 Books to Improve Coding Skill of Programmer (See here)
- 10 Things Java Developers Should Learn (see)
- 10 Advanced Core Java Courses for Experienced Programmers (courses)
- 20 Essential libraries for Java Developers (libraries)
-
20 Books Java Programmers Can Read (books)
- 10 Frameworks for Java and Web Developers (frameworks)
- 10 Books Every Experienced Programmer should read (books)
- 5 Free Courses to Learn Spring and Spring Boot Online (courses)
- 10 Everyday tools for Java Programmers (tools)
- 10 Advanced Java Books for Senior Developers (books)
- 5 Books to Learn Data Structure and Algorithm in Java (books)
- Top 5 Courses to learn Docker and Kubernetes (courses)
- 21 Tech Skills for Java Developers to Learn and Master (skills)
Thanks for reading this article so far. If you like these books, then please share them with your friends and colleagues. If you have any questions or feedback, then please drop a note.
P. S. - If you are looking for some free Java courses to take your Java skills to the next level, you can take a look at my list of 10 Free Java Courses for intermediate programmers and developers. It not only contains free tutorials on core Java but also free courses to learn essential Java tools like Jenkins, Mockito, Docker, Kubernetes, and others.
how to lean JVM?
ReplyDeleteHello @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.
DeleteThis comment has been removed by the author.
ReplyDelete"Java Concurrency in Practice" is published in 2006, in era of Java 8, is this book still valid?
ReplyDeleteHello 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.
DeleteThanks
Javin
thanks
ReplyDeletethank you and which format of books you have read either soft copy or hard copy?any suggestion best way to read those books
ReplyDeleteHello 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.
DeleteHi... If u Have ebooks can you please email to my mail ID sandysanthosh101@gmail.com
ReplyDeleteThanks in advance!!
where is part 3 of this blog post ?
ReplyDelete