Want to become better at java than the pros? Follow this java roadmap in 2023…

Sahin Sarkar
9 min readJun 9, 2022

Java is such a popular and mature language that there is more than sufficient content around it. Be it technical content, popular open source libraries around them, getting java jobs, comparison content with other langugages, you name it. A search of “java” on the internet gave me about 1,56,00,00,000 results when I did the search.

Too many content around java

What this blog is NOT

There is a subcategory of java content that pervades the entire internet. Especially for freshers. That is, the books to learn java. Or more than that, those articles with the title “Resources to learn java”. I’m not demeaning them, rather I believe that reading books is one of the best ways to learn any programming language in a structured manner and in considerable depth. But such articles mostly throws a random collection of books at the learner and lets them figure out the order in which to read them.

This blog is also NOT one of those articles which mention “java roadmap” in their title and then get distracted and list down every technology in existence. Or those ones which specify every construct of the language in too fine a detail.

Learners get confused by too many “java learning content”

From my earlier blogs, you may be knowing that I am a proponent of spending time to learn stuff in depth and develop good competencies in it. And I’m also in favour of dedicating enough time to learning to develop competencies to such a level. This is also not another random collection of resources, it’s a specific roadmap to learn the language to the level of a developer who has 6-7 years of experience working with the language. However, to become like a developer of such experience, you definitely have to dedicate time (at least a year) to learn things in a proper manner. Here, I propose to not let you waste your learning time by “figuring it out” or doing “on-the-job learning”. Let’s stop pretending that we can work and learn stuff properly at the same time. So here’s the complete roadmap. Follow this and along with the tips mentioned at the end, you should be on your way to become a java pro in 1/5th of the time it takes other developers.

The roadmap

TL;DR — The short version

I have mentioned resources and described their contents as well. But on a high level, we need to learn java in 3 phases: core java, design patterns, and java performance.

High level roadmap to learn java

And now, here goes the list of books to go through in line with the roadmap.

(BTW, the links to these books are in accordance with #paidpartnership with Amazon via its affiliate program. Which means that if you buy any book by clicking these links, I will get a percentage of the cost, however, YOU WON’T BE CHARGED A RUPEE MORE. So if you actually need to buy the book, please buy it from these links as this will be a support from you to me, and that too, AT ZERO COST TO YOU.)

The core language

  1. Core Java volume I and II by Cay Horstmann

The books can be bought from Amazon (Core Java vol 1) and (Core Java vol 2):

Reading these books cover to cover would give you a very good grasp of the language landscape. The explanation is quite clear for a book covering so much. It has also covered the nuances of language constructs and pitfalls quite well. These books are filled with code samples, and the great thing about those code is that the author never lists it just to demonstrate the working of a feature. But those listings would almost always be written to demonstrate how a given feature applies to a real-world use case. Lastly, you don’t just learn the language, but also the libraries and what is possible with java, especially in vol 2.

2. Effective Java by Joshua Bloch

This book can be bought here. This book is all about using effective and efficient java constructs to do certain tasks which come up quite frequently during work. It also mentions why the specific way they are using to do the task is the best way to do it, and why the other ways don’t work as well.

Reading and practicing the contents of the above 2 books will burn the syntax, the most effective idioms and the usage patterns into your brain permanently. The key is to read, PRACTICE and THINK. By now, you will have learned how to THINK in java, instead of in english. There is one more book to learn deeply one of the hard topics in java, which is concurrency.

3. Java Concurrency in Practice by Brian Goetz

This book can be bought here. This is a book which discusses the java concurrency constructs in detail, and clears a lot of misconceptions that people generally have regarding how threads and concurrency work in java. Reading this may not give you the feeling that concurrency is easy, but you will have crystal clear knowledge of exactly what happens when you use concurrency objects in particular ways. Also, it shows the correct ways to implement certain popular concurrency requirements.

Go through this blog to understand how can this book still help you, even if it is an older book.

After completing till here, you would become an equivalent of a 3 year experienced java developer.

Now, you are almost completely done with java language and its applications to solve different kinds of problems. Now we move on to learning design patterns in java. Till now, you learned about the idioms, but now you need to learn how to organise the java entities (classes, objects and interfaces etc), so as to achieve readability and flexibility of the program. This is also called low level design which would be the official term interviewers use to test your skills in this field.

Low Level Design

Next comes the low level design part. For that, I would recommend the following books. They deal with LLD from the java perspective:

  1. Head First Object-Oriented Analysis and Design by Brett D. McLaughlin, David West and Gary Pollice

It can be bought here. This book mainly deals with the PRINCIPLES of a good program design in java. As with all Head First books, this one is written in a very lucid and easy to understand manner. The authors tend to use multiple medium to explain a concept, so that it completely solidifies in the mind. Don’t skip this one, as this would also prepare you to learn design patterns, which should be learned from the next book.

2. Design Patterns by Erich Gamma

Get this book here. This is THE BOOK to learn design patterns. All the core design patterns have been dealt with in a lot detail here. However, this is definitely not a beginner book. And that’s where the previous book comes in. It discusses the patterns in an encyclopaedic format along with their applications. Also, the examples have been implemented in a language called Smalltalk. It is a pure object oriented language almost like java is.

When you have gone through the above 2 books, you will be a practical master at low level design in java. This should give you further confidence when approaching complex technical code designs and patterns that you may come across in your day-to-day work. Also, you would be able to apply these patterns to new problems presented to you at work.

After completing learning from this section, you would become an equivalent of a 4 year java developer.

Java Performance

Now it’s time to learn about java performance. This section will prepare you to understand how exactly java works under the hood, at the JVM level. You will also learn to tune the performance of the JVM and also develop code in a manner so as to be as performant as possible. Go through the following books to learn them.

  1. Java Performance — In-Depth Advice for Tuning and Programming Java 8, 11, and Beyond by Scott Oaks

Buy this book here. In this book, the author takes the approach that anyone who works with Java should know how code behaves in the JVM — including the tunings to improve performance. This updated second edition helps you obtain in-depth knowledge of Java application performance using both the JVM and the Java platform.

2. Optimizing Java: Practical Techniques for Improved Performance Tuning by Benjamin J Evans and James Gough

Buy this book here. If the previous book was more about theory, this is more about practical techniques that you would be using on the job to measure and improve performance of java applications. This guide is the “missing link” that aims to move Java performance tuning from the realm of guesswork and folklore to an experimental science. You will learn how to approach performance problems in a consistent and systematic way, resolve production performance issues by learning core Java performance topics, and to identify and resolve performance issues before encountering them in production.

After completing learning from the books in this section, you would become the equivalent of a 7 YEAR experienced java developer!!!

If you read it till this far, I would implore you to learn java in depth and rock your work and career. Don’t learn just the basics on the job and suffer with confidence issues. I promise you, if you read through these books in the order I have mentioned here and practice them, then you would be so good that you will be known as the java go-to guy in your workplace.

Congratulations, this is the entire roadmap that I feel can make even a fresher an equivalent of a 7 or 8 year experience java developer in a relatively short span of 1.5 years. Because that’s the average time I estimate people would take to learn and absorb everything from the material mentioned. And having the knowledge of a 7 year experience guy in 1.5 years is not a bad deal to me at all. I wish I had this kind of a roadmap when I was first starting out. I couldn’t use this during my time, but you most certainly can. So go ahead and start learning java in depth.

P.S: If you want to get further guidance on how to properly learn about technical subjects, please go through these links. These discuss the practical ways that can be used to learn anything in such a way that it will burn them into your mind permanently.

Learn tech in depth — part 1

Learn tech in depth — part 2

Learn tech in depth — part 3

P.P.S: If you think that this article has delivered great value to you, please support me by buying me a coffee.

--

--

Sahin Sarkar

Learning and practicing a good balance of technology and business.