// 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
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
- B1.1Coming soon
- B1.2Coming soon
- B1.3Coming soon
- B1.4Coming soon
- B1.5Coming soon
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
- B2.1Coming soon
- B2.2Coming soon
- B2.3Coming soon
- B2.4Coming soon
- B2.5Coming soon
B3Classes and objectsComing soon · 5 lessonsRuns on your computer
Define classes with state, constructors, methods and enums
You build: A bank account
- B3.1Coming soon
- B3.2Coming soon
- B3.3Coming soon
- B3.4Coming soon
- B3.5Coming soon
B4Arrays and first collectionsComing soon · 5 lessonsRuns on your computer
Store and iterate data with arrays, lists and maps
You build: A word counter
- B4.1Coming soon
- B4.2Coming soon
- B4.3Coming soon
- B4.4Coming soon
- B4.5Coming soon
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
- B5.1Coming soon
- B5.2Coming soon
- B5.3Coming soon
- B5.4Coming soon
- 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
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
- I1.1Coming soon
- I1.2Coming soon
- I1.3Coming soon
- I1.4Coming soon
- I1.5Coming soon
- I1.6Coming soon
- I1.7Coming soon
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
- I2.1Coming soon
- I2.2Coming soon
- I2.3Coming soon
- I2.4Coming soon
- I2.5Coming soon
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
- I3.1Coming soon
- I3.2Coming soon
- I3.3Coming soon
- I3.4Coming soon
- I3.5Coming soon
- I3.6Coming soon
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
- I4.1Coming soon
- I4.2Coming soon
- I4.3Coming soon
- I4.4Coming soon
- I4.5Coming soon
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
- I5.1Coming soon
- I5.2Coming soon
- I5.3Coming soon
- I5.4Coming soon
- I5.5Coming soon
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
- I6.1Coming soon
- I6.2Coming soon
- I6.3Coming soon
- 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
A1ConcurrencyComing soon · 5 lessonsRuns on your computer
Write and reason about correct concurrent code, including virtual threads
You build: A parallel file hasher
- A1.1Coming soon
- A1.2Coming soon
- A1.3Coming soon
- A1.4Coming soon
- A1.5Coming soon
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
- A2.1Coming soon
- A2.2Coming soon
- A2.3Coming soon
- A2.4Coming soon
- A2.5Coming soon
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
- A3.1Coming soon
- A3.2Coming soon
- A3.3Coming soon
- A3.4Coming soon
- A3.5Coming soon
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
- A4.1Coming soon
- A4.2Coming soon
- A4.3Coming soon
- A4.4Coming soon
- 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