Java Foundations/Module 1 — Tổng kết & cheat sheet
9/39
Bài 9 / 39~6 phútNhập môn & Tư duy lập trìnhMiễn phí lượt xem

Module 1 — Tổng kết & cheat sheet

Tóm tắt toàn bộ Module 1: bytecode, JVM/JRE/JDK, môi trường, Hello World, tư duy I-P-O. Bookmark trang này để tra cứu nhanh.

TL;DR: Module 1 đưa bạn từ "Java là gì?" đến chương trình chạy được đầu tiên. Bạn đã hiểu bytecode và JVM là nền tảng của Write Once Run Anywhere; phân biệt JDK/JRE/JVM để chọn đúng công cụ; cài môi trường và chạy Hello World bằng javac/java; áp mô hình I-P-O để phân rã bài toán thành sequence, selection, iteration. Trang này để bookmark và tra cứu nhanh.

Đã đi qua những gì

Module 1 bắt đầu với câu hỏi nền tảng: tại sao Java lại chạy được trên mọi hệ điều hành mà không cần compile lại? Câu trả lời nằm ở bytecode — lớp trung gian mà javac tạo ra từ source, và JVM đọc để chạy trên từng nền tảng cụ thể. Từ đó bạn phân biệt ba khái niệm thường nhầm lẫn: JVM (động cơ chạy bytecode), JRE (JVM cộng thư viện chuẩn, đủ để deploy), JDK (JRE cộng công cụ biên dịch, cần để viết code) — và biết khi nào cần cái nào. Bài cài đặt môi trường đưa bạn từ máy trắng đến JDK 21 LTS chạy được, với java -versionjavac -version xác nhận. Hello World không chỉ là nghi lễ — bạn giải thích được vai trò từng keyword: vì sao main phải static, vì sao tên file phải khớp tên class, System.out.println làm gì khác System.out.print. Bài compile-và-run đào sâu vòng đời bytecode: javap -c để đọc instruction stack-based, classpath để JVM tìm .class. Cuối cùng, tư duy I-P-O trang bị cho bạn khung phân rã bài toán trước khi viết một dòng code — và mini-challenge lịch tháng là bài thực chiến khép lại module.

🗺️ Cheat sheet

ConceptKhi nào dùng / Ý chínhPitfall
BytecodeFile .class do javac sinh ra — lệnh trung gian không phụ thuộc OSBytecode không chạy trực tiếp; cần JVM đọc và thực thi
JVMĐọc bytecode, chạy trên từng OS cụ thể; JIT compile hot path sang native codeMỗi OS có JVM riêng — JVM không portable, bytecode mới portable
JREJVM + thư viện chuẩn (java.lang, java.util…) — đủ để chạy app đã buildTừ Java 9 không còn bản JRE standalone; dùng JDK hoặc jlink
JDKJRE + javac, jar, javap, jdb — cần để viết và build codeDeveloper luôn cài JDK, không phải JRE
javac Foo.javaCompile source thành Foo.classTên file phải khớp tên public class (kể cả hoa/thường)
java FooNạp Foo.class lên JVM và chạyKhông có extension .class; sai classpath → ClassNotFoundException
main signaturepublic static void main(String[] args) — signature cố định JVM gọiThiếu static hoặc sai kiểu tham số → JVM không tìm thấy entry point
System.out.printlnIn ra console và xuống dòng; System.out.print in không xuống dòngNhầm println / print là lỗi logic, không phải lỗi compile
Classpath-cp <path> chỉ JVM tìm .class; mặc định là . (thư mục hiện tại)Quên set classpath khi .class không cùng thư mục → không chạy được
Mô hình I-P-OInput → Processing → Output: đặt 3 câu hỏi trước khi codeBỏ qua edge case (số âm, chuỗi rỗng, null) ngay từ bước Processing
3 constructSequence, selection (if/switch), iteration (for/while) — đủ để xây mọi thuật toán (Böhm-Jacopini)Nhầm construct không sai cú pháp nhưng logic sai — cần trace tay

📖 Glossary

Thuật ngữĐịnh nghĩa
BytecodeTập lệnh trung gian stack-based do javac sinh ra, lưu trong file .class, không phụ thuộc hệ điều hành.
JVMJava Virtual Machine — phần mềm đọc bytecode và sinh machine code cho từng OS; là động cơ của Java platform.
JREJava Runtime Environment — JVM cộng thư viện chuẩn Java; đủ để chạy app Java đã build sẵn.
JDKJava Development Kit — JRE cộng các công cụ phát triển (javac, jar, javap, jdb); cần để viết và build code.
JITJust-In-Time Compiler — thành phần trong JVM compile bytecode "hot path" thành native machine code khi chạy, tăng tốc đáng kể sau warm-up.
ClassloaderThành phần JVM tải file .class vào memory theo 3 tầng (Java 9+): Bootstrap, Platform, Application (trước Java 9, tầng giữa là Extension).
ClasspathDanh sách thư mục/jar file nơi JVM tìm file .class; mặc định là thư mục hiện tại (.).
I-P-OInput-Processing-Output — mô hình phân rã chương trình thành 3 pha; công cụ tư duy trước khi code.
SequenceConstruct cơ bản: các lệnh thực thi lần lượt theo thứ tự xuất hiện.
SelectionConstruct rẽ nhánh (if, switch): chọn một trong nhiều đường đi tùy điều kiện.
IterationConstruct lặp (for, while, do-while): thực thi một khối lệnh nhiều lần tùy điều kiện.
Write Once Run AnywhereTriết lý nền tảng của Java: bytecode compile một lần, chạy trên mọi OS có JVM — không cần compile lại.

✅ Self-assessment

Bạn đã đạt module này nếu trả lời được:

🚀 Tiếp theo

Module 2 — Cú pháp Java & kiểu dữ liệu — bắt đầu xây trên nền tảng này: biến, kiểu nguyên thủy (int, double, boolean, char), toán tử, ép kiểu, String, và cách Java quản lý bộ nhớ stack vs heap. Bạn sẽ viết chương trình thực sự xử lý dữ liệu, không chỉ in ra console.

📚 Tài liệu mở rộng

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên