Sub-pillar 9.5 · Java

Học Java đúng cách

Java là ngôn ngữ của hệ thống lớn — ngân hàng, viễn thông, thương mại điện tử, Android. Sub-pillar này dạy Java 21 LTS với cú pháp hiện đại (record, sealed, switch expression, text block, virtual thread), không phải Java 8 của mười năm trước. Trọng tâm: hiểu vì sao JVM, Collections, Generics và mô hình bộ nhớ được thiết kế như vậy — chứ không chỉ nhớ cú pháp.

Java 21 LTS · 14 chương · ~20,000 dòng · 70 bài tập + 110 quiz

Lộ trình 14 chương

Bốn giai đoạn: nền tảng (1-3) → hướng đối tượng (4-6) → thư viện cốt lõi (7-11) → hệ thống thật (12-14). Mỗi chương ~1200-1600 dòng, có lý thuyết chi tiết, code chạy được, sơ đồ, 5 bài tập, 7-8 quiz và cheat sheet.

Giai đoạn 1 · Nền tảng ngôn ngữ
01

Hello Java — JDK, JVM & công cụ

JDK/JRE/JVM khác nhau ra sao, cài bằng SDKMAN, javac/java, bytecode, JShell, Maven vs Gradle, cấu trúc dự án.

Đọc →
02

Biến, kiểu dữ liệu & toán tử

8 kiểu nguyên thủy, kiểu tham chiếu, autoboxing và bẫy == với Integer, var, String pool, BigDecimal, bảng toán tử đầy đủ.

Đọc →
03

Điều khiển luồng, mảng & nhập xuất

if/switch expression (Java 14+), pattern matching, vòng lặp, mảng một và nhiều chiều, Scanner, String.format.

Đọc →
Giai đoạn 2 · Hướng đối tượng
04

OOP cơ bản — class, object & đóng gói

Class, constructor, this, bốn mức truy cập, getter/setter, static, khối khởi tạo, package, import, vòng đời object.

Đọc →
05

OOP nâng cao — kế thừa, đa hình & interface

extends, super, override vs overload, abstract, interface với default/static method, record, sealed, enum, inner class.

Đọc →
06

Ngoại lệ — checked, unchecked & try-with-resources

Cây phân cấp Throwable, checked vs unchecked, throws vs throw, try-with-resources, custom exception, đọc stack trace.

Đọc →
Giai đoạn 3 · Thư viện cốt lõi
07

Collections Framework — List, Set, Queue

Cây phân cấp Iterable/Collection, ArrayList vs LinkedList, HashSet/TreeSet, Deque, độ phức tạp, chọn đúng cấu trúc.

Đọc →
08

Map Framework & hợp đồng equals/hashCode

HashMap hoạt động bên trong (bucket, va chạm, treeify), LinkedHashMap, TreeMap, vì sao tránh Hashtable, quy tắc key bất biến.

Đọc →
09

Generics — kiểu tổng quát

Type parameter, generic class/method, bounded type, wildcard và nguyên tắc PECS, type erasure và mọi hệ quả của nó.

Đọc →
10

Java hàm — lambda, Stream API & Optional

Functional interface, lambda, method reference, Stream (intermediate vs terminal), Collectors, Optional dùng đúng cách, parallel stream.

Đọc →
11

Xử lý tệp tin & Serialization

File vs Path, stream byte/ký tự, Buffered, NIO.2 Files, Serializable, transient, serialVersionUID, JSON hiện đại.

Đọc →
Giai đoạn 4 · Hệ thống thật
12

Đa luồng & đồng thời

Thread, ExecutorService, synchronized, volatile, deadlock, collection an toàn luồng, CompletableFuture, virtual thread (Java 21).

Đọc →
13

JDBC & cơ sở dữ liệu

Kiến trúc JDBC, Connection, Statement vs PreparedStatement, SQL injection, ResultSet, giao dịch, connection pool (HikariCP), mẫu DAO.

Đọc →
14

Kiểm thử, build & dự án thực chiến

JUnit 5, assertion, parameterized test, Mockito, Maven/Gradle, đóng gói JAR, và một ứng dụng quản lý hoàn chỉnh ghép cả 13 chương.

Đọc →

Vì sao vẫn học Java năm 2026?

🧠 Mental model

Java không còn là ngôn ngữ "hot" trên mạng xã hội, nhưng nó vẫn chạy phần lớn hệ thống backend quan trọng của thế giới: ngân hàng lõi, thanh toán, viễn thông, sàn thương mại điện tử, dữ liệu lớn (Hadoop, Spark, Kafka đều viết bằng Java/Scala trên JVM), và toàn bộ Android.

Điều đó có nghĩa: nhu cầu tuyển dụng ổn định, hệ sinh thái cực kỳ trưởng thành, và — quan trọng nhất với người học — Java buộc bạn phải nói rõ mọi thứ. Kiểu dữ liệu tường minh, ngoại lệ được kiểm tra, mô hình bộ nhớ rõ ràng. Học Java xong, bạn hiểu được vì sao Python hay JavaScript chọn làm khác.

Write once, run anywhere. Khẩu hiệu của Java từ 1995 — và cơ chế đứng sau nó (biên dịch ra bytecode rồi để JVM lo phần còn lại) chính là chìa khoá để hiểu mọi thứ khác trong ngôn ngữ này.
💡 Đối tượng phù hợp

Người mới hoàn toàn — Java dài dòng hơn Python nhưng chính sự dài dòng đó khiến mọi khái niệm (kiểu, phạm vi, đối tượng, tham chiếu) trở nên hiển hiện, không có gì ngầm ẩn.
Đã biết Python/JS — mỗi chương có callout đối chiếu, chỉ rõ chỗ Java làm khác và vì sao.
Chuẩn bị phỏng vấn — các mục "Góc phỏng vấn" nêu đúng những câu hay được hỏi: HashMap hoạt động thế nào, equals/hashCode, type erasure, String pool, deadlock.

⚠️ Cảnh báo về tài liệu Java trên mạng

Phần lớn tutorial Java tiếng Việt vẫn dừng ở Java 8 (phát hành 2014) — dùng Date thay LocalDate, Vector/Hashtable thay ArrayList/HashMap, viết getter/setter tay thay record, và switch kiểu cũ với break ở mọi nhánh.

Sub-pillar này lấy Java 21 LTS làm chuẩn và ghi rõ phiên bản cho từng tính năng, để bạn biết code của mình chạy được ở đâu. Nơi nào cách viết cũ vẫn hay gặp trong dự án thật, chúng ta học cả hai — nhưng luôn nói rõ cái nào nên dùng.

Java trong bức tranh Pillar 9

Mỗi chương có mục "Kết nối" trỏ tới chương tương ứng ở sub-pillar khác. Ba đối chiếu đáng chú ý nhất:

Java cũng nối chặt với các trụ cột nền tảng: OOP (trụ cột 6) tìm được ví dụ cụ thể nhất ở đây; DSA (trụ cột 2) dùng Collections làm công cụ; Database (trụ cột 5) gặp lại ở Chương 13 (JDBC); OS (trụ cột 3) giải thích luồng và bộ nhớ ở Chương 12.