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 |
Log each one, timestamp start/end |
2 |
Comfortable with Java 14–21 syntax: records, sealed, pattern matching switch, text blocks, |
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 |
3 public repos, each with a README |
5 |
Explain |
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:
CLI TODO —
FilesAPI, JSON persistence, records for the domainLog Analyzer — streams,
Files.lines(), aggregation withMap, pattern matchingMini-Bank — sealed transaction types, records, exception design
Details in projects.md.
The order to read these files¶
01_java_17_21_whats_new.md— start here, this is what’s changed02_type_system_and_control_flow.md— the traps that never went away03_collections_framework_refresher.md— 80% of study code lives here04_io_and_exception_handling.md— modern NIO.2, exception verdicts05_50_programs_challenge.md— the actual work; don’t skipprojects.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