Skip to content
aviral gupta

// LEARN · LANGUAGES & FRAMEWORKS

Java

A practical Java course from a first program in JShell to generics, streams, concurrency and shipping a runtime image. Every example is run and checked on Java 25, the current long-term support release.

Level: Beginner to advanced · For: Anyone who wants to write Java for back-end or enterprise software, from a first program to production code. No experience needed.

Syllabus

Beginner

Coming soon

After this level you can

  • Install JDK 25, run a single-file program with java Main.java, and explore expressions in JShell
  • Write programs with variables, primitive types, strings, if, loops and switch expressions that read input and print results
  • Define classes with fields, constructors, methods and enums, and use arrays, ArrayList and HashMap
  • Handle and throw exceptions, and split a program into packages across several source files
  1. B1First steps and toolsComing soon · 5 lessonsRuns on your computer

    Run and explore Java programs from the command line and JShell

    You build: A tip calculator

    1. B1.1Coming soon
    2. B1.2Coming soon
    3. B1.3Coming soon
    4. B1.4Coming soon
    5. B1.5Coming soon
  2. B2Control flow and textComing soon · 5 lessonsRuns on your computer

    Write branching and looping programs that read and parse input

    You build: A number-guessing game

    1. B2.1Coming soon
    2. B2.2Coming soon
    3. B2.3Coming soon
    4. B2.4Coming soon
    5. B2.5Coming soon
  3. B3Classes and objectsComing soon · 5 lessonsRuns on your computer

    Define classes with state, constructors, methods and enums

    You build: A bank account

    1. B3.1Coming soon
    2. B3.2Coming soon
    3. B3.3Coming soon
    4. B3.4Coming soon
    5. B3.5Coming soon
  4. B4Arrays and first collectionsComing soon · 5 lessonsRuns on your computer

    Store and iterate data with arrays, lists and maps

    You build: A word counter

    1. B4.1Coming soon
    2. B4.2Coming soon
    3. B4.3Coming soon
    4. B4.4Coming soon
    5. B4.5Coming soon
  5. B5Exceptions and packagesComing soon · 5 lessonsRuns on your computer

    Handle failures and organise code into packages over several files

    You build: A grade book with input validation

    1. B5.1Coming soon
    2. B5.2Coming soon
    3. B5.3Coming soon
    4. B5.4Coming soon
    5. B5.5Coming soon

Beginner project

Expense tracker CLI

Reads add, list, total and quit commands from standard input, reports invalid amounts and keeps going, and sums in integer cents.

Runs on your computerSelf-checked against a rubric

Intermediate

Coming soon

After this level you can

  • Model a domain with interfaces, inheritance, records and sealed types, and keep the equals and hashCode contract
  • Write generic classes and methods, lambdas and method references, and process data with streams and collectors
  • Use pattern matching with instanceof, switch and record patterns to write exhaustive, data-oriented code
  • Read and write files with java.nio.file, and work with java.time and regular expressions
  • Build a Maven project and test it with JUnit, including parameterised and exception tests
  1. I1Inheritance, interfaces and recordsComing soon · 7 lessonsRuns on your computer

    Model a domain with interfaces, inheritance and records, keeping the Object contracts

    You build: A shape library

    1. I1.1Coming soon
    2. I1.2Coming soon
    3. I1.3Coming soon
    4. I1.4Coming soon
    5. I1.5Coming soon
    6. I1.6Coming soon
    7. I1.7Coming soon
  2. I2Generics and lambdasComing soon · 5 lessonsRuns on your computer

    Write type-safe generic code and pass behaviour as lambdas

    You build: A generic sorted repository

    1. I2.1Coming soon
    2. I2.2Coming soon
    3. I2.3Coming soon
    4. I2.4Coming soon
    5. I2.5Coming soon
  3. I3Collections and streamsComing soon · 6 lessonsRuns on your computer

    Choose the right collection and transform data with streams and collectors

    You build: A sales report

    1. I3.1Coming soon
    2. I3.2Coming soon
    3. I3.3Coming soon
    4. I3.4Coming soon
    5. I3.5Coming soon
    6. I3.6Coming soon
  4. I4Pattern matching and sealed typesComing soon · 5 lessonsRuns on your computer

    Write exhaustive data-oriented code with sealed hierarchies and patterns

    You build: An expression evaluator

    1. I4.1Coming soon
    2. I4.2Coming soon
    3. I4.3Coming soon
    4. I4.4Coming soon
    5. I4.5Coming soon
  5. I5Files, dates and textComing soon · 5 lessonsRuns on your computer

    Read, write and parse files, dates and text safely

    You build: A log-file analyser

    1. I5.1Coming soon
    2. I5.2Coming soon
    3. I5.3Coming soon
    4. I5.4Coming soon
    5. I5.5Coming soon
  6. I6Build tools, testing and debuggingComing soon · 4 lessonsRuns on your computer

    Build a Maven project, test it with JUnit and debug a failing test

    You build: Test-first string utilities and debugging a failing test

    1. I6.1Coming soon
    2. I6.2Coming soon
    3. I6.3Coming soon
    4. I6.4Coming soon

Intermediate project

Library catalogue

A Maven project that loads books from CSV, searches and groups them with streams, models loan states with a sealed interface and saves changes back.

Runs on your computerSelf-checked against a rubric

Advanced

Coming soon

After this level you can

  • Write correct concurrent code with executors, virtual threads, concurrent collections and scoped values, and explain a data race
  • Package an application as a module, an executable JAR and a custom runtime image with jlink
  • Find performance and memory problems with JFR and the JDK tools, and explain why naive micro-benchmarks mislead
  • Apply secure-coding rules for input validation, deserialization, hashing and key derivation, and use reflection and annotations
  1. A1ConcurrencyComing soon · 5 lessonsRuns on your computer

    Write and reason about correct concurrent code, including virtual threads

    You build: A parallel file hasher

    1. A1.1Coming soon
    2. A1.2Coming soon
    3. A1.3Coming soon
    4. A1.4Coming soon
    5. A1.5Coming soon
  2. A2Modules, packaging and distributionComing soon · 5 lessonsRuns on your computer

    Ship an application as a module, an executable JAR and a jlink image

    You build: A modular command-line tool shipped as a runtime image

    1. A2.1Coming soon
    2. A2.2Coming soon
    3. A2.3Coming soon
    4. A2.4Coming soon
    5. A2.5Coming soon
  3. A3The JVM: memory and performanceComing soon · 5 lessonsRuns on your computer

    Diagnose memory and CPU problems with JFR and the JDK tools

    You build: Finding and fixing a memory leak

    1. A3.1Coming soon
    2. A3.2Coming soon
    3. A3.3Coming soon
    4. A3.4Coming soon
    5. A3.5Coming soon
  4. A4Security, reflection and annotationsComing soon · 5 lessonsRuns on your computer

    Apply secure-coding rules and build annotation-driven code with reflection

    You build: An annotation-driven validator

    1. A4.1Coming soon
    2. A4.2Coming soon
    3. A4.3Coming soon
    4. A4.4Coming soon
    5. A4.5Coming soon

Advanced project

Concurrent log aggregator

Scans a directory of logs with virtual threads, counts errors per hour, matches a single-threaded reference run and ships as a jlink image.

Runs on your computerSelf-checked against a rubric

Capstone

Capstone

Personal finance ledger

A modular application with a command line, file persistence, CSV import, monthly reports, tests and a jlink image, with a portfolio README.

Runs on your computerSelf-checked against a rubric