Nỗi lo mang tên “xung đột phiên bản Java”
Làm Java developer, chắc hẳn bạn đã từng gặp cảnh trớ trêu. Dự án legacy ở công ty chạy Java 8, dự án cá nhân cần Java 21, còn các microservices khác lại yêu cầu Java 17. Cách truyền thống là tải file .tar.gz về, giải nén vào /usr/lib/jvm, rồi cấu hình JAVA_HOME thủ công. Cách này không sai, nhưng cực kỳ tốn thời gian.
Chỉ cần quên cập nhật biến môi trường, bạn sẽ build dự án bằng phiên bản không tương thích. Kết quả là hàng loạt lỗi runtime xuất hiện. Trước đây, mình dùng lệnh update-alternatives trên Ubuntu. Tuy nhiên, cú pháp của nó rất rườm rà. Mỗi lần đổi phiên bản lại phải gõ sudo, gây ngắt quãng luồng làm việc.
SDKMAN! – Cứu cánh cho lập trình viên
SDKMAN! (The Software Development Kit Manager) giúp bạn dẹp bỏ mớ hỗn độn này. Đây là công cụ dòng lệnh (CLI) hỗ trợ cài đặt và chuyển đổi giữa các bộ SDK cực nhanh. Ngoài Java (JDK), nó còn quản lý cả Maven, Gradle, Kotlin và hơn 20 công cụ khác. Toàn bộ hoạt động ở tầng user, không cần quyền root.
Điểm cộng lớn nhất là khả năng cô lập môi trường. Việc chuyển đổi phiên bản diễn ra tức thì trong terminal hiện tại. Trên con VPS Ubuntu 4GB RAM mình đang chạy, SDKMAN! giúp tiết kiệm khoảng 15 phút thiết lập mỗi khi có dự án mới. Nó không hề can thiệp hay làm hỏng các cấu hình mặc định của hệ thống.
Cài đặt SDKMAN! chỉ với vài dòng lệnh
Đầu tiên, hãy đảm bảo máy bạn đã có curl và unzip. Đây là hai công cụ cơ bản nhất trên Linux. Nếu chưa có, hãy cài đặt chúng bằng lệnh:
sudo apt update
sudo apt install curl unzip zip -y
Tiếp theo, hãy tải và cài đặt SDKMAN! trực tiếp từ server của họ:
curl -s "https://get.sdkman.io" | bash
Sau khi script chạy xong, bạn cần kích hoạt môi trường bằng cách chạy lệnh:
source "$HOME/.sdkman/bin/sdkman-init.sh"
Để kiểm tra cài đặt thành công hay chưa, bạn gõ sdk version. Nếu màn hình hiện phiên bản cụ thể, bạn đã sẵn sàng để quản lý JDK.
Thao tác quản lý JDK chuyên nghiệp
1. Tìm kiếm phiên bản Java phù hợp
SDKMAN! cung cấp JDK từ rất nhiều nhà phân phối như Amazon Corretto, Microsoft, hay Temurin. Để xem danh sách, bạn dùng lệnh:
sdk list java
Một bảng danh sách sẽ hiện ra. Hãy chú ý cột Identifier. Đây là mã định danh bạn sẽ dùng để cài đặt chính xác phiên bản mình cần.
2. Cài đặt JDK nhanh chóng
Giả sử bạn cần Java 17 của Temurin (bản ổn định nhất cho production hiện nay). Hãy gõ:
sdk install java 17.0.10-tem
SDKMAN! sẽ tự động tải khoảng 200-300MB dữ liệu, giải nén và cấu hình mọi thứ. Bạn có thể cài thêm Java 8 để bảo trì dự án cũ chỉ với một lệnh tương tự.
3. Chuyển đổi phiên bản trong 1 giây
Đây là tính năng đáng giá nhất. Nếu muốn dùng Java 17 cho riêng terminal hiện tại, bạn gõ sdk use java 17.0.10-tem. Ngược lại, để đặt một phiên bản làm mặc định cho mọi lần mở máy, hãy dùng lệnh sdk default java 17.0.10-tem. Kiểm tra lại bằng java -version, bạn sẽ thấy sự thay đổi ngay lập tức.
Mẹo hay: Tự động hóa với file .sdkmanrc
Việc gõ lệnh chuyển đổi thủ công vẫn có thể gây nhầm lẫn. May mắn là SDKMAN! hỗ trợ tính năng tự nhận diện môi trường. Tại thư mục gốc của dự án, bạn hãy chạy:
sdk env init
Lệnh này tạo ra file .sdkmanrc. Bạn chỉ cần điền phiên bản Java mong muốn vào đó, ví dụ: java=17.0.10-tem. Mỗi khi cd vào thư mục này, bạn chỉ cần gõ sdk env để chuyển đúng phiên bản.
Nếu muốn tự động hoàn toàn, hãy mở file config tại ~/.sdkman/etc/config. Sau đó, chuyển giá trị sdkman_auto_env=true. Từ giờ, SDKMAN! sẽ tự đổi JDK ngay khi bạn truy cập vào folder dự án.
Gỡ bỏ phiên bản cũ để tiết kiệm dung lượng
Mỗi bản JDK chiếm khoảng 500MB ổ cứng. Khi không còn nhu cầu sử dụng, bạn nên xóa bớt để dọn dẹp máy tính:
sdk uninstall java 8.0.392-tem
Lệnh này xóa sạch các file liên quan nhưng tuyệt đối không làm ảnh hưởng đến các phiên bản Java khác đang chạy.
Lời kết
Quản lý môi trường phát triển không nên là rào cản làm chậm tiến độ công việc. SDKMAN! biến việc cài đặt Java trở nên đơn giản như cách bạn dùng npm hay pip. Trải nghiệm thực tế cho thấy, công cụ này giúp loại bỏ hoàn toàn lỗi UnsupportedClassVersionError khi deploy. Hãy thử áp dụng ngay hôm nay để tối ưu workflow của mình.
