Scope & Course Architecture
Khóa scope, baseline phiên bản, cấu trúc giáo trình, terminology, repository và Definition of Done.
1. Mục tiêu và đối tượng học
Giáo trình dành cho Java backend developer đã nắm Java syntax, OOP, collections, exception, Maven/Gradle và REST cơ bản. Người học không cần biết Reactive trước.
Không phải mục tiêu
- Không biến tài liệu thành API reference.
- Không khẳng định Reactive luôn nhanh hơn.
- Không dạy WebFlux/Vert.x như hai phiên bản nối tiếp nhau.
2. Baseline phiên bản
| Thành phần | Baseline | Lý do |
|---|---|---|
| Java | Java 25 LTS | Ổn định cho giáo trình dài hạn; có Virtual Threads chính thức và API concurrency hiện đại. |
| Spring Framework | 7.0.x stable | Nhánh stable hiện hành; WebFlux là reactive web stack chính thức. |
| Spring Boot | 4.1.x stable | Baseline runtime cho capstone WebFlux; version cụ thể được khóa ở project BOM. |
| Reactor Core | 3.8.x stable | Reactive foundation dùng bởi WebFlux. |
| Vert.x | 5.1.x stable | Dùng API Vert.x 5 hiện hành, ưu tiên VerticleBase và Future-based API. |
| Reactive Streams | 1.0.4 | JVM specification/TCK hiện hành. |
Nguyên tắc: giáo trình ghi “family baseline” ở phần lý thuyết, còn source code project khóa patch version trong build file để reproducible.
3. Kiến trúc giáo trình
Java Concurrency
↓
CompletableFuture
↓
Java NIO / Event Loop
↓
Reactive Streams
↓
Project Reactor
↓
Spring WebFlux
↓
Vert.x Core / Web / Data
↓
Production Reactive Systems
↓
2 Capstone Projects
↓
Benchmark + Trade-off Analysis
Mỗi abstraction chỉ được giới thiệu sau khi người học đã thấy vấn đề mà abstraction đó giải quyết.
4. Chapter template chuẩn
- Mục tiêu học.
- Vấn đề thực tế.
- Lý thuyết Thuần Việt.
- Mental model.
- Sơ đồ.
- Minimal example.
- Ví dụ sai.
- Giải thích nguyên nhân.
- Production considerations.
- Lab.
- Bài tập.
- Debug exercise.
- Interview questions.
- Checklist + recap.
5. Cấu trúc repository mục tiêu
reactive-java-course/ ├── index.html ├── styles.css ├── reactive-java-webflux-vertx-course-brief.md ├── epic-a-course-architecture.html ├── epic-b-official-source-map.html ├── epic-c-java-concurrency.html ├── epic-d-completable-future.html ├── epic-e-nio-event-loop.html ├── parts/ ├── examples/ │ ├── concurrency/ │ ├── completable-future/ │ ├── nio/ │ ├── reactor/ │ ├── webflux/ │ └── vertx/ ├── labs/ ├── capstone-webflux/ ├── capstone-vertx/ └── benchmark/
6. Quy ước thuật ngữ
| Term | Cách dùng |
|---|---|
| Concurrency | Dùng “đồng thời (concurrency)” khi xuất hiện đầu; sau đó ưu tiên term tiếng Anh nếu dịch gây nhập nhằng. |
| Parallelism | “song song (parallelism)” — luôn phân biệt với concurrency. |
| Blocking / Non-blocking | Giữ nguyên term, giải thích bằng hành vi thread/I/O. |
| Event Loop | Giữ nguyên tên; không dịch thành “vòng lặp sự kiện” trong code/diagram nếu làm khó đọc. |
| Backpressure | Giữ nguyên term, giải thích là cơ chế consumer điều tiết tốc độ producer. |
| Future / Publisher / Subscriber | Giữ nguyên tên API/contract. |
7. Definition of Done
- ☑ Theory hoàn chỉnh và đúng version.
- ☑ Có mental model và diagram khi phù hợp.
- ☑ Sample code compile hoặc được đánh dấu pseudo-code.
- ☑ Có anti-pattern nếu topic dễ sai.
- ☑ Có lab/exercise + answer key.
- ☑ Có official source.
- ☑ Technical review + Vietnamese editorial review.
- ☑ Không trộn async/reactive/non-blocking/parallelism thành một khái niệm.
8. Milestones
Concurrency → CompletableFuture → NIO/Event Loop → Reactive Streams.
Mono/Flux, operators, scheduler, backpressure, test.
Reactive backend production-style.
Verticle, Context, Future, Event Bus, Web/Data.
Hai implementation cùng spec.
Reproducible metrics + trade-off report.