Bài viết này sẽ hướng dẫn bạn cách cài đặt Java trên CentOS, Rocky Linux, RHEL và Fedora.
Hướng dẫn này bao gồm cách cài đặt phiên bản Java mới nhất, phiên bản Java mặc định, cách chọn cài đặt các phiên bản Java cũ hơn nếu cần, cũng như cách chuyển đổi giữa nhiều phiên bản Java trong môi trường của bạn.
Điều kiện tiên quyết
Trước khi thực hiện hướng dẫn này, bạn cần có một tài khoản người dùng thông thường (không phải root) đã được cấp quyền sudo
trên máy chủ. Đây là tài khoản bạn nên đăng nhập để thực hiện các bước trong hướng dẫn.
Bước 1: Cài đặt OpenJDK
Nền tảng Java có ba phiên bản chính: Standard Edition (SE), Enterprise Edition (EE) và Micro Edition (ME). Hướng dẫn này tập trung vào Java SE (Java Platform, Standard Edition), vì hầu hết các phần mềm Java mã nguồn mở đều được thiết kế để chạy trên nền tảng này.
Có hai gói Java SE khác nhau có thể được cài đặt:
- JRE (Java Runtime Environment): là bản cài đặt của JVM (Java Virtual Machine), cho phép bạn chạy các ứng dụng và applet Java đã được biên dịch.
- JDK (Java Development Kit): bao gồm cả JRE và thêm các công cụ khác cần thiết để viết, phát triển và biên dịch ứng dụng Java.
Ngoài ra, còn có hai bản cài đặt Java khác nhau:
- OpenJDK: là bản triển khai tham chiếu chính thức, hoàn toàn mã nguồn mở.
- Oracle Java: dựa phần lớn trên cùng mã nguồn với OpenJDK, nhưng chứa một số thành phần độc quyền của Oracle.
Hầu hết các ứng dụng Java đều hoạt động tốt với cả hai, tuy nhiên bạn nên sử dụng bản cài đặt phù hợp với yêu cầu của phần mềm bạn đang sử dụng.
Bạn có thể cài đặt nhiều phiên bản và bản phát hành Java trên cùng một hệ thống, nhưng thông thường chỉ cần cài một phiên bản là đủ. Vì vậy, hãy cố gắng chỉ cài đặt phiên bản Java bạn thực sự cần để chạy hoặc phát triển ứng dụng.
Phần này sẽ hướng dẫn bạn cách cài đặt các gói OpenJDK JRE và JDK dựng sẵn bằng trình quản lý gói yum
. yum
là trình quản lý gói mặc định cho các bản phân phối Linux sử dụng định dạng RPM.
Để cài đặt OpenJDK bằng yum, bạn có thể chạy lệnh:
sudo yum install java
Mặc định, nếu bạn cố gắng cài đặt Java mà không chỉ định phiên bản cụ thể, hệ thống sẽ tự động chọn phiên bản ổn định phổ biến nhất của OpenJDK JRE để cài đặt. Như bạn có thể thấy trong kết quả đầu ra dưới đây, tại thời điểm viết hướng dẫn này, phiên bản đó là java-1.8.0-openjdk
:
Output
Last metadata expiration check: 0:02:38 ago on Tue 22 Feb 2022 04:57:59 PM UTC.
Dependencies resolved.
========================================================================================
Package Arch Version Repo Size
========================================================================================
Installing:
java-1.8.0-openjdk x86_64 1:1.8.0.322.b06-2.el8_5 appstream 341 k
Installing dependencies:
alsa-lib x86_64 1.2.5-4.el8 appstream 488 k
atk x86_64 2.28.1-1.el8 appstream 270 k
avahi-libs x86_64 0.7-20.el8 baseos 61 k
copy-jdk-configs noarch 4.0-2.el8 appstream 29 k
cups-libs x86_64 1:2.2.6-40.el8 baseos 432 k
fribidi x86_64 1.0.4-8.el8 appstream 88 k
…
Nhiều dependencies cũng sẽ được cài đặt kèm theo Java. Khi có lời nhắc xác nhận, hãy nhập **y
**rồi nhấn Enter để tiếp tục quá trình cài đặt. Ngoài ra, bạn cũng có thể được yêu cầu chấp nhận signing keys từ các kho lưu trữ mà bạn đang cài đặt từ đó:
Output
Importing GPG key 0x6D745A60:
Userid : "Release Engineering <infrastructure@rockylinux.org>"
Fingerprint: 7051 C470 A929 F454 CEBE 37B7 15AF 5DAC 6D74 5A60
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
Is this ok [y/N]:
Nhập y
rồi nhấn Enter lần nữa.
Giờ đây bạn đã có một bản cài đặt Java hoạt động. Để xác nhận điều này, bạn có thể chạy lệnh java -version
để kiểm tra phiên bản Java hiện đang có sẵn trong môi trường của bạn.
java -version
Lưu ý: Hầu hết các chương trình dòng lệnh sử dụng một dấu gạch ngang (–) trước các tham số một chữ cái, hoặc hai dấu gạch ngang (––) trước các tham số dạng từ đầy đủ. Tuy nhiên, Java sử dụng một dấu gạch ngang cho tất cả các tham số, kể cả khi đó là từ đầy đủ, ví dụ trong trường hợp này là -version
.
Output
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
Sự tương tác giữa quy ước đặt tên của Java và quy ước đặt tên gói trên Linux đôi khi có thể gây nhầm lẫn. Ở phần trước của hướng dẫn, chúng ta đã phân biệt giữa môi trường JDK đầy đủ để phát triển và môi trường JRE để chạy các ứng dụng Java.
Mặc dù OpenJDK là tên của bản phân phối Java mã nguồn mở, nhưng bạn mới chỉ cài đặt OpenJDK JRE. Để cài đặt đầy đủ OpenJDK JDK, bạn cần cài đặt gói tương ứng có thêm hậu tố -devel
ở cuối tên gói. Đây là một quy ước phổ biến dành cho các development packages trong nhiều môi trường lập trình khác, và Java cũng tuân theo quy ước này, dù rằng cách dùng thuật ngữ có phần chồng chéo, dễ gây nhầm lẫn.
Tương tự như trước, bạn có thể cài đặt java-devel
để lấy phiên bản mặc định, hoặc chỉ định rõ phiên bản như java-1.8.0-openjdk-devel
:
sudo yum install java-devel
Output
DigitalOcean Droplet Agent 63 kB/s | 3.3 kB 00:00
Dependencies resolved.
========================================================================================
Package Arch Version Repository Size
========================================================================================
Installing:
java-1.8.0-openjdk-devel x86_64 1:1.8.0.322.b06-2.el8_5 appstream 9.8 M
Transaction Summary
========================================================================================
Install 1 Package
Total download size: 9.8 M
Installed size: 41 M
Is this ok [y/N]:
Sau khi cài đặt gói này, bạn sẽ có một môi trường OpenJDK đầy đủ, cho phép biên dịch và chạy bất kỳ phần mềm Java nào miễn là phần mềm đó không gặp vấn đề về tương thích phiên bản. Trong phần tiếp theo, bạn sẽ học cách cài đặt và quản lý các phiên bản Java khác.
Bước 2: Cài đặt các phiên bản OpenJDK khác
Gần đây, OpenJDK đã thay đổi quy ước đánh số phiên bản để đồng bộ chặt chẽ hơn với các bản phát hành của Oracle Java. Để cài đặt một phiên bản OpenJDK mới hơn, bạn chỉ cần chỉ rõ số phiên bản trong tên gói, tương tự như cách làm với 1.8.0
.
Ví dụ: để cài đặt OpenJDK 17, bạn có thể sử dụng lệnh:
yum install java-17-openjdk
sudo yum install java-17-openjdk
Output
Last metadata expiration check: 0:03:36 ago on Tue 22 Feb 2022 05:42:44 PM UTC.
Dependencies resolved.
========================================================================================
Package Arch Version Repository Size
========================================================================================
Installing:
java-17-openjdk x86_64 1:17.0.2.0.8-4.el8_5 appstream 244 k
Installing dependencies:
adwaita-cursor-theme noarch 3.28.0-2.el8 appstream 646 k
adwaita-icon-theme noarch 3.28.0-2.el8 appstream 11 M
at-spi2-atk x86_64 2.26.2-1.el8 appstream 88 k
at-spi2-core x86_64 2.28.0-1.el8 appstream 168 k
colord-libs x86_64 1.4.2-1.el8 appstream 234 k
java-17-openjdk-headless x86_64 1:17.0.2.0.8-4.el8_5 appstream 41 M
lcms2 x86_64 2.9-2.el8 appstream 163 k
…
Tương tự như trước, bạn có thể cài đặt môi trường JDK đầy đủ bằng cách thêm hậu tố -devel
vào tên gói. Tuy nhiên, sau khi cài đặt, khi bạn chạy các chương trình java
, hệ thống vẫn sẽ sử dụng phiên bản OpenJDK 1.8.0 mà bạn đã cài trước đó làm mặc định. Bạn có thể xác nhận điều này bằng cách chạy lại lệnh:
java -version
java -version
Output
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
Trong bước tiếp theo, bạn sẽ quản lý các phiên bản Java đã được cài đặt.
Bước 3: Thiết lập phiên bản Java mặc định
Nếu bạn đã cài đặt nhiều phiên bản Java, có thể bạn sẽ muốn đặt một phiên bản làm mặc định (tức là phiên bản sẽ được sử dụng khi người dùng chạy lệnh java
). Ngoài ra, một số ứng dụng còn yêu cầu thiết lập các biến môi trường cụ thể để xác định phiên bản Java mà chúng sẽ sử dụng.
Lệnh alternatives
, công cụ quản lý các lệnh mặc định thông qua liên kết tượng trưng, có thể được sử dụng để chọn phiên bản Java mặc định. Để liệt kê các phiên bản Java hiện có mà alternatives
có thể quản lý, hãy sử dụng lệnh:
alternatives --config java
sudo alternatives --config java
Kết quả đầu ra sẽ liệt kê cả hai phiên bản Java mà bạn đã cài đặt:
output
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java)
Enter to keep the current selection[+], or type selection number:
Nhập số tương ứng với phiên bản bạn muốn chọn làm mặc định. Hệ thống sẽ tự động sắp xếp lại các liên kết tượng trưng cần thiết để đảm bảo rằng lệnh java
sẽ trỏ đến đúng thư viện của phiên bản bạn chọn.
Bạn có thể chạy lại lệnh này bất cứ khi nào cần thay đổi, và kết quả của lệnh java -version
sẽ phản ánh phiên bản hiện tại đang được sử dụng.
java -version
Output
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.2+8-LTS, mixed mode, sharing)
Nhiều ứng dụng Java cũng sử dụng biến môi trường JAVA_HOME
hoặc JRE_HOME
để xác định phiên bản java
nào sẽ được sử dụng.
Ví dụ, nếu bạn đã cài đặt Java tại đường dẫn
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin
(tức là file thực thi java
nằm tại
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java
),
bạn có thể thiết lập biến môi trường JAVA_HOME
trong shell Bash hoặc trong một script như sau:
export JAVA_HOME=(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre
Lưu ý: Biến môi trường JAVA_HOME
thường yêu cầu bạn đặt đường dẫn đến thư mục cài đặt Java kết thúc bằng /jre
. Tuy nhiên, quy ước này có thể khác nhau tùy theo biến môi trường hoặc ứng dụng sử dụng, vì vậy tốt nhất bạn nên kiểm tra kỹ các ví dụ cụ thể trước khi thực hiện thay đổi.
Nếu bạn muốn biến JAVA_HOME
được thiết lập mặc định cho mọi người dùng trên hệ thống, hãy thêm dòng thiết lập này vào tệp /etc/environment
. Bạn có thể sử dụng lệnh echo
kết hợp với toán tử chuyển hướng >>
để ghi thêm vào tệp, tránh việc phải chỉnh sửa thủ công bằng tay. Chạy lệnh sau:
sudo sh -c "echo export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre >> /etc/environment"
Trong bước tiếp theo, bạn sẽ cài đặt Java độc quyền của Oracle song song với các phiên bản OpenJDK đã có.
Bước 4: Cài đặt Oracle Java
Phần này của hướng dẫn sẽ chỉ cho bạn cách cài đặt Oracle Java JRE và JDK (64-bit), là phiên bản mới nhất của các gói này tại thời điểm viết bài.
Lưu ý: Nếu bạn đang sử dụng terminal tương tác trên trang web này, bạn sẽ không thể tải xuống và cài đặt Oracle Java trực tiếp trong môi trường đó.
Trong suốt phần này, chúng ta sẽ sử dụng lệnh wget
để tải các gói phần mềm Oracle Java. Tuy nhiên, wget
có thể không được cài sẵn trên bản phân phối Linux của bạn, vì vậy để tiếp tục làm theo hướng dẫn, bạn cần cài đặt bằng cách chạy lệnh:
sudo yum install wget
Bạn phải chấp nhận Thỏa thuận cấp phép mã nhị phân của Oracle dành cho Java SE, đây là một trong những bước bắt buộc, trước khi cài đặt Oracle Java.
Chuyển sang thư mục home của bạn và tải gói Oracle Java RPM bằng các lệnh sau:
cd ~
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "<https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm>"
Sau đó, cài đặt gói RPM bằng lệnh yum localinstall
(nếu bạn đã tải xuống phiên bản khác, hãy thay thế tên tệp tương ứng ở đây):
sudo yum localinstall jdk-17_linux-x64_bin.rpm
Khi có lời nhắc xác nhận, nhập y
rồi nhấn Enter để tiếp tục quá trình cài đặt.
Bạn có thể xóa tệp lưu trữ đã tải xuống trước đó.
rm ~/jdk-17_linux-x64_bin.rpm
Bây giờ bạn có thể chạy lại lệnh alternatives
và bạn sẽ thấy tùy chọn thứ ba để sử dụng Oracle Java.
sudo alternatives --config java
output
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
+ 2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java)
* 3 /usr/java/jdk-17.0.2/bin/java
Enter to keep the current selection[+], or type selection number:
Các bước trong hướng dẫn này là đủ để bạn có thể cài đặt và chạy bất kỳ phiên bản Java nào phù hợp với mục đích sử dụng của mình.
Kết luận
Trong hướng dẫn này, bạn đã cài đặt và quản lý nhiều phiên bản Java bằng cách sử dụng trình quản lý gói yum
, lệnh alternatives
và các biến môi trường. Đây đều là những khía cạnh cơ bản trong việc quản lý môi trường trên Linux, và Java là một ví dụ điển hình để thực hành chúng vì có nhiều phiên bản khác nhau.