99 Ngày Java — Ngày 99: Tổng kết và Lộ trình Tiếp theo
Đây là bài cuối của 99 Ngày Java. Từ biến và vòng lặp ở ngày đầu tiên, bạn đã đi qua hướng đối tượng, collections, stream, concurrency, JVM và design pattern. Bài này không thêm kiến thức mới: nó sắp lại những gì đã học thành một bản đồ, đề xuất một dự án để kiểm chứng, và chỉ ra bước tiếp theo hợp lý nhất.

1. Mười chặng đã đi qua
Series chia thành mười giai đoạn, mỗi giai đoạn dựa trên giai đoạn trước. Nếu một mục dưới đây còn mơ hồ, đó là chỗ nên đọc lại trước khi đi tiếp.
Ngày 1–10, nền tảng ngôn ngữ: JVM, kiểu dữ liệu, toán tử, điều kiện, vòng lặp, mảng, phương thức.
Ngày 11–20, hướng đối tượng: lớp, đóng gói, kế thừa, đa hình, interface, record.
Ngày 21–30, Core API: xử lý chuỗi, enum, equals và hashCode, java.time, BigDecimal, regex.
Ngày 31–40, Collections và Generics: List, Set, Map, Queue, Comparator, wildcard.
Ngày 41–50, Exception và I/O: xử lý lỗi, try-with-resources, file với java.io và NIO.2, JSON, logging.
Ngày 51–60, lập trình hàm: lambda, functional interface, Stream API, Collectors, Optional.
Ngày 61–70, Concurrency: thread, synchronized, executor, CompletableFuture, lock, virtual thread.
Ngày 71–80, JVM chuyên sâu: bộ nhớ, GC, class loading, JIT, profiling.
Ngày 81–90, Java hiện đại và công cụ: var, switch, sealed, Maven, Gradle, JUnit, Mockito.
Ngày 91–99, design pattern và thực chiến: SOLID, các mẫu phổ biến, reflection, JDBC, HTTP.
2. Capstone: một ứng dụng không dùng framework
Đọc hiểu chưa phải là làm được. Hãy xây một ứng dụng quản lý chi tiêu cá nhân chỉ bằng JDK cùng vài thư viện đã học, không dùng Spring. Giới hạn đó buộc bạn tự làm những việc framework thường làm thay, và đó chính là phần học được nhiều nhất. Chia thành các mốc nhỏ và hoàn thành từng mốc trước khi sang mốc sau.
Mốc 1: mô hình domain bằng record và sealed interface; quy tắc nghiệp vụ có unit test bằng JUnit 5.
Mốc 2: lưu vào PostgreSQL bằng JDBC và HikariCP, có transaction; test tích hợp với database thật.
Mốc 3: giao diện dòng lệnh, đọc cấu hình từ biến môi trường.
Mốc 4: lấy tỷ giá từ một API công khai bằng HttpClient, có timeout và xử lý lỗi; bọc sau một interface và mock khi test.
Mốc 5: báo cáo theo tháng bằng Stream API; nhập file CSV lớn mà không nạp hết vào bộ nhớ.
Mốc 6: build bằng Maven hoặc Gradle, chạy test trong CI, đóng gói thành một file jar chạy được.
3. Tự đánh giá
Khi capstone chạy được, hãy tự hỏi những câu mà người review sẽ hỏi. Nếu trả lời được bằng cách chỉ vào code của mình, bạn đã thật sự nắm phần đó.
Lớp nào bất biến, và vì sao những lớp còn lại thì không?
Nếu API tỷ giá treo, chương trình của bạn chờ bao lâu rồi làm gì?
Hai lệnh ghi cùng lúc có làm sai số dư không?
Thêm một loại giao dịch mới thì phải sửa bao nhiêu file?
Test nào sẽ đỏ nếu bạn đổi quy tắc làm tròn tiền?
sealed interface Transaction permits Income, Expense, Transfer {
Money amount();
LocalDate date();
}
record Income(Money amount, LocalDate date, String source) implements Transaction {}
record Expense(Money amount, LocalDate date, Category category) implements Transaction {}
record Transfer(Money amount, LocalDate date, AccountId to) implements Transaction {}4. Lộ trình sang Spring và xa hơn
Bước tiếp theo tự nhiên nhất là Spring Boot, vì phần lớn công việc backend Java dùng nó. Bạn sẽ thấy những thứ quen thuộc ở dạng tự động: dependency injection thay cho việc tự nối đối tượng, Spring Data thay cho JDBC viết tay, @Transactional thay cho commit và rollback. Series 99 Ngày Spring trên blog này đi song song từ ngày đầu và giả định đúng nền tảng bạn vừa có.
Bắt đầu 99 Ngày Spring từ Ngày 01: Spring là gì và vì sao ra đời.
Viết lại capstone bằng Spring Boot và so sánh hai phiên bản.
Học SQL và thiết kế database nghiêm túc; đây là kỹ năng dùng lâu nhất.
Đọc series 50 Ngày System Design khi bắt đầu nghĩ về nhiều service.
Mỗi sáu tháng xem các JEP mới của bản JDK vừa phát hành.
Cảm ơn bạn đã đi hết 99 ngày. Kiến thức chỉ thành kỹ năng khi được dùng, nên hãy bắt đầu capstone ngay hôm nay. Hẹn gặp lại ở series 99 Ngày Spring.
Tài liệu đối chiếu
https://dev.java/learn/
https://mot-dev-95.vercel.app/tag/spring
Site Admin
Engineer and writer. Building things with TypeScript and distributed systems.
Bình luận (0)
Bạn cần đăng nhập bằng Google để bình luận.
Hãy là người bình luận đầu tiên.


