🧭 Java Cheatsheet Blueprint β€” Folder Layout & Evolution Plan

Purpose:
This document defines the long-term structure for organizing Java-related cheatsheets.
It starts simple but scales gracefully as new frameworks and tools appear.


πŸ“ Planned Folder Layout

docs/
└─ cheatsheets/
└─ languages/
└─ java/
β”œβ”€ index.md
β”œβ”€ setup/
β”‚  β”œβ”€ jdk-install.md        # SDKMAN!, PATH, versions
β”‚  └─ project-structure.md  # src/main/java, resources, etc.
β”œβ”€ core/
β”‚  β”œβ”€ syntax.md
β”‚  β”œβ”€ collections.md
β”‚  β”œβ”€ streams.md
β”‚  β”œβ”€ concurrency.md
β”‚  β”œβ”€ records.md
β”‚  └─ io-nio.md
β”œβ”€ build/
β”‚  β”œβ”€ maven/
β”‚  β”‚  β”œβ”€ basics.md
β”‚  β”‚  β”œβ”€ dependencies.md
β”‚  β”‚  β”œβ”€ plugins.md
β”‚  β”‚  └─ profiles.md
β”‚  └─ gradle/
β”‚     β”œβ”€ basics.md
β”‚     β”œβ”€ dependencies.md
β”‚     β”œβ”€ tasks.md
β”‚     └─ multi-project.md
β”œβ”€ testing/
β”‚  β”œβ”€ junit5.md
β”‚  β”œβ”€ mockito.md
β”‚  └─ testcontainers.md
β”œβ”€ frameworks/
β”‚  β”œβ”€ spring/
β”‚  β”‚  β”œβ”€ boot/
β”‚  β”‚  β”‚  β”œβ”€ starters.md
β”‚  β”‚  β”‚  β”œβ”€ config.md
β”‚  β”‚  β”‚  └─ actuator.md
β”‚  β”‚  β”œβ”€ web/
β”‚  β”‚  β”‚  β”œβ”€ rest-controller.md
β”‚  β”‚  β”‚  └─ validation.md
β”‚  β”‚  β”œβ”€ data/
β”‚  β”‚  β”‚  β”œβ”€ jpa.md
β”‚  β”‚  β”‚  └─ transactions.md
β”‚  β”‚  β”œβ”€ security/
β”‚  β”‚  β”‚  β”œβ”€ basics.md
β”‚  β”‚  β”‚  └─ jwt.md
β”‚  β”‚  └─ testing.md
β”‚  β”œβ”€ micronaut/
β”‚  └─ quarkus/
└─ tooling/
β”œβ”€ jdk-tools.md
└─ lombok.md

🧠 Design Principles

1. Clear Separation of Concerns

  • Core Java concepts live in core/ β€” language fundamentals.
  • Frameworks (Spring, Micronaut, Quarkus) live under frameworks/. Each gets its own namespace.
  • Build tools (Maven, Gradle) belong to build/, since they’re language-tied.
  • Testing tools (JUnit, Mockito, Testcontainers) share a top-level folder β€” they cross all projects.

2. Scalable and Future-Proof

  • Spring starts as the main resident of frameworks/.
  • Micronaut and Quarkus get empty placeholders now β€” ready for future growth.
  • If Spring grows large, subdivide it (boot/, web/, data/, security/, testing/).

3. Flexibility for JVM Ecosystem

  • If you later add Kotlin or Scala, they’ll live beside Java under languages/.
  • Common JVM topics (like Gradle multi-language builds) can move to
    docs/concepts/build-systems.md for shared knowledge.

πŸš€ Evolution Notes

  • Keep the first version simple β€” start with core/, setup/, and frameworks/spring/boot/.
  • As you expand, let structure follow growth, not theory.
  • When duplication or overlap emerges between frameworks, extract those notes into:
docs/concepts/frameworks/java-frameworks-comparison.md

πŸ’‘ Philosophy

A good cheatsheet library grows organically, not architecturally.
Structure should reveal what you’ve learned β€” not cage what you haven’t yet.
Build clarity first; hierarchy will follow naturally.