Làm Thế Nào để Dùng Nhiều Phiên Bản JDK Trên Một Máy Tính Mà ...
Có thể bạn quan tâm
Để lập trình Java chúng ta cần cài đặt JDK (Java Development Kit). Chúng ta có nhiều dự án Java dùng nhiều phiên bản JDK khác nhau hoặc muốn trải nghiệm tính năng mới nhất của JDK 17 nhưng khi cần vẫn có JDK 11 để lập trình dự án. Làm thế nào đây?
Tôi kiếm sống bằng viết code. Viết càng chăm thì càng kiếm được nhiều (thực ra không nhanh bằng đầu tư coin) nhưng cơ bản là sống ổn và không lo giá coin lên xuống bất thường. Đợt này tính mua cái xe 4 bánh cuối tuần chạy đi xa cắm trại, nên lại phải nhận thêm một dự án nữa. Khách hàng yêu cầu phải dùng Graalvm + Quarkus để đóng gói native app vào Docker image nhỏ gọn. Rắc rối phát sinh từ đây: dự án chính thì dùng JDK 16, dự án làm thêm thì dùng Graalvm dựa trên JDK 11. Chuyển sang Graalvm, thì không biên dịch được dự án dùng JDK 16 nữa. :(
Loay hoay Google tìm ra một công cụ quản lý các phiên bản JDK cho ngôn ngữ Java, Groovy, Scala, Kotlin rất mạnh và tiện, đó là SDKMan
SDKMan làm gì?
SDKMan là một công cụ giống với HomeBrew nhưng dành riêng cho lập trình viên Java, Groovy, Scala, Kotlin. SDKMan cài đặt nhiều phiên bản khác nhau trên máy tính, và chuyển đổi giữa các phiên bản một cách đơn giản, không yêu cầu lập trình viên phải can thiệp cấu hình lại thông số hệ thống như $JAVA_HOME. SDKMan giúp nhiều phiên bản khác nhau cùng chung sống hoà bình, dễ dàng thêm mới và loại bỏ. SDKMan có thể cài trên Windows, Mac, Linux... Trang web chính thức của SDKMan đây https://sdkman.io/
Một số lệnh SDKMan căn bản
sdk help hiển thị hỗ trợ cách sử dụng SDKMan
1. Liệt kê tất cả các gói
sdk list
2. Liệt kê các phiên bản của một gói
sdk list xxx liệt kê các phiên bản hỗ trợ một ngôn ngữ lập trình cụ thể hay một framework.
Ví dụ: liệt kê các phiên bản JDK cho Java sdk list java ================================================================================ Available Java Versions ================================================================================ Vendor | Use | Version | Dist | Status | Identifier -------------------------------------------------------------------------------- AdoptOpenJDK | | 16.0.0.j9 | adpt | | 16.0.0.j9-adpt | | 16.0.0.hs | adpt | | 16.0.0.hs-adpt | | 11.0.10.j9 | adpt | | 11.0.10.j9-adpt | | 11.0.10.hs | adpt | | 11.0.10.hs-adpt | | 8.0.282.j9 | adpt | | 8.0.282.j9-adpt | | 8.0.282.hs | adpt | | 8.0.282.hs-adpt Amazon | | 16.0.0.36.1 | amzn | | 16.0.0.36.1-amzn | | 15.0.2.7.1 | amzn | | 15.0.2.7.1-amzn | | 11.0.10.9.1 | amzn | | 11.0.10.9.1-amzn | | 8.282.08.1 | amzn | | 8.282.08.1-amzn Azul Zulu | | 16.0.0 | zulu | | 16.0.0-zulu | | 16.0.0.fx | zulu | | 16.0.0.fx-zulu | | 15.0.2.fx | zulu | | 15.0.2.fx-zulu | | 11.0.10 | zulu | | 11.0.10-zulu | | 11.0.10.fx | zulu | | 11.0.10.fx-zulu | | 8.0.282 | zulu | | 8.0.282-zulu | | 8.0.282.fx | zulu | | 8.0.282.fx-zulu | | 7.0.292 | zulu | | 7.0.292-zulu BellSoft | | 16.0.0.fx | librca | | 16.0.0.fx-librca | | 16.0.0 | librca | | 16.0.0-librca | | 11.0.10.fx | librca | | 11.0.10.fx-librca | | 11.0.10 | librca | | 11.0.10-librca | | 8.0.282.fx | librca | | 8.0.282.fx-librca | | 8.0.282 | librca | | 8.0.282-librca GraalVM | | 21.0.0.2.r11 | grl | installed | 21.0.0.2.r11-grl | | 21.0.0.2.r8 | grl | | 21.0.0.2.r8-grl | | 20.3.1.2.r11 | grl | | 20.3.1.2.r11-grl | | 20.3.1.2.r8 | grl | | 20.3.1.2.r8-grl | | 19.3.5.r11 | grl | | 19.3.5.r11-grl | | 19.3.5.r8 | grl | | 19.3.5.r8-grl Java.net | | 17.ea.18 | open | | 17.ea.18-open | | 17.ea.6.lm | open | | 17.ea.6.lm-open | | 17.ea.2.pma | open | | 17.ea.2.pma-open | >>> | 16 | open | installed | 16-open | | 11.0.2 | open | | 11.0.2-open Microsoft | | 11.0.10.9 | ms | | 11.0.10.9-ms SAP | | 16 | sapmchn | | 16-sapmchn | | 15.0.2 | sapmchn | | 15.0.2-sapmchn | | 11.0.10 | sapmchn | | 11.0.10-sapmchn TravaOpenJDK | | 11.0.9 | trava | | 11.0.9-trava | | 8.0.232 | trava | | 8.0.232-trava ================================================================================ Use the Identifier for installation: $ sdk install java 11.0.3.hs-adpt ================================================================================
Liệt kê các phiên bản Groovy sdk list groovy ================================================================================ Available Groovy Versions ================================================================================ 4.0.0-alpha-3 2.4.19 2.2.2 1.7.11 4.0.0-alpha-2 2.4.18 2.2.1 1.7.10 4.0.0-alpha-1 2.4.17 2.2.0 1.7.9 3.0.7 2.4.16 2.1.9 1.7.8 3.0.6 2.4.15 2.1.8 1.7.7 3.0.5 2.4.14 2.1.7 1.7.6 3.0.4 2.4.13 2.1.6 1.7.5 3.0.3 2.4.12 2.1.5 1.7.4 3.0.2 2.4.11 2.1.4 1.7.3 3.0.1 2.4.10 2.1.3 1.7.2 3.0.0 2.4.9 2.1.2 1.7.1 2.6.0-alpha-4 2.4.8 2.1.1 1.7.0 2.6.0-alpha-3 2.4.7 2.1.0 1.6.9 2.6.0-alpha-2 2.4.6 2.0.8 1.6.8 2.6.0-alpha-1 2.4.5 2.0.7 1.6.7 2.5.14 2.4.4 2.0.6 1.6.6 2.5.13 2.4.3 2.0.5 1.6.5 2.5.12 2.4.2 2.0.4 1.6.4 2.5.11 2.4.1 2.0.3 1.6.3 2.5.10 2.4.0 2.0.2 1.6.2 2.5.9 2.3.11 2.0.1 1.6.1 2.5.8 2.3.10 2.0.0 1.6.0 2.5.7 2.3.9 1.8.9 1.5.8 2.5.6 2.3.8 1.8.8 1.5.7 2.5.5 2.3.7 1.8.7 1.5.6 2.5.4 2.3.6 1.8.6 1.5.5 2.5.3 2.3.5 1.8.5 1.5.4 2.5.2 2.3.4 1.8.4 1.5.3 2.5.1 2.3.3 1.8.3 1.5.2 2.5.0 2.3.2 1.8.2 1.5.1 2.4.21 2.3.1 1.8.1 1.5.0 2.4.20 2.3.0 1.8.0 ================================================================================ + - local version * - installed > - currently in use ================================================================================
Liệt kê các phiên bản công cụ quản lý Maven package sdk list maven ================================================================================ Available Maven Versions ================================================================================ 3.8.1 3.6.3 3.6.2 3.6.1 3.6.0 3.5.4 3.5.3 3.5.2 3.5.0 3.3.9
3. Cài đặt một phiên bản cụ thể
Ví dụ cài đặt JDK, phiên bản 16 từ Java.net sdk install java 16-open
Ví dụ cài đặt Maven phiên bản 3.8.1 sdk install maven 3.8.1 Downloading: maven 3.8.1 In progress... ######################################################################## 100.0% Installing: maven 3.8.1 Done installing! Setting maven 3.8.1 as default.
4. Chuyển đổi giữa các phiên bản đã cài đặt bằng sdk use
Giả sử trên máy, tôi dùng SDKMan cài đặt 2 phiên bản JDK:
- OpenJDK 16
- Graalvm 11
Tôi dùng lệnh sdk list java để liệt kê các phiên bản JDK đã cài. Giờ tôi muốn chuyển qua lại giữa 2 phiên bản này. Tôi sẽ làm như sau
sdk use java 16-open để chuyển sang Open JDK 16
sdk use java 21.0.0.2.r11-grl để chuyển sang Graalvm base trên JDK 11
Chú ý sau từ khoá use phải có tham java và identifier chi tiết của phiên bản JDK.
5. SDK Man đã lưu các phiên bản JDK, thư viên Java ở đâu?
Tôi sử dụng MacOS, thì thấy rằng SDK Man lưu ở thư mục ~/.sdkman/candidates. Nếu gõ lệnh tree -L 2 ta sẽ thấy các gói phần mềm được cài trong ~/.sdkman/candidates ├── java │ ├── 16-open │ ├── 21.0.0.2.r11-grl │ └── current -> 16-open ├── maven │ ├── 3.8.1 │ └── current -> 3.8.1 └── visualvm ├── 2.0.6 └── current -> 2.0.6
Nhờ SDKMan (sdk list) mình phát hiện ra một công cụ cho lập trình Java rất hay
VisualVM chuyên quan sát bộ nhớ, thread, tài nguyên một ứng dụng Java đang chạy
https://visualvm.github.io/
Từ khóa » Cách Cài Jdk 16
-
[Tự Học Java] Tổng Quan Và Hướng Dẫn Cài đặt Java JDK 16 Mới 2021
-
Hướng Dẫn Tải Và Cài đặt Java, Java JDK Cho Windows
-
Tải Và Cài đặt JDK (Java Development Kit) Từng Bước Chi Tiết
-
[Tự Học Java] Tổng Quan Và Hướng Dẫn Cài đặt Java JDK 16 Mới 2021
-
HƯỚNG DẪN CÁCH CÀI JAVA 16 ĐỂ CHƠI MINECRAFT PHIÊN ...
-
Java SE Development Kit 16- Tải Về
-
Cách Cài đặt Java 16 (OpenJDK 16) Trên Fedora Linux - LinuxCapable
-
Cách Cài đặt Java 16 Trong Rocky Linux Và AlmaLinux - Nhân Hòa
-
Cài đặt Môi Trường Java JDK Cho Máy Tính - Quách Quỳnh
-
Cách Cài đặt Java 16 Trong Rocky Linux Và AlmaLinux
-
Cài đặt Netbeans 12-4, Jdk16, Kết Nối Mysql Trên MacOS - Vi-sos
-
Cài đặt Java Trên Windows - Openplanning