Cài đặt môi trường phát triển
Sau bài này, bạn sẽ:
- Cài đặt thành công JDK và cấu hình biến môi trường trên Windows, macOS, hoặc Linux
- Chọn và cài đặt IDE phù hợp cho Java development (IntelliJ IDEA, VS Code, hoặc Eclipse)
- Viết, compile và chạy chương trình Hello World đầu tiên
- Hiểu được quy trình compile và execute Java code qua javac và java commands
- Khắc phục các lỗi thường gặp khi setup môi trường Java
Bài trước: Java là gì? Tổng quan về Java — Giới thiệu về Java và các khái niệm cơ bản. Bài này sẽ hướng dẫn cài đặt môi trường để bắt đầu lập trình Java.
Để bắt đầu lập trình Java, bạn cần setup môi trường phát triển. Bài học này sẽ hướng dẫn chi tiết từng bước cài đặt JDK, IDE và viết chương trình đầu tiên.
Bước 1: Cài đặt JDK (Java Development Kit)
Chọn JDK Distribution
Có nhiều JDK distributions, tất cả đều tuân theo Java specification:
| Distribution | Miễn phí | Khuyên dùng cho | Link |
|---|---|---|---|
| Oracle JDK | ❌ (Commercial license) | Production enterprise | oracle.com/java |
| Oracle OpenJDK | ✅ Open source | Development, production | jdk.java.net |
| Adoptium (Eclipse Temurin) | ✅ Open source | Khuyên dùng! | adoptium.net |
| Amazon Corretto | ✅ Open source | AWS environments | aws.amazon.com/corretto |
| Azul Zulu | ✅ Open source | Cross-platform | azul.com/downloads |
Adoptium (Eclipse Temurin) là lựa chọn tốt nhất cho beginners:
- ✅ Miễn phí, open source
- ✅ Có installers cho mọi OS
- ✅ LTS support
- ✅ Được cộng đồng tin dùng
Chọn phiên bản Java
Nên cài Java 17 hoặc Java 21 (LTS versions):
- Java 17: Ổn định, nhiều tutorials
- Java 21: Mới nhất, có virtual threads, modern features
Trong tutorial này, chúng ta dùng Java 17 LTS.
Cài đặt JDK trên Windows
Bước 1: Download JDK
- Truy cập adoptium.net
- Chọn:
- Version: 17 (LTS)
- Operating System: Windows
- Architecture: x64 (64-bit)
- Click Download file
.msi
Bước 2: Cài đặt
- Double-click file
.msivừa download - Click Next → Next → Install
- Installer sẽ tự động add vào PATH (nếu check option Add to PATH)
- Click Finish
Bước 3: Cấu hình biến môi trường
Mở Command Prompt và kiểm tra:
java -version
Kết quả mong đợi:
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment Temurin-17.0.9+9 (build 17.0.9+9)
OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (build 17.0.9+9, mixed mode, sharing)
Nếu hiện lỗi 'java' is not recognized, cần thêm vào PATH manually.
Hiểu rõ JAVA_HOME và PATH
Tại sao cần JAVA_HOME và PATH?
- JAVA_HOME: Địa chỉ nơi JDK được cài đặt — giống "địa chỉ nhà"
- PATH: Danh sách các địa chỉ mà OS sẽ tìm khi bạn gọi một lệnh — giống "danh bạ điện thoại"
Khi bạn gõ java hoặc javac, OS tìm trong PATH để biết nơi thực thi chương trình đó.
JAVA_HOME:
- Environment variable trỏ đến thư mục root của JDK
- Ví dụ:
C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot - Ai dùng? Nhiều tools (Maven, Gradle, Tomcat, IDE) cần biết JDK ở đâu
PATH:
- Environment variable chứa danh sách các thư mục chứa executable files
- Khi gõ
java, OS tìm trong PATH để tìmjava.exe - Thêm
%JAVA_HOME%\binvào PATH → OS tìm đượcjava.exe,javac.exe
Cách hoạt động:
Cách thêm JAVA_HOME và PATH
-
Tìm đường dẫn cài đặt JDK:
- Thường ở:
C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot\
- Thường ở:
-
Mở Environment Variables:
- Right-click This PC → Properties
- Click Advanced system settings
- Click Environment Variables
-
Tạo biến JAVA_HOME:
- Trong System variables, click New
- Variable name:
JAVA_HOME - Variable value:
C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot - Click OK
-
Thêm vào PATH:
- Tìm biến Path trong System variables
- Click Edit → New
- Thêm:
%JAVA_HOME%\bin - Click OK → OK → OK
Thay vì ghi trực tiếp C:\Program Files\...\bin, dùng %JAVA_HOME%\bin có lợi:
- Dễ thay đổi: Chỉ cần update JAVA_HOME khi upgrade JDK
- Portable: Copy config sang máy khác dễ dàng
- Tools compatibility: Maven, Gradle, IDE đều đọc JAVA_HOME
- Restart Command Prompt và test lại:
java -version
javac -version
Verify JAVA_HOME:
echo %JAVA_HOME%
# Output: C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot
Cài đặt JDK trên macOS
Bước 1: Download JDK
- Truy cập adoptium.net
- Chọn:
- Version: 17 (LTS)
- Operating System: macOS
- Architecture: x64 hoặc aarch64 (M1/M2)
- Download file
.pkg
Bước 2: Cài đặt
- Double-click file
.pkg - Follow hướng dẫn → Click Install
- Nhập password khi được yêu cầu
Bước 3: Kiểm tra cài đặt
Mở Terminal và chạy:
java -version
javac -version
Bước 4: Cấu hình JAVA_HOME (Optional)
Thêm vào ~/.zshrc hoặc ~/.bash_profile:
# Mở file config
nano ~/.zshrc
# Thêm dòng này:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
# Save (Ctrl+O, Enter, Ctrl+X)
# Apply changes
source ~/.zshrc
Verify:
echo $JAVA_HOME
# Output: /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
Quản lý nhiều Java versions
Trong thực tế, developers thường làm việc với nhiều projects dùng các Java versions khác nhau. Version managers giúp switch giữa các versions dễ dàng.
Option 1: SDKMAN (Khuyến nghị — Cross-platform)
SDKMAN quản lý nhiều JDK versions, Maven, Gradle, v.v. — hoạt động trên Linux, macOS, Windows (Git Bash/WSL).
# Cài đặt SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# List tất cả Java versions có sẵn
sdk list java
# Cài đặt Java 17
sdk install java 17.0.9-tem # Temurin 17
# Cài đặt Java 21
sdk install java 21.0.1-tem # Temurin 21
# Switch version cho session hiện tại
sdk use java 17.0.9-tem
# Set default global version
sdk default java 17.0.9-tem
# Verify
java -version
Project-specific version:
# Trong project folder
sdk env init
# File .sdkmanrc được tạo:
java=17.0.9-tem
# Khi cd vào folder, SDKMAN tự động switch version!
Nếu bạn dùng Node.js, SDKMAN giống nvm (Node Version Manager) — quản lý nhiều versions, switch dễ dàng.
Option 2: jenv (macOS / Linux only)
jenv chuyên quản lý Java versions trên macOS và Linux.
# Install jenv (macOS)
brew install jenv
# Thêm vào shell config (~/.zshrc hoặc ~/.bash_profile)
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
# Reload shell
source ~/.zshrc
# Add Java versions đã cài
jenv add /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/temurin-21.jdk/Contents/Home
# List versions
jenv versions
# Set global version
jenv global 17.0
# Set local version (cho project hiện tại)
cd ~/my-project
jenv local 21.0
# Verify
java -version
jenv tạo file .java-version:
# Trong project folder
cat .java-version
# Output: 21.0
# Khi cd vào folder này, jenv tự động switch!
Option 3: Update JAVA_HOME thủ công (Windows)
Tạo batch scripts để switch nhanh:
File set-java17.bat:
@echo off
set JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot
set PATH=%JAVA_HOME%\bin;%PATH%
echo Switched to Java 17
java -version
File set-java21.bat:
@echo off
set JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-21.0.1.12-hotspot
set PATH=%JAVA_HOME%\bin;%PATH%
echo Switched to Java 21
java -version
Chạy khi cần switch:
set-java17.bat # Switch to Java 17
set-java21.bat # Switch to Java 21
Thay đổi JAVA_HOME trong Command Prompt chỉ áp dụng cho session hiện tại. Mở cửa sổ mới → JAVA_HOME về giá trị system variable.
Cài đặt JDK trên Linux (Ubuntu/Debian)
Bước 1: Cài đặt qua APT (Cách dễ nhất)
# Update package list
sudo apt update
# Install JDK 17
sudo apt install openjdk-17-jdk -y
Bước 2: Kiểm tra
java -version
javac -version
Kết quả:
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-1ubuntu1)
OpenJDK 64-Bit Server VM (build 17.0.9+9-Ubuntu-1ubuntu1, mixed mode, sharing)
Bước 3: Cấu hình JAVA_HOME
Thêm vào ~/.bashrc:
# Mở file
nano ~/.bashrc
# Thêm dòng này:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# Save và reload
source ~/.bashrc
Quản lý nhiều Java versions (Linux)
# List các Java versions đã cài
sudo update-alternatives --config java
# Chọn version mặc định
# Nhập số tương ứng và Enter
Bước 2: Cài đặt IDE (Integrated Development Environment)
IDE giúp viết code dễ dàng hơn với features: syntax highlighting, autocomplete, debugging.
Option 1: IntelliJ IDEA Community (Khuyến nghị)
Ưu điểm:
- ✅ Free, powerful, modern
- ✅ Smart code completion
- ✅ Built-in tools (Maven, Gradle, Git)
- ✅ Excellent debugging
Cài đặt:
- Download từ jetbrains.com/idea/download
- Chọn Community Edition (Free)
- Cài đặt theo hướng dẫn
First-time setup:
- Launch IntelliJ IDEA
- Choose theme: Darcula (dark) hoặc IntelliJ Light
- Skip plugin setup (có thể cài sau)
Option 2: Visual Studio Code
Ưu điểm:
- ✅ Lightweight, fast
- ✅ Nhiều extensions
- ✅ Good cho beginners
Cài đặt:
- Download từ code.visualstudio.com
- Install extensions:
- Extension Pack for Java (by Microsoft)
- Bao gồm: Language Support, Debugger, Test Runner, Maven, Gradle
Option 3: Eclipse
Ưu điểm:
- ✅ Free, mature, widely used
- ✅ Good for enterprise Java
Cài đặt:
- Download từ eclipse.org/downloads
- Chọn Eclipse IDE for Java Developers
IntelliJ IDEA Community là lựa chọn tốt nhất:
- UI trực quan, dễ dùng
- Smart features giúp học nhanh hơn
- Industry standard (nhiều công ty dùng)
Bước 3: Viết chương trình Hello World đầu tiên
Cách 1: Dùng Text Editor và Command Line
Bước 3.1: Tạo file Java
Tạo folder project:
mkdir java-tutorial
cd java-tutorial
Tạo file HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
System.out.println("Chào mừng đến với Java!");
}
}
- Tên file PHẢI trùng với tên class:
HelloWorld.java - Java phân biệt chữ HOA/thường:
helloworld.javasẽ BỊ LỖI!
Bước 3.2: Compile
javac HelloWorld.java
Lệnh này tạo ra file HelloWorld.class (bytecode).
Verify:
ls
# HelloWorld.java HelloWorld.class
Bước 3.3: Chạy
java HelloWorld
Output:
Hello, World!
Chào mừng đến với Java!
Hiểu rõ quy trình Compilation
javac — Java Compiler
Syntax:
javac [options] [source files]
Quá trình compilation:
Ví dụ chi tiết:
# Compile với verbose output
javac -verbose HelloWorld.java
# Output:
# [parsing started HelloWorld.java]
# [parsing completed 15ms]
# [search path for source files: .]
# [loading java/lang/Object.class]
# [checking HelloWorld]
# [wrote HelloWorld.class]
Xem thêm: Advanced options
Options hữu ích:
# Chỉ định Java version target
javac -source 17 -target 17 HelloWorld.java
# Hoặc đơn giản hơn (Java 9+)
javac --release 17 HelloWorld.java
# Compile với debug information (để debugger dùng)
javac -g HelloWorld.java
# Chỉ định output directory
javac -d bin HelloWorld.java # Output: bin/HelloWorld.class
# Chỉ định classpath (khi dùng external libraries)
javac -cp lib/gson.jar MyApp.java
java — Java Application Launcher
Syntax:
java [options] class-name [arguments]
Quá trình execution:
User gõ: java HelloWorld
↓
┌─────────────────────────────────────┐
│ 1. JVM khởi động │
│ - Load JVM vào memory │
│ - Khởi tạo runtime environment │
└────────────┬────────────────────────┘
▼
┌─────────────────────────────────────┐
│ 2. ClassLoader load HelloWorld │
│ - Tìm HelloWorld.class │
│ - Đọc bytecode │
└────────────┬────────────────────────┘
▼
┌─────────────────────────────────────┐
│ 3. Bytecode Verifier │
│ - Kiểm tra bytecode hợp lệ │
│ - Verify an toàn │
└────────────┬────────────────────────┘
▼
┌─────────────────────────────────────┐
│ 4. Tìm main() method │
│ public static void main(...) │
└────────────┬────────────────────────┘
▼
┌─────────────────────────────────────┐
│ 5. Execution Engine thực thi │
│ - Interpreter dịch bytecode │
│ - JIT compile hot code │
└────────────┬────────────────────────┘
▼
Output: Hello, World!
javac: Java Compiler - compile.java→.class(bytecode)java: Java Launcher - chạy bytecode từ.class- Chú ý: Chạy
java HelloWorld(không có.classextension và không có.java)- ✅
java HelloWorld - ❌
java HelloWorld.class - ❌
java HelloWorld.java(trừ Java 11+ single-file execution)
- ✅
Xem thêm: Advanced options
Options hữu ích:
# Chỉ định classpath
java -cp bin HelloWorld
# Set system properties
java -Duser.timezone=UTC HelloWorld
# Set heap memory
java -Xms512m -Xmx2g HelloWorld # Min 512MB, Max 2GB
# Enable assertions
java -ea HelloWorld
Java 11+: Single-file source-code execution
# Java 11+ có thể chạy .java trực tiếp (không cần compile trước)
java HelloWorld.java
# JVM tự động compile trong memory và chạy
Lỗi 1: Chạy với extension
java HelloWorld.class # ❌ Error: Could not find or load main class
java HelloWorld # ✅ Correct
Lỗi 2: Không có main() method
# Error: Main method not found in class HelloWorld
# → Phải có: public static void main(String[] args)
Lỗi 3: Class name != File name
// File: Test.java
public class HelloWorld { } // ❌ Error: class HelloWorld is public, should be declared in HelloWorld.java
Cách 2: Dùng IntelliJ IDEA
Bước 1: Tạo New Project
- Launch IntelliJ IDEA
- Click New Project
- Cấu hình:
- Name:
JavaTutorial - Location: Chọn folder lưu project
- Language: Java
- Build system: IntelliJ
- JDK: 17 (nếu chưa có, click Download JDK)
- Add sample code: Check ✅
- Name:
- Click Create
Bước 2: Tạo Class
- Right-click
srcfolder → New → Java Class - Nhập tên:
HelloWorld - Viết code:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
System.out.println("Xin chào từ IntelliJ IDEA!");
}
}
Bước 3: Run
- Cách 1: Click ▶️ icon màu xanh bên cạnh
public class - Cách 2: Right-click file → Run 'HelloWorld.main()'
- Cách 3: Shortcut:
Ctrl+Shift+F10(Windows) /Ctrl+Shift+R(macOS)
Output trong console:
Hello, World!
Xin chào từ IntelliJ IDEA!
Process finished with exit code 0
Cấu trúc Project cơ bản
Project Structure
java-tutorial/
├── src/ # Source code (.java files)
│ └── HelloWorld.java
├── out/ # Compiled output (.class files)
│ └── HelloWorld.class
└── lib/ # External libraries (JAR files)
IntelliJ Project Structure
JavaTutorial/
├── .idea/ # IntelliJ config (auto-generated)
├── src/ # Source folder
│ └── HelloWorld.java
├── out/ # Build output
│ └── production/
│ └── JavaTutorial/
│ └── HelloWorld.class
├── JavaTutorial.iml # Module config
└── .gitignore
- Source code: Luôn đặt trong folder
src/ - Compiled files: Không commit
.classfiles vào Git - Dependencies: Dùng build tools (Maven, Gradle) để quản lý
Giải thích chương trình Hello World
// Dòng 1: Khai báo class
public class HelloWorld {
// Dòng 2: Main method - entry point của chương trình
public static void main(String[] args) {
// Dòng 3: In ra console
System.out.println("Hello, World!");
}
}
Phân tích từng phần
public class HelloWorld
public: Access modifier - class có thể truy cập từ bất kỳ đâuclass: Keyword để khai báo classHelloWorld: Tên class (phải trùng với tên file)
public static void main(String[] args)
public: Method có thể gọi từ bên ngoàistatic: Method thuộc class, không cần tạo objectvoid: Method không trả về giá trịmain: Tên method đặc biệt - entry pointString[] args: Tham số command-line arguments
System.out.println("Hello, World!");
System: Class built-in trongjava.langpackageout: Static field củaSystem, kiểuPrintStreamprintln: Method để in ra console và xuống dòng"Hello, World!": String literal
- Mọi Java application PHẢI có một
mainmethod - Signature phải chính xác:
public static void main(String[] args) - Mỗi statement kết thúc bằng dấu
; - Java phân biệt chữ HOA/thường:
Main≠main
Command-line Arguments
Chương trình Java có thể nhận arguments từ command line:
public class HelloArgs {
public static void main(String[] args) {
System.out.println("Số arguments: " + args.length);
if (args.length > 0) {
System.out.println("Argument đầu tiên: " + args[0]);
}
// In tất cả arguments
for (String arg : args) {
System.out.println("Argument: " + arg);
}
}
}
Compile và chạy:
javac HelloArgs.java
java HelloArgs Alice Bob Charlie
Output:
Số arguments: 3
Argument đầu tiên: Alice
Argument: Alice
Argument: Bob
Argument: Charlie
Troubleshooting - Xử lý lỗi thường gặp
Lỗi 1: java: error: class found on application class path
Nguyên nhân: Tên class không trùng với tên file
Giải pháp:
// File: HelloWorld.java
public class HelloWorld { // ✅ Trùng tên
// ...
}
// ❌ SAI
public class Hello { // Tên khác với file
// ...
}
Lỗi 2: Error: Main method not found in class
Nguyên nhân: Signature của main method không đúng
Giải pháp:
// ✅ ĐÚNG
public static void main(String[] args) { }
// ❌ SAI
public void main(String[] args) { } // Thiếu static
public static void main() { } // Thiếu args
public static int main(String[] args) { } // Sai return type
Lỗi 3: javac: command not found
Nguyên nhân: JDK chưa được thêm vào PATH
Giải pháp: Xem lại phần "Cấu hình biến môi trường" phía trên
Lỗi 4: UnsupportedClassVersionError
Nguyên nhân: Compile với JDK version cao hơn, chạy với JRE version thấp hơn
Ví dụ: Compile với JDK 17, chạy với JRE 11
Giải pháp:
- Upgrade JRE lên version tương thích
- Hoặc compile với target version thấp hơn:
javac --release 11 HelloWorld.java
Bài tập thực hành
Bài 1: Hello with Name
Viết chương trình nhận tên từ command-line và in ra lời chào:
// Input: java HelloName Alice
// Output: Xin chào, Alice!
Xem đáp án
public class HelloName {
public static void main(String[] args) {
if (args.length > 0) {
String name = args[0];
System.out.println("Xin chào, " + name + "!");
} else {
System.out.println("Vui lòng nhập tên!");
}
}
}
Bài 2: Multiple Outputs
Viết chương trình in ra:
- Tên của bạn
- Tuổi của bạn
- Thành phố bạn sống
// Output:
// Tên: Alice
// Tuổi: 25
// Thành phố: Hà Nội
Tổng kết
Trong bài này, bạn đã học:
✅ Cài đặt JDK trên Windows, macOS, Linux
✅ Cấu hình biến môi trường JAVA_HOME và PATH
✅ Kiểm tra cài đặt với java -version, javac -version
✅ Setup IDE (IntelliJ IDEA khuyến nghị)
✅ Viết Hello World đầu tiên
✅ Compile và chạy từ command line: javac, java
✅ Cấu trúc project cơ bản
✅ Troubleshooting các lỗi thường gặp
Bài tiếp theo chúng ta sẽ học về cú pháp cơ bản Java: naming conventions, comments, packages, và input/output!