Phase 01 — Java Fundamentals Refresh

Months 1–2 · ~6–8 weeks · 10–15 hrs/week

You know Java. You learned it in college, wrote assignments in it, maybe shipped a small project. Then you moved to ML, Python took over, and for the last two years an AI has been writing your code. Your conceptual model is intact; your fingers have forgotten. This phase is muscle-memory rehab, not education.

The goal is not to relearn Java — it is to become dangerous with modern Java (21 LTS) again without touching an AI assistant. By the end of Phase 01, opening IntelliJ and writing a working program should feel as natural as opening a Python REPL does today.

Why this phase exists

Every senior engineer who returns to Java after a break makes the same mistake: they skip the refresh, jump straight to LeetCode or Spring, and spend the next six months googling “how to iterate a HashMap” every 20 minutes. That drag compounds. It also poisons studies — you cannot reason about JVM internals or Spring boot-up if you are still fumbling with try-with-resources.

The other trap is the opposite: reading a 900-page book cover to cover. You already know 70% of it. Skimming the syntax you missed since Java 8 (which is a lot — records, sealed classes, pattern matching, virtual threads, text blocks) and then hand-typing 50 small programs beats any book.

Exit criteria

You are done with Phase 01 when all of the following are true:

#

Criterion

How you’ll know

1

Write 50 small programs (see 05_50_programs_challenge.md) without AI, without Stack Overflow lookup for syntax

Log each one, timestamp start/end

2

Comfortable with Java 14–21 syntax: records, sealed, pattern matching switch, text blocks, var, virtual threads (basic)

Can explain each in 30s + write a demo

3

IDE fluent: know shortcuts for run, debug, rename, extract method, generate constructor, find usages, navigate to declaration

No mouse for common tasks

4

Complete 3 projects in projects.md and push to GitHub

3 public repos, each with a README

5

Explain equals/hashCode contract, autoboxing pitfalls, checked-vs-unchecked verdict, ArrayList vs LinkedList — in one breath each

Record yourself, listen back

If any row is a “no”, you are not done. Move on when all five are “yes”.

What you will build

Three small but real projects that force every fundamental together:

  1. CLI TODOFiles API, JSON persistence, records for the domain

  2. Log Analyzer — streams, Files.lines(), aggregation with Map, pattern matching

  3. Mini-Bank — sealed transaction types, records, exception design

Details in projects.md.

The order to read these files

  1. 01_java_17_21_whats_new.md — start here, this is what’s changed

  2. 02_type_system_and_control_flow.md — the traps that never went away

  3. 03_collections_framework_refresher.md — 80% of study code lives here

  4. 04_io_and_exception_handling.md — modern NIO.2, exception verdicts

  5. 05_50_programs_challenge.md — the actual work; don’t skip

  6. projects.md — capstone deliverables

⚠️ What most people get wrong

They read all the files first, then start coding. Wrong order. Read file 1, code for two hours, read file 2, code for two hours. Reading Java without typing Java is memorization theater — you will forget it in a week. The muscle memory only comes from your hands hitting the keys.

Also: do not use an AI assistant in this phase. Not Copilot, not Claude, not ChatGPT for code. You may use them to explain concepts, never to generate. Your fingers must remember public static void main(String[] args) without help. That is the entire point.

Time budget (10–15 hrs/week × 7 weeks ≈ 80 hrs)

Block

Hours

Reading the six markdown files

8

50-programs challenge

30

Three projects

35

IDE + tooling setup, Java version, SDKMAN, Maven basics

5

Buffer / re-reads

2

If you blow past 8 weeks, that is fine — do not skip programs to hit a deadline. If you finish in 5, do not sprint into Phase 02 the same day. Sleep on it, then start.


Return to ../README.md · Next: 01_java_17_21_whats_new.md