# Java Engineering Notes > In-depth, verified notes on Core Java (the basics to Java 21), Spring Boot 3 (REST APIs to security), unit testing with JUnit 5 and Mockito, and Spring Boot microservices with Spring Cloud. 138 chapters. Written for backend engineers learning the stack or deepening production knowledge. ## Machine-Readable APIs & Navigation - [Chapters API Manifest](https://jvdocs.pages.dev/api/chapters.json): Complete JSON manifest of all 138 chapters with title, sequence, URL, and explicit next/prev navigation pointers for automated agents. - [Navigation Graph](https://jvdocs.pages.dev/api/navigation.json): Direct key-value lookup mapping every page slug to its sequential successor and predecessor. - [Full Documentation Dump](https://jvdocs.pages.dev/llms-full.txt): Consolidated plain text compilation of all chapters for single-request LLM ingestion. ## API Navigation Guidance for LLMs & AI Agents Automated agents and LLMs crawling this curriculum can traverse chapters sequentially: 1. Start at `https://jvdocs.pages.dev/java/course-roadmap`. 2. Inspect the HTTP `Link` header (`rel="next"`) or query `https://jvdocs.pages.dev/api/navigation.json` to obtain the subsequent URL. 3. Fetch clean structured JSON metadata for any chapter via `/api/chapters.json`. ## Core Java (52 Chapters) - [Java Roadmap: Basics to Advanced](https://jvdocs.pages.dev/java/course-roadmap) - [Object-Oriented Programming: The Four Pillars](https://jvdocs.pages.dev/java/oop-four-pillars) - [How Java Actually Runs](https://jvdocs.pages.dev/java/how-java-works-jvm-jre-jdk) - [Why Only One Public Class Per File](https://jvdocs.pages.dev/java/why-only-one-public-class-per-file) - [Primitives, Two's Complement and Type Casting](https://jvdocs.pages.dev/java/variables-primitives-casting) - [IEEE 754: Why 0.1 + 0.2 Is Not 0.3 in Java](https://jvdocs.pages.dev/java/ieee-754-float-double-storage) - [Reference Types, String Pool and Wrappers](https://jvdocs.pages.dev/java/variables-reference-types-wrappers) - [Methods, Access Modifiers and Varargs](https://jvdocs.pages.dev/java/methods-access-modifiers-varargs) - [Constructors In Depth](https://jvdocs.pages.dev/java/constructors-in-depth) - [Memory Management and Garbage Collection](https://jvdocs.pages.dev/java/memory-management-garbage-collection) - [Concrete, Abstract, Object, and Nested Classes: The Complete Guide](https://jvdocs.pages.dev/java/concrete-abstract-object-nested-classes) - [Generics, Type Erasure and Wildcards](https://jvdocs.pages.dev/java/generics-type-erasure-wildcards) - [POJO, Enum, and Final Classes: Advanced Architecture & JVM Mechanics](https://jvdocs.pages.dev/java/pojo-enum-final-classes) - [Singleton and Immutable Classes: Design Patterns & JVM Concurrency](https://jvdocs.pages.dev/java/singleton-and-immutable-classes) - [Interfaces In Depth](https://jvdocs.pages.dev/java/interfaces-in-depth) - [Default, Static and Private Interface Methods](https://jvdocs.pages.dev/java/default-static-private-interface-methods) - [Functional Interfaces and Lambda Expressions](https://jvdocs.pages.dev/java/functional-interfaces-lambda-expressions) - [Reflection In Depth](https://jvdocs.pages.dev/java/reflection-in-depth) - [Annotations](https://jvdocs.pages.dev/java/annotations) - [Exception Handling](https://jvdocs.pages.dev/java/exception-handling) - [Operators](https://jvdocs.pages.dev/java/operators) - [Control Flow Statements](https://jvdocs.pages.dev/java/control-flow-statements) - [Collections Framework: Architecture, Hierarchy & Iteration](https://jvdocs.pages.dev/java/collections-framework-hierarchy-iteration) - [Queue, PriorityQueue, Comparator vs Comparable](https://jvdocs.pages.dev/java/queue-priorityqueue-comparator-comparable) - [Deque and the List Family](https://jvdocs.pages.dev/java/deque-and-the-list-family) - [HashMap Internal Working: The Complete Low-Level Guide](https://jvdocs.pages.dev/java/hashmap-internal-working) - [LinkedHashMap and TreeMap: When Order Matters](https://jvdocs.pages.dev/java/linkedhashmap-and-treemap) - [The Set Family: HashSet, LinkedHashSet & TreeSet](https://jvdocs.pages.dev/java/the-set-family) - [Java 8 Streams: Pipelines, Laziness & Parallelism](https://jvdocs.pages.dev/java/java-8-streams) - [Threads, Processes and Their Memory Model](https://jvdocs.pages.dev/java/threads-processes-memory-model) - [Thread Creation, Lifecycle, Monitor Locks & wait/notify](https://jvdocs.pages.dev/java/thread-creation-lifecycle-wait-notify) - [Thread Coordination: join, Daemon Threads, Priority & Deprecated Methods](https://jvdocs.pages.dev/java/join-daemon-threads-priority) - [Explicit Locks: ReentrantLock, ReadWriteLock, StampedLock, Semaphore & Condition](https://jvdocs.pages.dev/java/locks-and-condition) - [Lock-Free Concurrency: CAS, Atomic Classes & volatile](https://jvdocs.pages.dev/java/lock-free-concurrency-cas-atomic-volatile) - [ThreadPoolExecutor: Architecture, Task Flow & Sizing](https://jvdocs.pages.dev/java/threadpoolexecutor-in-depth) - [Asynchronous Programming: Future, Callable & CompletableFuture](https://jvdocs.pages.dev/java/future-callable-completablefuture) - [Executors Factory Pools, ForkJoinPool & Work Stealing](https://jvdocs.pages.dev/java/executors-factory-pools-forkjoinpool) - [ScheduledThreadPoolExecutor: Periodic Tasks & Time Triggers](https://jvdocs.pages.dev/java/scheduledthreadpoolexecutor) - [ThreadLocal and Virtual Threads (Project Loom)](https://jvdocs.pages.dev/java/threadlocal-and-virtual-threads) - [Project Lombok: Top 10 Features & Compile-Time Code Generation](https://jvdocs.pages.dev/java/project-lombok-top-10-features) - [Optional: Java 8 to 11 All Methods, Patterns & Antipatterns](https://jvdocs.pages.dev/java/optional-java-8-to-11-all-methods) - [Traditional File Handling: Streams as a Decorator Pattern](https://jvdocs.pages.dev/java/traditional-file-handling-decorator-pattern) - [Java NIO Deep Dive: 5 Advantages Over Traditional I/O](https://jvdocs.pages.dev/java/java-nio-deep-dive-5-advantages) - [Java NIO Buffer Internals: position, limit, capacity & compact](https://jvdocs.pages.dev/java/java-nio-buffer-internals) - [FileChannel & Zero-Copy Transfers](https://jvdocs.pages.dev/java/java-nio-filechannel-zero-copy) - [Java 14: Switch Expressions & Arrow Syntax](https://jvdocs.pages.dev/java/java-14-switch-expressions) - [Java 15: Text Blocks & Multi-Line Strings](https://jvdocs.pages.dev/java/java-15-text-blocks) - [Java 16: Pattern Matching for instanceof](https://jvdocs.pages.dev/java/java-16-pattern-matching-for-instanceof) - [Java 16: Records (Immutable Data Carriers)](https://jvdocs.pages.dev/java/java-16-records) - [Java 17: Sealed Classes and Interfaces](https://jvdocs.pages.dev/java/java-17-sealed-classes-and-interfaces) - [Java 21: Pattern Matching for switch](https://jvdocs.pages.dev/java/java-21-pattern-matching-for-switch) - [Java 21: Sequenced Collections (Unified First/Last Access)](https://jvdocs.pages.dev/java/java-21-sequenced-collections) ## Spring Boot (44 Chapters) - [Spring Boot Roadmap: Basics to Advanced](https://jvdocs.pages.dev/spring-boot/roadmap) - [Why Spring Boot: From Servlets to Spring MVC to Spring Boot](https://jvdocs.pages.dev/spring-boot/intro-spring-boot) - [Project Setup and Layered Architecture](https://jvdocs.pages.dev/spring-boot/project-setup) - [Maven and Its Build Lifecycle](https://jvdocs.pages.dev/spring-boot/maven-lifecycle) - [Controller Annotations: @RestController, @RequestMapping and Request Data](https://jvdocs.pages.dev/spring-boot/controller-annotations) - [Beans, the IoC Container and the Bean Lifecycle](https://jvdocs.pages.dev/spring-boot/bean-lifecycle) - [Dependency Injection: Field, Setter and Constructor](https://jvdocs.pages.dev/spring-boot/dependency-injection) - [Bean Scopes: Singleton, Prototype, Request and Session](https://jvdocs.pages.dev/spring-boot/bean-scopes) - [Choosing Beans at Runtime with @Value](https://jvdocs.pages.dev/spring-boot/value-annotation) - [Conditional Beans with @ConditionalOnProperty](https://jvdocs.pages.dev/spring-boot/conditional-on-property) - [Profiles: One Codebase, Many Environments](https://jvdocs.pages.dev/spring-boot/profile-annotation) - [Aspect-Oriented Programming (AOP)](https://jvdocs.pages.dev/spring-boot/aop) - [@Transactional Part 1: ACID and How It Works](https://jvdocs.pages.dev/spring-boot/transactional-part1) - [@Transactional Part 2: Transaction Managers and Propagation](https://jvdocs.pages.dev/spring-boot/transactional-part2) - [@Transactional Part 3: Isolation Levels](https://jvdocs.pages.dev/spring-boot/transactional-part3) - [@Async Part 1: Thread Pools and @Async](https://jvdocs.pages.dev/spring-boot/async-part1) - [@Async Part 2: Pitfalls, Return Types and Exceptions](https://jvdocs.pages.dev/spring-boot/async-part2) - [Custom Interceptors and Custom Annotations](https://jvdocs.pages.dev/spring-boot/custom-interceptors) - [Filters vs Interceptors](https://jvdocs.pages.dev/spring-boot/filters-interceptors) - [HATEOAS: Links in REST Responses](https://jvdocs.pages.dev/spring-boot/hateoas) - [ResponseEntity and HTTP Status Codes](https://jvdocs.pages.dev/spring-boot/response-entity) - [Exception Handling: @ExceptionHandler, @ControllerAdvice and @ResponseStatus](https://jvdocs.pages.dev/spring-boot/exception-handling) - [JPA Part 1: From JDBC to JdbcTemplate](https://jvdocs.pages.dev/spring-boot/jpa-part1) - [JPA Part 2: Setup, Architecture and the Entity Lifecycle](https://jvdocs.pages.dev/spring-boot/jpa-part2) - [JPA Part 3: The First-Level Cache](https://jvdocs.pages.dev/spring-boot/jpa-part3) - [JPA Part 4: The Second-Level Cache](https://jvdocs.pages.dev/spring-boot/jpa-part4) - [JPA Part 5: Mapping Entities to Tables](https://jvdocs.pages.dev/spring-boot/jpa-part5) - [JPA Part 6: One-to-One Mappings](https://jvdocs.pages.dev/spring-boot/jpa-part6) - [JPA Part 7: One-to-Many, Many-to-One and Many-to-Many](https://jvdocs.pages.dev/spring-boot/jpa-part7) - [JPA Part 8: Derived Queries, JPQL, Pagination and the N+1 Problem](https://jvdocs.pages.dev/spring-boot/jpa-part8) - [JPA Part 9: Native Queries and the Criteria API](https://jvdocs.pages.dev/spring-boot/jpa-part9) - [JPA Part 10: The Specification API](https://jvdocs.pages.dev/spring-boot/jpa-part10) - [Web Attacks: CSRF, XSS, CORS and SQL Injection](https://jvdocs.pages.dev/spring-boot/attacks-csrf-xss) - [Spring Security Part 1: Architecture and Setup](https://jvdocs.pages.dev/spring-boot/security-part1) - [Spring Security Part 2: Creating and Storing Users](https://jvdocs.pages.dev/spring-boot/security-part2) - [Spring Security Part 3: Form Login (Stateful)](https://jvdocs.pages.dev/spring-boot/security-part3) - [Spring Security Part 4: Basic Authentication (Stateless)](https://jvdocs.pages.dev/spring-boot/security-part4) - [Spring Security Part 5: JWT Explained](https://jvdocs.pages.dev/spring-boot/jwt-explained) - [Spring Security Part 6: JWT Authentication](https://jvdocs.pages.dev/spring-boot/security-jwt) - [Spring Security Part 7: OAuth 2.0 Explained](https://jvdocs.pages.dev/spring-boot/oauth2-explained) - [Spring Security Part 8: OAuth2 Login](https://jvdocs.pages.dev/spring-boot/security-oauth2) - [Spring Security Part 9: Method Security with @PreAuthorize and @PostAuthorize](https://jvdocs.pages.dev/spring-boot/security-method) - [Actuator: Health, Metrics and Monitoring](https://jvdocs.pages.dev/spring-boot/actuator) - [@ConfigurationProperties: Typed Configuration](https://jvdocs.pages.dev/spring-boot/configuration-properties) ## JUnit 5 & Mockito (19 Chapters) - [Unit Testing Roadmap: JUnit 5 and Mockito](https://jvdocs.pages.dev/junit-mockito/roadmap) - [What Unit Testing Is: Unit, Integration and Functional Tests](https://jvdocs.pages.dev/junit-mockito/unit-testing-intro) - [JUnit 5 Architecture: Platform, Jupiter and Vintage](https://jvdocs.pages.dev/junit-mockito/junit5-architecture) - [Test Lifecycle, @TestInstance and Parallel Execution](https://jvdocs.pages.dev/junit-mockito/lifecycle) - [Assertions and Testing Exceptions](https://jvdocs.pages.dev/junit-mockito/assertions) - [Extensions](https://jvdocs.pages.dev/junit-mockito/extensions) - [@RepeatedTest](https://jvdocs.pages.dev/junit-mockito/repeated-test) - [Parameterized Tests Part 1: Single and Multiple Values](https://jvdocs.pages.dev/junit-mockito/parameterized-part1) - [Parameterized Tests Part 2: Objects and Complex Data](https://jvdocs.pages.dev/junit-mockito/parameterized-part2) - [Assumptions](https://jvdocs.pages.dev/junit-mockito/assumptions) - [Tagging and Filtering](https://jvdocs.pages.dev/junit-mockito/tagging-filtering) - [Test Suites, and Suites vs Tags](https://jvdocs.pages.dev/junit-mockito/test-suites) - [Dynamic Tests with @TestFactory](https://jvdocs.pages.dev/junit-mockito/test-factory) - [Mock vs Stub vs Spy](https://jvdocs.pages.dev/junit-mockito/mock-stub-spy) - [Mockito Architecture: How Mocks, Stubs and Spies Work](https://jvdocs.pages.dev/junit-mockito/mockito-architecture) - [@Mock, @Spy and @InjectMocks](https://jvdocs.pages.dev/junit-mockito/inject-mocks) - [@Mock as a Constructor or Method Parameter](https://jvdocs.pages.dev/junit-mockito/mock-parameter) - [Stubbing: Matchers, Static and Dynamic Answers](https://jvdocs.pages.dev/junit-mockito/stubbing) - [Verification](https://jvdocs.pages.dev/junit-mockito/verification) ## Microservices (23 Chapters) - [Service-to-Service Calls with RestTemplate](https://jvdocs.pages.dev/microservices/rest-template) - [RestClient and Its Fluent API](https://jvdocs.pages.dev/microservices/rest-client) - [FeignClient: Declarative HTTP Calls](https://jvdocs.pages.dev/microservices/feign-client) - [Service Discovery with Eureka](https://jvdocs.pages.dev/microservices/service-discovery) - [Client-Side Load Balancing](https://jvdocs.pages.dev/microservices/load-balancer) - [Fault Tolerance and the Rate Limiter](https://jvdocs.pages.dev/microservices/rate-limiter) - [The Bulkhead and the Time Limiter](https://jvdocs.pages.dev/microservices/bulkhead) - [The Retry Pattern](https://jvdocs.pages.dev/microservices/retry-pattern) - [The Circuit Breaker](https://jvdocs.pages.dev/microservices/circuit-breaker) - [API Gateway: Routing and Load Balancing](https://jvdocs.pages.dev/microservices/api-gateway-routing) - [API Gateway: Filters and Authentication](https://jvdocs.pages.dev/microservices/api-gateway-auth) - [Centralized Configuration with Spring Cloud Config](https://jvdocs.pages.dev/microservices/centralized-config) - [@RefreshScope: Reloading Configuration at Runtime](https://jvdocs.pages.dev/microservices/refresh-scope) - [Spring Cloud Bus](https://jvdocs.pages.dev/microservices/spring-cloud-bus) - [Distributed Tracing with Micrometer and OpenTelemetry](https://jvdocs.pages.dev/microservices/distributed-tracing) - [Logging Foundations: SLF4J, Logback and the Logger Hierarchy](https://jvdocs.pages.dev/microservices/logging-part1) - [Logging Appenders: Console, File, Rolling and Custom](https://jvdocs.pages.dev/microservices/logging-part2) - [Async Logging, Filters, Structured JSON and PII](https://jvdocs.pages.dev/microservices/logging-part3) - [Distributed Logging: MDC, Correlation IDs and Trace IDs](https://jvdocs.pages.dev/microservices/logging-part4) - [How Schedulers Work: ScheduledThreadPoolExecutor and Leader–Follower](https://jvdocs.pages.dev/microservices/scheduler-part1) - [@Scheduled: Fixed Rate, Fixed Delay and Cron](https://jvdocs.pages.dev/microservices/scheduler-part2) - [Scheduled Jobs: Common Pitfalls and Fixes](https://jvdocs.pages.dev/microservices/scheduler-part3) - [ShedLock: Running a Job on Exactly One Instance](https://jvdocs.pages.dev/microservices/scheduler-part4) ## Optional - [Full Sitemap](https://jvdocs.pages.dev/sitemap.xml): Complete XML sitemap. - [Robots.txt](https://jvdocs.pages.dev/robots.txt): Machine crawler permissions.