Learning Path

Java Roadmap A to Z

A practical path to go from Java fundamentals to building, testing, and shipping real backend systems.

Foundations

Install JDK and Tooling

  • Install JDK 21+
  • Set JAVA_HOME/PATH
  • Use IntelliJ or VS Code

Core Syntax

JVM, JDK, JRE Mental Model

  • How bytecode works
  • Class loading basics
  • Compilation vs runtime

Language Basics

Variables, Types, Operators

  • Primitives vs wrappers
  • Type casting
  • Arithmetic and logical ops

Language Basics

Control Flow

  • if/else, switch
  • for/while/do-while
  • break, continue, return

Language Basics

Methods and Parameters

  • Method signatures
  • Pass-by-value behavior
  • Overloading

OOP

Classes and Objects

  • Fields and constructors
  • Instance vs static members
  • Encapsulation

OOP

Inheritance and Polymorphism

  • extends, super
  • Method overriding
  • Dynamic dispatch

OOP

Interfaces and Abstract Classes

  • Contract-first design
  • Default/static methods
  • Composition over inheritance

Error Handling

Exceptions

  • Checked vs unchecked
  • try/catch/finally
  • Custom exception types

Core APIs

Strings and Date/Time

  • StringBuilder, immutability
  • java.time API
  • Formatting and parsing

Core APIs

Collections Fundamentals

  • List, Set, Map
  • When to use each
  • Big-O basics

Core APIs

Generics

  • Type parameters
  • Wildcards ? extends/super
  • Generic methods

Core APIs

Enum, Record, Sealed Classes

  • Model finite states
  • Immutable DTOs with record
  • Restrict inheritance

Functional Java

Lambdas and Functional Interfaces

  • Predicate, Function, Consumer
  • Method references
  • Higher-order style

Functional Java

Streams

  • map/filter/reduce
  • Collectors
  • Avoid overusing streams

Functional Java

Optional

  • Null-safe flow
  • map/flatMap/orElse
  • API boundaries best practices

I/O

Files, Paths, NIO.2

  • Read/write files
  • Directory traversal
  • Buffered APIs

Concurrency

Threads and Synchronization

  • Thread lifecycle
  • synchronized and locks
  • Race conditions

Concurrency

ExecutorService

  • Thread pools
  • Callable/Future
  • Graceful shutdown

Concurrency

CompletableFuture

  • Async pipelines
  • Error handling
  • Composing async tasks

Build Tooling

Maven or Gradle

  • Dependency scopes
  • Plugins and lifecycle
  • Profiles

Data

SQL Fundamentals

  • Joins and indexes
  • Transactions
  • Query optimization basics

Data

JDBC

  • Connections and statements
  • Prepared statements
  • Mapping results

Data

JPA/Hibernate

  • Entity mapping
  • Lazy vs eager loading
  • N+1 and transaction boundaries

Backend

Spring Boot Essentials

  • Controllers and services
  • Configuration/profiles
  • Validation and error responses

Security

Spring Security Basics

  • AuthN/AuthZ concepts
  • JWT/session approaches
  • Endpoint protection

Testing

JUnit 5 + Mockito

  • Unit tests
  • Mocks and stubs
  • Test naming and structure

Testing

Integration Tests

  • SpringBootTest
  • Testcontainers
  • Repository/API integration

Delivery

Docker + CI/CD

  • Containerize app
  • Build pipelines
  • Deploy strategies

Production

Observability and Performance

  • Structured logs
  • Metrics and tracing
  • Profiling and tuning