Java Career Learning Path from Beginner to Advanced

Java career path

The Java ecosystem is vast, and we developers must know the technology fundamentals for our Java career learning path.

Knowing what to study is also a big challenge since there is so much to learn. Therefore, let’s explore the most important topics to study so we can become better software engineers.

Java Learning Path

The learning path from Java is extensive because technologies evolve very quickly. Fortunately, we don’t really need to learn every new technology that shows up. Instead, we need to be strategic by learning the essential fundamentals to help us learn any new technology faster.

New technologies are always created based on fundamentals. Even though learning fundamentals is more challenging than learning new technologies, we get a much better return on investment because it boosts our learning speed.

Let’s start exploring the concepts and technologies we need to learn with Java.

Algorithms

To start coding in any programming language, we first need to know the basics of algorithms. Simply put, algorithms are the logical instructions developers give the computer so we have an expected outcome.

Also, most companies will give developers a coding algorithm challenge to test their skills. Let’s see some resources where we can study algorithms:

The following video is from the famous channel FreeCodeCamp. You will learn an introduction to algorithms:
Algorithms and Data Structures Tutorial – Full Course for Beginners

The channel from Michael Sambol has many algorithms, and he explains them in about 5 minutes. It’s worth checking out:
Michael Sambol Channel

This channel, Mosh, is also perfect as he simply explains algorithms concepts. This video is a good grasp of many algorithms concepts:
Data Structures and Algorithms for Beginners

I also wrote a book with all the fundamental concepts needed to pass a coding challenge interview. You can get the book at the following link:

Java Interview Challenger

On top of learning the essential content from algorithms, I also recommend you solve the easy-to-medium coding challenges from one of the following platforms. The hard ones usually won’t be asked in a job interview:
Leetcode
HackerRank

The Algoexpert platform is also very good. You will solve lots of algorithms, and there will be a video explanation of the solution for each algorithm:
AlgoExpert

Object Oriented Programming

The Java programming language is mostly based on Object-Oriented Programming, and if you know it well, Java will be easy. Java is not as difficult as most people think. Let’s see some materials to help master this concept:

There is a good course on FreeCodeCamp. Check it out:
Intro to Object Oriented Programming – Crash Course

Learn important concepts from Object-Oriented programming in 7 minutes with Mosh:
Object-oriented Programming in 7 minutes | Mosh

This channel from Caleb Curry introduces OOP (Object-Oriented Programming) with Java
Object Oriented Programming in Java – All-in-One Tutorial Series!

Java Core

Every Java developer should know the main features of the Java programming language. Otherwise, developers will likely reinvent the wheel and create unnecessary code.

To learn the core features of Java, let’s see resources.

You can learn Java features very well by trying out the Java Challenges. There are many challenges there where you can learn the main Java features and improve your skills:
Java Code Challenges Videos

Telusko is a famous channel that helps developers understand the main features of a programming language. Telusko has many classes about Java features, and his didactic is pretty good. Check it out:

Java Tutorial For beginners

This course is from the Simplilearn channel:
Java Full Course

There is a course from Marcus Biel on FreeCodeCamp for beginners that is pretty good:
Learn Java 8 – Full Tutorial for Beginners

This is the AmigosCode channel, and there is good content for Java here:
Java Full Course [NEW]

There is also my book explaining the most important Java features with fun Java code challenges so you can test your skills and learn a lot more:

Java Challengers Book

Java 17 Java Challengers book cover

Databases

In any application, we will need to store and retrieve data. That’s foundational knowledge we have to have as software developers. The standard language database used to handle data is SQL, and that’s what we will explore here.

On FreeCodeCamp, there is a course with the fundamentals of SQL and Databases:
SQL Tutorial – Full Database Course for Beginners

In the Programming with Mosh channel, there is a course for the MySQL database:
MySQL Tutorial for Beginners [Full Course]

Another important concept about databases is the CAP theorem. Check it out the following video:
CAP Theorem Simplified

Database normalization with Decomplexify:
Learn Database Normalization – 1NF, 2NF, 3NF, 4NF, 5NF

There is a playlist with many videos from the Theoretical Computer Science channel explaining the Introduction to Databases:
Introduction to Databases

We also need to know how to create a database model when dealing with databases. There is a course for that on FreeCodeCamp:
Database Design Course – Learn how to design and plan a database for beginners

For more content on Databases, I wrote some articles that will help you have a broader view:
Choosing the Best Storage and Databases

Learn When to Use Specific Storage Paradigms for Systems Design

Learn When to Use Database Replica and Database Sharding for Systems Design

Dependency Management and software build with Maven

Maven is a tool for building, testing, and managing dependencies (libraries). It’s an essential tool to understand when developing a Java project. Let’s see some resources to learn it:

The DevLessons channel is a pretty new channel with good content to help you learn more about Maven:
Maven Full Course | Apache Maven Tutorial for Beginners

Another good video about Maven is the following one from Marco Codes:
Maven Tutorial – Crash Course

There is a series of videos from Maven from Simplilearn:
What Is Maven? | What Is Maven And How It Works? | Maven Tutorial For Beginners | Simplilearn

JUnit

Unit testing is trivial for any application. Unit tests are the fastest way to test our application per unit (per method). We can do that by using fake data and simulating the behavior we want in the application to ensure it’s working as expected.

Let’s see some YouTube videos that explain how to test our code.

In the following video, there is an introductory explanation from the Coding with John channel:
Java Unit Testing with JUnit – Tutorial – How to Create And Use Unit Tests

There is a good playlist from Java Brains about JUnit 5 as well, and it will help you create better tests:
JUnit 5 Basics

On FreeCodeCamp, there is a JUnit 5 crash course. Check it out:
Java Testing – JUnit 5 Crash Course

An excellent source for testing is the following book from Mauricio Aniche:

Effective Software Testing

Effective Software Testing Book Cover

Integration Tests

Integration Tests are the best way to test our application because we can test the application as a whole, and we will know for sure that the features we are testing are working.

Including Unit Tests and Integration tests in the software build cycle is an excellent idea. Let’s see some videos explaining some tools and concepts about Integration tests:

Spring Boot 3 Integration Testing With TestContainers | Junit 5 | JavaTechie

Dan Vega is a Java Champion with high-quality content on his channel about Java. The following is his video about Integration tests:
Spring Boot Testcontainers – Integration Testing made easy!

There is one more good quality video from JavaTechie explaining essential concepts from integration tests:
Spring Boot Integration Test with TDD | JUnit5 & H2 | JavaTechie

HTTP Concepts

When creating a web application, we need to know basic HTTP methods to exchange information. Let’s see some resources to understand the concepts of HTTP better.

There is a video explaining concepts from the HTTP protocol in the Traversy Media channel:
HTTP Crash Course & Exploration

The following video explains HTTP methods and also APIs. Knowing APIs is very important because in almost all the Java projects, we will need to create REST API endpoints:
Full HTTP Networking Course – Fetch and REST APIs in JavaScript

The client-server model is the most popular model for Java applications, and in the vast majority of cases, it uses HTTP. Check out the following article for more:
Mastering the Client-Server Model and Basic Internet Protocols

HTTPS is also crucial to understand because that’s how we make HTTP secure and what the industry uses. I created an article for that:

Java Web – (JSP) Java Server Pages

When working with JSP, we deal with basic web concepts. That’s why it’s important to know the basics and at least create a Java web application to understand how it works.

Let’s see some videos that help us understand JSP better.

The following is the luv2code channel, and he has a playlist teaching JSP:
JSP Tutorial

Telusko also has a playlist explaining JSP and servlets. Check out the following videos:
Introduction to Servlets

Clean Code Concepts

A good programmer needs to know how to create high-quality code. We spend ten times more time reading code than creating it, so we must first put effort into creating good code at first.

There are some basic techniques we can apply to create good-quality code. Let’s see some resources to help us with that.

There are some good videos from Uncle Bob explaining some principles of Clean code:
Clean Code – Uncle Bob – all lessons

The channel Programming with Mosh also has a good video about Clean Code:
Clean Code: Learn to write clean, maintainable and robust code

Solid

Solid principles are crucial to creating high-quality code. Those principles make code reusable, easier to read, and maintain.

Let’s explore some videos explaining those important concepts.

The examples from the following principles explain SOLID clearly and concisely:
SOLID Design Principles with Java Examples | Clean Code and Best Practices | Geekific

Another good video to learn SOLID is from AmigosCode. Check out the following video:
Learn SOLID Principles with CLEAN CODE Examples

SOLID principles explained by Alex Hyett:
SOLID Principles: Do You Really Understand Them?

Design Patterns

Design patterns are difficult to master when we lack enough knowledge of object-oriented programming. Most design patterns vastly use all the OOP concepts, but you will notice that they mainly use polymorphism.

Let’s see some good resources to study design patterns:

I created a Design patterns series explaining all the design patterns for real-world situations:
Design Patterns Saga

In this video, you will have a grasp of 10 design patterns in 10 minutes from the Fireship channel:
10 Design Patterns Explained in 10 Minutes

You can also learn some Design Patterns with Mosh in the following video:
Design Patterns in Plain English | Mosh Hamedani

Telusko also has videos explaining some design patterns with Java:
Design Patterns in Java Theory

In the Derek Banas channel, there is a detailed explanation of every design pattern. It’s worth it checking out:
Design Patterns Video Tutorial

Java Frameworks

There is no need to know all the Java frameworks deeply. Instead, it’s better to pick one and focus on it. Also, keep in mind that the concepts are very similar. So, if you master one of them, the others will be easier to learn.

If you are looking for a job and don’t know which one to pick, I recommend you start with Spring because there are many more job opportunities in Spring.

Spring

Nowadays, spring is the most popular framework for Java. Most companies use it because it’s robust and has everything we need to create Microservices with Java.

Let’s see some Spring videos:

Java Brains created a series of videos explaining the main concepts of Spring:
Spring Tutorial

There is another 6 hours of video with important Spring concepts for beginners. Check it out:
The ULTIMATE Guide to Spring Boot: Spring Boot for Beginners

There is a Spring tutorial from AmigosCode:
Spring Boot Tutorial | Full Course

There is an 8 hours course from the BoualiAli channel as well:
The ULTIMATE Spring Boot course | 8 HOURS Course

Jakarta EE

Jakarta is the new Java EE. Oracle used to own Java EE but gave the Java EE source code to the Java community and other companies. As Oracle owns the Java name, the Java community had to change everything from Java EE to Jakarta EE.

The Payara company, which owns the Payara application server derived from Glassfish, has a course about Jakarta EE:
Getting Started with Jakarta EE 9: Using Gradle

You can also check out the talks from the Java Champion Ivar:
Jakarta EE 10 Feature by Feature

There is the official Jakarta EE channel:
JakartaEE Channel

Quarkus

Quarkus is an incredible Java code stack that makes creating a Microservice easy. Let’s look at some high-quality resources to learn Quarkus.

My good friend Giuseppe Scaramuzzino has plenty of high-quality videos explaining Quarkus. It’s worth checking out:
Quarkus Concepts Playlist

This is an introductory video from FreeCodeCamp on Quarkus:
Java Web App with Quarkus and JPAStreamer

Another friend of mine and Java Champion, Sebastien Daschner, has a good video explaining Quarkus:
Why You Want to Code With Quarkus

There is also the official Quarkus channel, which I recommend for someone who knows Quarkus a little bit:
Official Quarkus Channel

Micronaut

Micronaut is a similar framework from Quarkus. It’s another powerful framework for creating cloud-native applications. Let’s look at some great resources for studying this technology.

The Java Champion Graeme Rocher is the creator of the Micronaut framework, and he has a lot of high-quality resources to help you learn Micronaut. Check out this video:
10 Incredible Things you can do with Micronaut & GraalVM By Graeme Rocher

There is a playlist from CodePractice explaining some Micronaut concepts:
Micronaut | Code Practice

Basics of Security – Oauth

Oauth is an industry-standard protocol for authorization. Therefore, it’s important to know the basics of it. There is no need to be a specialist, but knowing the basic flow will do for job interviews:

The ByteByByteGo channel has a good resource about Oauth. Check it out:
OAuth 2 Explained In Simple Terms

The Java Brains channel also has a good resource on Oauth:
What is OAuth really all about – OAuth tutorial – Java Brains

There is another good tutorial from OktaDev:
What is OAuth and why does it matter? – OAuth in Five Minutes

Containers with Docker

Docker is used by more than 80% of companies worldwide, and it helps deploy applications anywhere. Docker encapsulates the application deployment in a container that is isolated and independent from an external operating system.

Let’s explore some good resources to learn Docker.

Techworld with Nana has a vast range of high-quality content explaining DevOps technologies. She has a very good video explaining Docker:
Docker Crash Course for Absolute Beginners [NEW]

Docker Tutorial for Beginners [FULL COURSE in 3 Hours]

Ultimate Docker Compose Tutorial

In the Programming with Mosh channel, there is another beginner guide for Docker:
Docker Tutorial for Beginners

Software Automation with Jenkins

Most Java applications use Jenkins to automate the software build cycle. Jenkins will automate the build, test, code standards, and deployment from Java applications so we ensure the code is merged without problems. Let’s see some resources to help you learn more about Jenkins:

TechWorld with Nana has excellent resources for Jenkins. Check it out:
Jenkins Tutorial for Beginners

Complete Jenkins Pipeline Tutorial | Jenkinsfile explained

In the channel DevOps journey, there is another Jenkins tutorial:
Learn Jenkins! Complete Jenkins Course – Zero to Hero

On the channel SimpliLearn, there is more high-quality content to learn Jenkins:
Jenkins Full Course | Jenkins Tutorial For Beginners | Jenkins Tutorial | Simplilearn

Cloud Providers

The cloud is predominant in Java services and any application in the market. Therefore, we need to know the basics of it. Otherwise, it’s very difficult to tackle day-to-day work challenges.

You don’t need to study all of the cloud providers. If you know one well enough, it should be good for you to get a job. In any case, I will share here resources to learn the most used cloud providers in the market.

AWS – Amazon Web Services

Getting the AWS certifications is one way to learn it. Another one is to create your application on AWS. Let’s see some resources to study AWS:

On FreeCodeCamp, there is a full course for the AWS Certificate Cloud Practitioner:
AWS Certified Cloud Practitioner Certification Course (CLF-C01) – Pass the Exam!
AWS Certified Cloud Practitioner Certification Course (CLF-C02) – Pass the Exam!

FreeCodeCamp has another course to help you develop an application and deploy it on AWS:
AWS Cloud Complete Bootcamp Course

On Fireship, there is an explanation of 10 AWS services in 10 minutes:
Top 50+ AWS Services Explained in 10 Minutes

Google Cloud – GCP

Even though I have never worked with GCP, everyone who has worked with it says it’s easier to use than AWS and does pretty much the same.

Check out this course from FreeCodeCamp:
Google Cloud Associate Cloud Engineer Course – Pass the Exam!

There is also this course from Google Cloud Tech:
Google Cloud Essentials

Azure

Azure is gaining a lot of traction, and it’s very compatible with Java. It’s gaining a lot of space in the market, so it’s worth mentioning. Let’s look at some resources for learning it.

On Adam Marczak – Azure for Everyone channel, there is a good course on Azure:
AZ-900 | Microsoft Azure Fundamentals Full Course, Free Practice Tests, Website and Study Guides

FreeCodeCamp also has a good course on Azure:
Microsoft Azure Fundamentals Certification Course (AZ-900) UPDATED – Pass the exam in 8 hours!

Azure Developer Associate (AZ-204) — Full Course Pass the Exam!

The SimpliLearn Channel has 10 minutes video explaining the essentials of Azure:
What Is Azure? | Microsoft Azure Tutorial For Beginners | Microsoft Azure Training | Simplilearn

Oracle Cloud

Oracle Cloud is not very popular in the market but is still relevant because it’s known to be the most performant cloud provider. Let’s look at some resources to help us understand more about Oracle Cloud.

On FreeCodeCamp, there is a full course on Oracle Cloud:
The Oracle Foundations Associate Cloud Certification (PASS THE EXAM) – Full Course

There is a course from the Oracle Learning channel also:
Oracle Cloud Infrastructure Fundamentals

Basic Linux concepts

Linux is the predominant operating system in cloud machines. We often need to access the cloud machine remotely to perform basic actions. Learning the basics of Linux will help solve those problems in our daily work.

There is an introduction to Linux from the FreeCodeCamp channel:
Introduction to Linux – Full Course for Beginners

There is another course from Edureka with 11 hours of content on Linux:
Linux Full Course – 11 Hours [2024] | Linux Tutorial For Beginners | Linux Training | Edureka

Introduction to Linux – Full Course for Beginners

Systems Design

Nowadays, there will also be a Systems Design interview in most interviews. This means that we need to know how to design a System on the spot to pass in most software development interviews. Let’s see some resources about Systems Design:

There is an introductory course explaining the basics of Systems Design on FreeCodeCamp:
System Design for Beginners Course

There is a more complete course on the ByToByte channel playlist with more than 50 videos. Check it out:
Systems Design Fundamentals

On NeetCode you will see some similar examples of how they would be Systems Design interviews:
Design Youtube – System Design Interview

Summary

Remember the important Pareto principle when studying all these topics: You need 20% of the knowledge to solve 80% of the problems. With that in mind, we don’t need to learn everything from every technology described in this article.

A good example and proof that we don’t need all the knowledge to start using a tool is the Git version control. We use mostly git commit, git branch, git checkout, git push, git history, git merge, git rebase, git push -f, and some specific commands for edge cases. It’s not that much. Only with those commands and the understanding of the core Git concepts can we solve 80% of the problems.

Just make sure you know the essential concepts so you can solve most of the problems.

Let’s now recap the Java career learning path from beginners to advanced:

  • Algorithms: to solve computer problems with logic instructions.
  • Object-Oriented Programming: to organize the code in a more easily reusable way.
  • Java Core: use the Java features correctly, and do not reinvent the wheel by creating unnecessary code.
  • Databases: to store and retrieve persistent data.
  • Dependency Management and software build with Maven: to manage external libraries, build and test the application.
  • JUnit: to test code unitarily. This means testing the relevant methods independently.
  • Integration Tests: to test the application as a whole. This means using internal and external services.
  • HTTP Concepts: to exchange information in a web application.
  • Java Server Pages (JSP) is a low-level (without too much abstraction) way to create a Java web application.
  • Clean Code: to create reusable, more easily understandable, and maintainable code.
  • Design Patterns: to help with code reuse in an optimized and standardized way
  • Java Frameworks: These facilitate creating boilerplate code with less code. Examples are Spring, Jakarta EE, Quarkus, and Micronaut.
  • Basics of Security – Oauth: for application authorization
  • Containers with Docker: to isolate an application service deployed within an independent container.
  • Software Automation with Jenkins: to build, analyze code quality, test, and deploy code.
  • Cloud Providers: to use cloud services and deploy applications in it.
  • Systems Design: to design systems with the right technologies.
Written by
Rafael del Nero
Join the discussion