Cài Đặt Java Bằng SDKMAN: Hướng Dẫn Toàn Diện Cho Java Developer
SDKMAN là một công cụ mạnh mẽ để quản lý nhiều phiên bản Java và các công nghệ khác trên nền JVM. Bài viết này hướng dẫn cách cài đặt SDKMAN và sử dụng nó để quản lý Java trên máy phát triển một cách dễ dàng.

SDKMAN là gì?
SDKMAN! (Software Development Kit Manager) là một công cụ dùng để quản lý song song nhiều phiên bản của các Software Development Kit trên hầu hết các hệ điều hành nền Unix. Nó cung cấp Command Line Interface (CLI) và API tiện lợi để cài đặt, chuyển đổi, gỡ bỏ và liệt kê các candidate.
SDKMAN hỗ trợ nhiều công nghệ trên nền JVM, bao gồm:
- Java (Oracle JDK, OpenJDK, Amazon Corretto, GraalVM, v.v.)
- Gradle - Công cụ tự động hóa build
- Maven - Công cụ quản lý dự án
- Kotlin - Ngôn ngữ lập trình cho JVM
- Scala - Ngôn ngữ lập trình hàm
- Spring Boot CLI - Command line interface của Spring Boot
- Và còn nhiều hơn nữa!
Vì sao nên dùng SDKMAN?
🔄 Quản lý phiên bản dễ dàng
Chuyển đổi giữa các phiên bản Java chỉ với một câu lệnh, rất phù hợp cho những dự án cần các phiên bản JDK khác nhau.
🚀 Quy trình cài đặt đơn giản
Bạn không cần tải thủ công, giải nén hay tự cấu hình environment variable. SDKMAN sẽ xử lý toàn bộ.
🌍 Hỗ trợ đa nền tảng
Hoạt động trên Linux, macOS và Windows (thông qua WSL hoặc Git Bash).
📦 Hỗ trợ nhiều vendor
Bạn có thể chọn nhiều Java distribution khác nhau như Oracle JDK, OpenJDK, Amazon Corretto, AdoptOpenJDK và nhiều lựa chọn khác.
Điều kiện chuẩn bị
Trước khi cài SDKMAN, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:
Để cài SDKMAN:
- Hệ điều hành nền Unix (Linux, macOS, hoặc Windows với WSL/Git Bash)
- curl hoặc wget đã được cài đặt
- bash shell (phiên bản 3.2+)
Để cài Java/SDK (sau khi đã có SDKMAN):
- zip và unzip (cần để giải nén các SDK được tải về)
Bạn có thể kiểm tra các điều kiện trên bằng các lệnh sau:
# Check if curl is installed (required for SDKMAN installation)
curl --version
# Check bash version (required for SDKMAN)
bash --version
# Check if zip/unzip are available (needed later for SDK installations)
zip --version
unzip --versionCài đặt SDKMAN
Bước 1: Cài SDKMAN
Mở terminal và chạy lệnh sau để cài SDKMAN:
curl -s "https://get.sdkman.io" | bashLệnh này sẽ:
- Tải script cài đặt SDKMAN
- Cài SDKMAN vào thư mục home của bạn (
~/.sdkman) - Thêm các cấu hình cần thiết vào shell profile
Bước 2: Khởi tạo SDKMAN
Sau khi cài đặt xong, bạn cần khởi tạo SDKMAN trong terminal hiện tại:
source "$HOME/.sdkman/bin/sdkman-init.sh"Ngoài ra, bạn cũng có thể mở một cửa sổ terminal mới và SDKMAN sẽ được khởi tạo tự động.
Bước 3: Xác minh cài đặt
Hãy kiểm tra xem SDKMAN đã được cài đúng chưa bằng cách xem version:
sdk versionBạn sẽ thấy output tương tự:
SDKMAN!
script: 5.18.0
native: 0.4.6Cài đặt Java bằng SDKMAN
Khi SDKMAN đã được cài xong, hãy cùng xem cách cài và quản lý các phiên bản Java.
Liệt kê các phiên bản Java có sẵn
Để xem tất cả các phiên bản Java đang có, dùng:
sdk list javaLệnh này sẽ hiển thị danh sách đầy đủ các Java distribution và phiên bản:
================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 21.0.1 | amzn | | 21.0.1-amzn
| | 17.0.9 | amzn | | 17.0.9-amzn
| | 11.0.21 | amzn | | 11.0.21-amzn
| | 8.0.392 | amzn | | 8.0.392-amzn
Graal CE | | 21.0.1 | graalce | | 21.0.1-graalce
| | 17.0.9 | graalce | | 17.0.9-graalce
OpenJDK | | 21.0.1 | open | | 21.0.1-open
| | 17.0.9 | open | | 17.0.9-open
| | 11.0.21 | open | | 11.0.21-open
| | 8.0.392 | open | | 8.0.392-open
Oracle | | 21.0.1 | oracle | | 21.0.1-oracle
| | 17.0.9 | oracle | | 17.0.9-oracle
================================================================================Cài một phiên bản Java
Để cài một phiên bản Java cụ thể, dùng lệnh install với identifier tương ứng:
# Install the latest LTS version (Java 21)
sdk install java 21.0.1-open
# Install Java 17 (Previous LTS)
sdk install java 17.0.9-open
# Install Java 11 (Another LTS version)
sdk install java 11.0.21-open
# Install Amazon Corretto 17
sdk install java 17.0.9-amznTrong quá trình cài, SDKMAN sẽ hỏi bạn có muốn đặt phiên bản này làm mặc định hay không. Nhập Y nếu đồng ý hoặc N nếu không.
Cài phiên bản Java mới nhất
Để cài phiên bản Java mới nhất mà không cần chỉ định chính xác version:
sdk install javaSDKMAN sẽ cài bản stable mới nhất và đặt nó làm phiên bản Java mặc định.
Quản lý các phiên bản Java
Chuyển đổi giữa các phiên bản Java
Dùng một phiên bản cụ thể cho terminal hiện tại
sdk use java 17.0.9-openLệnh này chỉ chuyển sang Java 17 cho terminal session hiện tại.
Đặt phiên bản Java mặc định
sdk default java 21.0.1-openLệnh này sẽ đặt Java 21 làm phiên bản mặc định cho mọi terminal session mới.
Liệt kê các phiên bản Java đã cài
Để xem tất cả các phiên bản Java đã được cài trên hệ thống:
sdk list java | grep installedHoặc dùng:
sdk current javaLệnh này sẽ hiển thị phiên bản Java đang active.
Xác minh cài đặt Java
Sau khi cài hoặc chuyển phiên bản Java, hãy xác minh lại:
java -version
javac -version
echo $JAVA_HOMEBạn sẽ thấy output thể hiện đúng phiên bản Java và đường dẫn JAVA_HOME.
Ngoài ra, bạn cũng có thể tự cấu hình JAVA_HOME trong .bash_profile hoặc .zshrc:
export JAVA_HOME=${SDKMAN_CANDIDATES_DIR}/java/${CURRENT}Các tính năng nâng cao của SDKMAN
Cấu hình môi trường
SDKMAN tự động thiết lập biến môi trường JAVA_HOME khi bạn chuyển phiên bản Java. Bạn có thể kiểm tra bằng:
echo $JAVA_HOME
# Output: /Users/username/.sdkman/candidates/java/currentGỡ cài đặt phiên bản Java
Để xóa một phiên bản Java không còn dùng nữa:
sdk uninstall java 11.0.21-openCập nhật SDKMAN
Hãy giữ SDKMAN luôn ở phiên bản mới nhất bằng:
sdk updateXóa archive và file tạm
Dọn các file archive đã tải và file tạm:
sdk flush archives
sdk flush tempPhiên bản Java theo từng dự án
Sử dụng file .sdkmanrc
Bạn có thể tạo file .sdkmanrc ở thư mục gốc của dự án để chỉ định phiên bản Java cho dự án đó:
# Navigate to your project directory
cd /path/to/your/project
# Create .sdkmanrc file
echo "java=17.0.9-open" > .sdkmanrc
# Enable auto-switching (one-time setup)
sdk config
# Set sdkman_auto_env=trueTừ đó về sau, mỗi khi bạn cd vào thư mục dự án, SDKMAN sẽ tự động chuyển sang phiên bản Java đã được chỉ định.
Xử lý các lỗi thường gặp
Lỗi 1: Command Not Found
Nếu bạn gặp lỗi "sdk: command not found":
# Check if SDKMAN is properly sourced
echo $SDKMAN_DIR
# If empty, manually source SDKMAN
source "$HOME/.sdkman/bin/sdkman-init.sh"
# Add to your shell profile permanently
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.bashrc
# or for zsh users
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.zshrcLỗi 2: Permission Denied
Nếu bạn gặp lỗi liên quan đến quyền truy cập:
# Check SDKMAN directory permissions
ls -la ~/.sdkman
# Fix permissions if needed
chmod -R 755 ~/.sdkmanLỗi 3: Vấn đề mạng
Nếu việc tải xuống thất bại do sự cố mạng:
# Set proxy if needed
export http_proxy=http://your-proxy:port
export https_proxy=https://your-proxy:port
# Or configure SDKMAN with different mirror
sdk configBest practices
1. Giữ các phiên bản LTS
Hãy cài và duy trì các phiên bản Long Term Support (LTS) để đảm bảo tính ổn định:
- Java 8 (LTS đến năm 2030)
- Java 11 (LTS đến năm 2026)
- Java 17 (LTS đến năm 2029)
- Java 21 (LTS đến năm 2031)
2. Dùng phiên bản riêng cho từng dự án
Tạo file .sdkmanrc cho từng dự án để đảm bảo tính đồng nhất trong team:
# Example .sdkmanrc for a Spring Boot project
java=17.0.9-open
gradle=8.4
maven=3.9.53. Cập nhật thường xuyên
Hãy giữ các bản cài Java luôn được cập nhật:
# Update SDKMAN itself
sdk update
# Check for newer versions
sdk list java
# Upgrade to newer patch versions
sdk install java 21.0.2-open
sdk default java 21.0.2-open
sdk uninstall java 21.0.1-open4. Dọn dẹp định kỳ
Xóa các phiên bản không còn dùng để tiết kiệm dung lượng ổ đĩa:
# List installed versions
sdk list java | grep installed
# Remove old versions
sdk uninstall java 8.0.382-open
# Clean up archives
sdk flush archivesKết luận
SDKMAN là một công cụ gần như không thể thiếu với Java developer thường xuyên làm việc với nhiều phiên bản Java hoặc các công nghệ khác trên nền JVM. Nó giúp đơn giản hóa việc cài đặt, quản lý và chuyển đổi giữa các Java distribution cũng như version khác nhau.
Những lợi ích chính khi dùng SDKMAN:
- ✅ Quản lý phiên bản dễ dàng - Chuyển đổi giữa các phiên bản Java chỉ với một lệnh
- ✅ Hỗ trợ nhiều vendor - Lựa chọn giữa Oracle, OpenJDK, Amazon Corretto và nhiều hơn nữa
- ✅ Cấu hình theo từng dự án - Dùng
.sdkmanrcđể đồng bộ trong team - ✅ Thiết lập môi trường tự động - Không cần cấu hình
JAVA_HOMEthủ công - ✅ Tương thích đa nền tảng - Hoạt động trên Linux, macOS và Windows (WSL)
Dù bạn đang bảo trì ứng dụng cũ trên Java 8, phát triển microservice hiện đại với Java 17, hay thử nghiệm các tính năng mới nhất của Java 21, SDKMAN đều giúp việc quản lý môi trường Java trở nên mượt mà hơn rất nhiều.
Hãy bắt đầu dùng SDKMAN ngay hôm nay để trải nghiệm cách quản lý phiên bản Java đơn giản và hiệu quả hơn!