ποΈ Click to Navigate
Section
Description
π― Overview
What this roadmap covers
πΊοΈ Visual Roadmap
Complete learning path visualization
π Phase 1: Fundamentals
Core Java basics
π Phase 2: Advanced Java
OOP, Collections, Concurrency
π Phase 3: Web Development
Spring Boot, REST APIs
π₯ Phase 4: Enterprise
Microservices, Cloud
π Phase 5: Mastery
System Design, Expert Topics
πΌ Projects Portfolio
50+ projects with source code
π€ Interview Preparation
Questions, Tips, Resources
π Free Resources
Videos, Repos, Books, Courses
π‘ Tips & Tricks
Pro tips from experts
π€ Contributing
How to contribute
"The best way to learn Java is to write Java code every single day."
β
Complete Beginners starting from zero
β
Self-taught Developers wanting structure
β
Students preparing for placements
β
Professionals switching to Java
β
Developers upgrading their skills
π― Master Java 21 LTS features
π― Build production-ready applications
π― Deploy to cloud (AWS/GCP/Azure)
π― Clear technical interviews
π― Land your dream Java job
Metric
Value
β±οΈ Total Duration
12 Months (48 Weeks)
π Learning Phases
5 Comprehensive Phases
πΌ Projects
50+ Real-World Projects
π¬ Video Hours
500+ Hours Free Content
π Resources
200+ Curated Links
π€ Interview Questions
500+ Questions Covered
π― JAVA DEVELOPER ROADMAP 2026
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 1: FUNDAMENTALS (Weeks 1-8) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β Java β β β OOP β β β Control β β β Methods β β
β β Basics β β Intro β β Flow β β Arrays β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 2: ADVANCED JAVA (Weeks 9-16) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β βAdvanced β β βCollectionsββ β Streams β β βConcurr- β β
β β OOP β βFramework β β Lambda β β ency β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 3: WEB DEVELOPMENT (Weeks 17-24) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β JDBC β β β Spring β β β REST β β β Spring β β
β β Maven β β Boot β β APIs β βSecurity β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 4: ENTERPRISE (Weeks 25-32) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β Micro- β β β Docker β β β CI/CD β β β Cloud β β
β βservices β β K8s β β DevOps β βAWS/GCP β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PHASE 5: MASTERY (Weeks 33-48) β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
β β System β β β Perfor- β β βInterviewβ β β EXPERT β β
β β Design β β mance β β Prep β β READY β β
β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Phase 1: Java Fundamentals (Weeks 1-8)
Week 1-2: Getting Started
Week 7-8: Arrays & Strings
π¬ Free Video Resources
Resource
Platform
Duration
Link
Java Full Course 2025
Bro Code
12 Hours
βΆοΈ Watch
Java Tutorial for Beginners
Programming with Mosh
2. 5 Hours
βΆοΈ Watch
Complete Java Course
freeCodeCamp
12 Hours
βΆοΈ Watch
Java Fundamentals
Telusko
150+ Videos
βΆοΈ Playlist
Java for Beginners
Amigoscode
3 Hours
βΆοΈ Watch
#
Project
Skills
Difficulty
Source Code
1
Calculator App
Variables, Operators, Scanner
β
GitHub
2
Number Guessing Game
Loops, Random, Conditionals
β
GitHub
3
Temperature Converter
Methods, Input/Output
β
GitHub
4
Student Grade Calculator
Arrays, Methods
ββ
GitHub
5
Simple ATM System
OOP Basics, Classes
ββ
GitHub
π― Pro Tip: Practice coding for at least 2 hours daily. Type out code manually instead of copy-pasting.
// π Quick Reference: Hello World
public class HelloWorld {
public static void main (String [] args ) {
System .out .println ("β Hello, Java Developer!" );
}
}
π Phase 2: Advanced Java (Weeks 9-16)
Week 11-12: Collections Framework
Week 13-14: Modern Java Features
π¬ Free Video Resources
#
Project
Skills
Difficulty
Source Code
6
Library Management System
OOP, Collections
ββ
GitHub
7
Bank Account System
Inheritance, Polymorphism
ββ
GitHub
8
Employee Management
Collections, Streams
βββ
GitHub
9
File Processor
Streams, Lambda, I/O
βββ
GitHub
10
Multi-threaded Downloader
Concurrency, Threads
βββ
GitHub
// π Lambda & Streams Example
List <String > names = Arrays .asList ("Alice" , "Bob" , "Charlie" , "David" );
names .stream ()
.filter (name -> name .length () > 3 )
.map (String ::toUpperCase )
.sorted ()
.forEach (System . out ::println );
// π Virtual Threads (Java 21)
try (var executor = Executors . newVirtualThreadPerTaskExecutor ()) {
IntStream .range (0 , 10_000 ).forEach (i -> {
executor .submit (() -> {
Thread .sleep (Duration .ofSeconds (1 ));
return i ;
});
});
}
π Phase 3: Web Development (Weeks 17-24)
Week 17-18: Build Tools & Database
Week 19-20: Spring Boot Fundamentals
Week 21-22: REST API Development
Week 23-24: Data & Security
π¬ Free Video Resources
#
Project
Skills
Difficulty
Source Code
11
Todo REST API
Spring Boot, REST
ββ
GitHub
12
Blog Platform
Spring MVC, JPA
βββ
GitHub
13
E-Commerce Backend
Full CRUD, Security
ββββ
GitHub
14
User Auth System
JWT, Spring Security
βββ
GitHub
15
Expense Tracker API
REST, JPA, Validation
βββ
GitHub
// π Spring Boot REST Controller
@ RestController
@ RequestMapping ("/api/v1/users" )
public class UserController {
@ Autowired
private UserService userService ;
@ GetMapping
public ResponseEntity <List <User >> getAllUsers () {
return ResponseEntity . ok (userService .findAll ());
}
@ PostMapping
public ResponseEntity <User > createUser (@ Valid @ RequestBody UserDto userDto ) {
return ResponseEntity .status (HttpStatus .CREATED )
. body (userService .create (userDto ));
}
@ GetMapping ("/{id}" )
public ResponseEntity <User > getUserById (@ PathVariable Long id ) {
return ResponseEntity .ok (userService .findById (id ));
}
}
// π JPA Entity
@ Entity
@ Table (name = "users" )
public class User {
@ Id
@ GeneratedValue (strategy = GenerationType .IDENTITY )
private Long id ;
@ Column (nullable = false , unique = true )
private String email ;
@ ManyToOne (fetch = FetchType .LAZY )
@ JoinColumn (name = "department_id" )
private Department department ;
}
π₯ Phase 4: Enterprise Development (Weeks 25-32)
Week 25-26: Microservices
Week 27-28: Messaging & Async
Week 29-30: Containerization
Week 31-32: CI/CD & Cloud
π¬ Free Video Resources
Resource
Platform
Duration
Link
Microservices with Spring
Java Brains
30+ Videos
βΆοΈ Playlist
Docker for Java Devs
Amigoscode
3 Hours
βΆοΈ Watch
Kubernetes Tutorial
TechWorld with Nana
4 Hours
βΆοΈ Watch
Apache Kafka Tutorial
Confluent
2 Hours
βΆοΈ Watch
GitHub Actions CI/CD
freeCodeCamp
2 Hours
βΆοΈ Watch
#
Project
Skills
Difficulty
Source Code
16
Microservices E-commerce
Spring Cloud, Docker
ββββ
GitHub
17
Event-Driven Order System
Kafka, Spring Boot
ββββ
GitHub
18
CI/CD Pipeline Project
GitHub Actions, Docker
βββ
GitHub
19
Kubernetes Deployment
K8s, Helm
ββββ
GitHub
20
Cloud-Native App
AWS/GCP, Spring Cloud
βββββ
GitHub
# π Dockerfile for Spring Boot
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY target/*. jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app. jar"]
# π docker-compose.yml
version : ' 3.8'
services :
app :
build : .
ports :
- " 8080:8080"
environment :
- SPRING_PROFILES_ACTIVE=prod
depends_on :
- postgres
postgres :
image : postgres:15-alpine
environment :
POSTGRES_DB : myapp
POSTGRES_USER : user
POSTGRES_PASSWORD : password
volumes :
- postgres_data:/var/lib/postgresql/data
volumes :
postgres_data :
# π GitHub Actions CI/CD
name : Java CI/CD
on :
push :
branches : [ main ]
pull_request :
branches : [ main ]
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
- name : Set up JDK 21
uses : actions/setup-java@v4
with :
java-version : ' 21'
distribution : ' temurin'
- name : Build with Maven
run : mvn clean package -DskipTests
- name : Run Tests
run : mvn test
- name : Build Docker Image
run : docker build -t myapp: ${{ github.sha }} .
π Phase 5: Mastery & Specialization (Weeks 33-48)
Week 33-36: System Design
Week 37-40: Performance & Testing
Week 41-44: Advanced Topics
Week 45-48: Interview & Career
π¬ Free Video Resources
π― 50+ Real-World Projects with Source Code
π± Beginner Projects (1-15)
#
Project
Description
Tech Stack
Source Code
1
Calculator
Basic arithmetic operations
Core Java
View Code
2
Number Guessing
Random number game
Java Basics
View Code
3
Tic Tac Toe
2-player game
Arrays, OOP
View Code
4
ATM Simulator
Banking operations
OOP, Classes
View Code
5
Student Management
CRUD operations
Collections
View Code
6
Quiz Application
MCQ quiz system
OOP, File I/O
View Code
7
Contact Manager
Address book
Collections, Serialization
View Code
8
Library System
Book management
OOP, Collections
View Code
9
Currency Converter
Exchange rates
API calls, JSON
View Code
10
Weather App
Weather data display
REST API, JSON
View Code
11
File Organizer
Auto organize files
File I/O, Streams
View Code
12
Password Generator
Secure passwords
Random, Strings
View Code
13
Expense Tracker CLI
Track expenses
Collections, File I/O
View Code
14
Text Analyzer
Word count, stats
Streams, Lambda
View Code
15
Inventory System
Stock management
OOP, Collections
View Code
π Intermediate Projects (16-35)
#
Project
Description
Tech Stack
Source Code
16
REST API Todo
Todo CRUD API
Spring Boot
View Code
17
Blog Platform
Full blog backend
Spring MVC, JPA
View Code
18
User Auth System
JWT authentication
Spring Security
View Code
19
E-Commerce API
Shopping cart API
Spring Boot, JPA
View Code
20
Hotel Booking
Reservation system
Spring Boot, MySQL
View Code
21
Employee Portal
HR management
Spring Boot, REST
View Code
22
Online Banking
Banking services
Spring Security, JPA
View Code
23
Food Delivery API
Order management
Spring Boot, Redis
View Code
24
Social Media API
Posts, Comments
Spring Boot, MongoDB
View Code
25
Event Management
Event booking
Spring Boot, JPA
View Code
26
Movie Database
Movie catalog API
Spring Boot, REST
View Code
27
Task Management
Project tasks
Spring Boot, WebSocket
View Code
28
Chat Application
Real-time chat
Spring WebSocket
View Code
29
File Storage Service
Upload/download
Spring Boot, AWS S3
View Code
30
URL Shortener
Link shortening
Spring Boot, Redis
View Code
31
Notification Service
Email/SMS alerts
Spring Boot, Kafka
View Code
32
Payment Gateway
Payment processing
Spring Boot, Stripe
View Code
33
Survey Application
Create surveys
Spring Boot, JPA
View Code
34
Recipe API
Recipe sharing
Spring Boot, REST
View Code
35
Fitness Tracker
Workout logging
Spring Boot, JPA
View Code
π₯ Advanced Projects (36-50)
#
Project
Description
Tech Stack
Source Code
36
Microservices E-commerce
Full platform
Spring Cloud, Docker
PiggyMetrics
37
Event-Driven Orders
Async processing
Kafka, Spring Boot
View Code
38
Service Mesh Demo
Istio integration
Kubernetes, Istio
View Code
39
Real-time Analytics
Data streaming
Kafka, Spark
View Code
40
Distributed Cache
Caching service
Redis, Spring
View Code
41
API Gateway
Gateway service
Spring Cloud Gateway
View Code
42
Netflix Clone Backend
Video streaming
Spring Boot, S3
View Code
43
Uber Clone Backend
Ride sharing
Spring Boot, WebSocket
View Code
44
Twitter Clone
Social platform
Spring Boot, Redis
View Code
45
Kubernetes Operator
Custom K8s operator
Java Operator SDK
View Code
46
GraphQL API
GraphQL service
Spring GraphQL
View Code
47
gRPC Services
High-perf APIs
gRPC, Spring
View Code
48
ML Integration
AI/ML service
Spring Boot, TensorFlow
View Code
49
Blockchain Demo
Simple blockchain
Java Core
View Code
50
Full SaaS Platform
Complete SaaS
Spring Cloud, K8s, AWS
View Code
π€ Interview Preparation
π― 500+ Questions | Tips | Mock Interviews
πΉ OOP Concepts (50 Questions)
#
Question
Difficulty
1
What are the four pillars of OOP?
β
2
Difference between Abstract class and Interface?
ββ
3
What is method overloading vs overriding?
β
4
Explain the super keyword with examples
ββ
5
What are sealed classes in Java 17?
βββ
6
Explain SOLID principles with examples
βββ
7
What is the diamond problem? How does Java solve it?
βββ
8
Difference between composition and inheritance?
ββ
9
What is polymorphism? Types of polymorphism?
ββ
10
Explain encapsulation with real-world example
β
π View All 50 OOP Questions β
πΉ Collections Framework (40 Questions)
#
Question
Difficulty
1
Difference between ArrayList and LinkedList?
ββ
2
How HashMap works internally?
βββ
3
Difference between HashMap and ConcurrentHashMap?
βββ
4
What is fail-fast and fail-safe iterator?
βββ
5
When to use TreeMap vs HashMap?
ββ
6
How HashSet ensures uniqueness?
ββ
7
Explain Comparable vs Comparator
ββ
8
What is the load factor in HashMap?
βββ
9
How to make a collection thread-safe?
βββ
10
Difference between poll() and remove() in Queue?
ββ
π View All 40 Collections Questions β
πΉ Multithreading (40 Questions)
#
Question
Difficulty
1
Difference between Thread and Runnable?
ββ
2
What is synchronized keyword?
ββ
3
Explain volatile keyword
βββ
4
What is deadlock? How to prevent it?
βββ
5
Difference between wait() and sleep()?
ββ
6
What is thread pool? Why use it?
ββ
7
Explain CompletableFuture
βββ
8
What are Virtual Threads in Java 21?
βββ
9
What is ReentrantLock?
βββ
10
Explain Fork/Join framework
ββββ
πΉ Spring Boot (60 Questions)
#
Question
Difficulty
1
What is Spring Boot? Benefits over Spring?
β
2
Explain Dependency Injection
ββ
3
Difference between @Component, @Service, @Repository?
ββ
4
What is @SpringBootApplication?
β
5
Explain Spring Bean lifecycle
βββ
6
What is @Transactional? How does it work?
βββ
7
Difference between @RestController and @Controller?
ββ
8
Explain Spring Security authentication flow
βββ
9
What is Spring Cloud? Components?
βββ
10
How to handle exceptions in Spring Boot?
ββ
π― Interview Preparation Resources
Resource
Type
Link
Java Interview Questions - GeeksforGeeks
Website
Visit
Spring Interview Guide
GitHub
Visit
Java Interview Prep 2025
Dev. to
Visit
System Design Primer
GitHub
Visit
LeetCode Java Problems
Platform
Visit
HackerRank Java
Platform
Visit
π Free Learning Resources
π― Curated Collection of 200+ Free Resources
Repository
Description
Link
Awesome Java
Curated list of frameworks
Visit
Java Design Patterns
All design patterns
Visit
The Algorithms - Java
Algorithms implementation
Visit
JavaGuide
Complete Java guide (Chinese)
Visit
Advanced Java
In-depth Java knowledge
Visit
Spring Boot Examples
100+ examples
Visit
Free Programming Books
Thousands of free books
Visit
Developer Roadmap
Complete dev roadmaps
Visit
System Design Primer
System design guide
Visit
Interview Questions
Java interview prep
Visit
π Documentation & Tutorials
Resource
Description
Link
Oracle Java Docs
Official documentation
Visit
Baeldung
Java & Spring tutorials
Visit
GeeksforGeeks Java
Tutorials & problems
Visit
Spring. io Guides
Official Spring guides
Visit
Java Point
Comprehensive tutorials
Visit
Tutorialspoint
Java tutorials
Visit
Roadmap.sh Java
Interactive roadmap
Visit
DevDocs Java
API documentation
Visit
Book
Author
Link
Think Java
Allen Downey
Read
Java Notes for Professionals
GoalKicker
Download
Introduction to Programming in Java
Sedgewick & Wayne
Read
Java, Java, Java
Morelli & Walde
Read
Platform
Focus
Link
LeetCode
DSA & Interviews
Visit
HackerRank
Java Challenges
Visit
CodeChef
Competitive Programming
Visit
Exercism
Mentored Learning
Visit
CodingBat
Java Practice
Visit
Project Euler
Math + Programming
Visit
Codeforces
Competitive Programming
Visit
π― Pro Tips from Industry Experts
β¨οΈ IDE Shortcuts (IntelliJ IDEA)
Shortcut
Action
Ctrl + Shift + Enter
Complete statement
Ctrl + Alt + L
Reformat code
Ctrl + /
Comment line
Ctrl + D
Duplicate line
Ctrl + Shift + F
Find in project
Alt + Enter
Quick fix
Ctrl + N
Find class
Ctrl + Shift + N
Find file
Shift + F6
Rename
Ctrl + Alt + M
Extract method
π― Daily Practice Routine
π
RECOMMENDED DAILY SCHEDULE
Morning (1-2 hours):
βββ π Theory/Concept Learning
βββ π Notes & Documentation
Afternoon (2-3 hours):
βββ π» Coding Practice
βββ π¨ Project Work
βββ π Debugging Skills
Evening (1 hour):
βββ π¬ Watch Tutorial Videos
βββ π Read Documentation
βββ π€ Review & Reflect
π§ Coding Best Practices
// β
DO: Use meaningful variable names
int numberOfStudents = 25 ;
String customerEmailAddress = "user@example.com" ;
// β DON'T: Use cryptic names
int n = 25 ;
String s = "user@example.com" ;
// β
DO: Use constants for magic numbers
private static final int MAX_RETRY_ATTEMPTS = 3 ;
private static final double TAX_RATE = 0.18 ;
// β DON'T: Hardcode values
if (attempts > 3 ) { ... }
double tax = price * 0.18 ;
// β
DO: Use Optional to handle null
public Optional <User > findUserById (Long id ) {
return userRepository .findById (id );
}
// β DON'T: Return null
public User findUserById (Long id ) {
return userRepository . findById (id ).orElse (null );
}
// β
DO: Use try-with-resources
try (BufferedReader reader = new BufferedReader (new FileReader (file ))) {
// Process file
}
// β DON'T: Manually close resources
BufferedReader reader = null ;
try {
reader = new BufferedReader (new FileReader (file ));
// Process file
} finally {
if (reader != null ) reader .close ();
}
// β
DO: Use Stream API for collections
List <String > names = users .stream ()
.filter (user -> user .getAge () > 18 )
.map (User ::getName )
.sorted ()
.collect (Collectors .toList ());
// β DON'T: Use verbose loops for simple operations
List <String > names = new ArrayList <>();
for (User user : users ) {
if (user .getAge () > 18 ) {
names .add (user .getName ());
}
}
Collections .sort (names );
π₯ Java 21 Modern Features Cheatsheet
// π Records (Immutable Data Classes)
public record User (String name , String email , int age ) {}
// Auto-generates: constructor, getters, equals(), hashCode(), toString()
// π Pattern Matching for switch
String result = switch (obj ) {
case Integer i -> "Integer: " + i ;
case String s -> "String: " + s ;
case null -> "Null value" ;
default -> "Unknown type" ;
};
// π Sealed Classes
public sealed class Shape permits Circle , Rectangle , Triangle {}
public final class Circle extends Shape {}
public final class Rectangle extends Shape {}
public non-sealed class Triangle extends Shape {}
// π Text Blocks (Multi-line Strings)
String json = """
{
"name": "John",
"email": "john@example.com",
"age": 30
}
""" ;
// π Virtual Threads (Project Loom)
try (var executor = Executors .newVirtualThreadPerTaskExecutor ()) {
IntStream .range (0 , 10_000 ).forEach (i -> {
executor .submit (() -> {
// Each task runs in its own virtual thread
processRequest (i );
return i ;
});
});
}
// π Sequenced Collections (Java 21)
SequencedCollection <String > list = new ArrayList <>();
list .addFirst ("First" );
list .addLast ("Last" );
String first = list .getFirst ();
String last = list .getLast ();
SequencedCollection <String > reversed = list .reversed ();
// π Record Patterns
record Point (int x , int y ) {}
if (obj instanceof Point (int x , int y )) {
System .out .println ("x = " + x + ", y = " + y );
}
π Common Mistakes to Avoid
β Mistake
β
Better Approach
// String concatenation in loop
String result = "" ;
for (String s : list ) {
result += s ;
}
// Use StringBuilder
StringBuilder sb = new StringBuilder ();
for (String s : list ) {
sb .append (s );
}
String result = sb .toString ();
// Catching generic Exception
try {
// code
} catch (Exception e ) {
e .printStackTrace ();
}
// Catch specific exceptions
try {
// code
} catch (IOException e ) {
logger .error ("IO error" , e );
throw new ServiceException (e );
}
// Not using equals() properly
if (str == "hello" ) { }
if (str .equals (null )) { }
// Safe string comparison
if ("hello" .equals (str )) { }
if (Objects .equals (str , other )) { }
// Returning null collections
public List <User > getUsers () {
if (noData ) return null ;
}
// Return empty collections
public List <User > getUsers () {
if (noData ) return List .of ();
// or Collections.emptyList();
}
π οΈ Essential Tools Setup
# π Install SDKMAN (Java Version Manager)
curl -s " https://get.sdkman.io" | bash
source " $HOME /. sdkman/bin/sdkman-init.sh"
# Install Java 21
sdk install java 21-tem
# Install Maven
sdk install maven
# Install Gradle
sdk install gradle
# π Useful Maven Commands
mvn clean install # Build project
mvn test # Run tests
mvn spring-boot:run # Run Spring Boot app
mvn dependency:tree # View dependencies
mvn versions:display-dependency-updates # Check updates
# π Useful Gradle Commands
./gradlew build # Build project
./gradlew test # Run tests
./gradlew bootRun # Run Spring Boot app
./gradlew dependencies # View dependencies
This project is licensed under the MIT License - see the LICENSE file for details.
Special thanks to:
roadmap.sh β Inspiration and reference
Baeldung β Excellent Java tutorials
Spring β Official documentation
YOU β For taking the time to learn and grow! π
If you found this roadmap helpful, please consider: