Hành trình học Java của tôi: Ngày 01 🚀
Xin chào mọi người! 👋 Tôi là Rohit, hiện tại đang chuẩn bị trở thành một lập trình viên full-stack. Kế hoạch của tôi là học Java cho backend và JavaScript cho frontend, luân phiên giữa hai ngôn ngữ vào các ngày khác nhau. Vào những ngày nghỉ lễ, tôi sẽ dành thời gian để xây dựng các dự án.
Bài viết này đánh dấu Ngày 01 trong hành trình học Java của tôi. Hôm nay tôi tập trung nhiều hơn vào lý thuyết — để hiểu tổng quan về cách Java hoạt động.
Cách một chương trình Java chạy ⚙️
Khi chúng ta viết và chạy một chương trình Java, nó trải qua các bước sau:
a. Viết mã nguồn
- Chúng ta viết chương trình bằng Java và lưu nó với phần mở rộng
.java. - Một dự án có thể có nhiều tệp
.java.
b. Biên dịch bằng javac
- Mã nguồn Java được biên dịch bằng trình biên dịch Java (
javac). - Nó kiểm tra lỗi và chuyển đổi mã thành bytecode.
- Bytecode này được lưu trong một tệp
.class. - Bytecode là độc lập với nền tảng, nghĩa là nó có thể chạy trên bất kỳ hệ thống nào.
c. Chạy bằng JVM
- Java Virtual Machine (JVM) nhận bytecode và thực thi nó.
- JVM phụ thuộc vào nền tảng (khác nhau cho các hệ điều hành và phần cứng khác nhau) nhưng bytecode vẫn giữ nguyên.
- Điều này làm cho Java có thể di động.
JDK vs JRE vs JVM 🔑
Phần này có một chút khó khăn, nhưng đây là cách tôi hiểu:
-
JDK (Java Development Kit)
Chứa tất cả các công cụ cần thiết để phát triển ứng dụng Java: trình biên dịch (javac), JRE và các công cụ khác.
👉 Chúng tôi, các lập trình viên thường cài đặt cái này. -
JRE (Java Runtime Environment)
Cung cấp môi trường để chạy ứng dụng Java. Bao gồm JVM, thư viện và các công cụ runtime khác.
👉 Người dùng cuối thường cần cái này. -
JVM (Java Virtual Machine)
Thực thi bytecode. Nó giống như “động cơ” giúp các chương trình Java chạy.
👉 Khác nhau cho mỗi hệ điều hành, nhưng không thấy được đối với chúng tôi là lập trình viên.
Các tính năng chính của Java 🌟
Dưới đây là một số tính năng nổi bật mà tôi nhận thấy:
a. Viết một lần, chạy mọi nơi
- Biên dịch một lần, chạy trên bất kỳ nền tảng nào có JVM.
b. Tương thích ngược
- Cập nhật mới không làm hỏng mã cũ.
c. Bảo mật
- Chúng ta chia sẻ bytecode, không phải mã nguồn.
- JVM hạn chế quyền truy cập tài nguyên (như RAM, bộ nhớ) để đảm bảo an toàn.
- Nếu một chương trình gặp sự cố, chỉ có JVM gặp sự cố — không phải toàn bộ hệ thống.
d. Đa luồng
- Hỗ trợ chạy nhiều tác vụ cùng một lúc.
- Luồng có nghĩa là thực thi nhiều tác vụ đồng thời. Java thực hiện đa luồng phần mềm, tạo ra nhiều luồng trong chương trình của bạn.
- CPU chỉ có thể thực thi nhiều tác vụ thực sự song song như nó có số luồng phần cứng (số nhân vật lý × số luồng trên mỗi nhân).
- Nếu có nhiều luồng phần mềm hơn luồng phần cứng, hệ điều hành sẽ phân chia thời gian thực thi để tất cả các luồng đều có vẻ như đang chạy cùng một lúc.
e. Lập trình hướng đối tượng
- Dữ liệu được lưu trữ dưới dạng đối tượng và lớp.
- Điều này giúp ích cho nhiều thứ như tính tái sử dụng, mà tôi sẽ học sau.
Thực hành tốt nhất cho lập trình Java
- Tổ chức mã nguồn: Sử dụng cấu trúc thư mục hợp lý để phân chia mã nguồn theo chức năng và loại tệp.
- Sử dụng comment hợp lý: Thêm chú thích rõ ràng để giải thích logic của mã, giúp người khác dễ hiểu hơn.
- Kiểm tra mã thường xuyên: Sử dụng các công cụ kiểm tra tự động để phát hiện lỗi sớm.
Những điều cần tránh khi học Java
- Bỏ qua lý thuyết cơ bản: Đừng chỉ tập trung vào việc viết mã mà quên đi các khái niệm nền tảng.
- Không thực hành đủ: Lý thuyết mà không thực hành sẽ khó có thể ghi nhớ và áp dụng.
Mẹo tối ưu hiệu suất trong Java
- Sử dụng các cấu trúc dữ liệu phù hợp: Chọn cấu trúc dữ liệu tốt nhất cho nhu cầu của bạn để tối ưu hóa hiệu suất.
- Giảm thiểu việc tạo đối tượng mới: Sử dụng các đối tượng có sẵn hoặc các đối tượng tĩnh nếu có thể.
Giải quyết sự cố thường gặp
- Lỗi biên dịch: Kiểm tra cú pháp và đảm bảo rằng tất cả các tệp cần thiết đều được bao gồm.
- Lỗi runtime: Sử dụng gỡ lỗi (debugging) để theo dõi và tìm nguyên nhân sự cố.
Kết luận ✨
Hôm nay tôi đã hiểu rõ về hệ sinh thái Java — cách Java chạy và các yếu tố làm cho nó mạnh mẽ. Tôi đã viết mã nhưng thời gian có hạn không thể chia sẻ hết ở đây. Mong các bạn thông cảm nếu có sai sót.
Cảm ơn bạn đã đọc! Xin vui lòng đề xuất bất kỳ cải tiến nào 💻🚀