---
title: "Cách cài đặt Java với Apt trên Ubuntu 20.04"
description: "Cách cài đặt Java với Apt trên Ubuntu 20.04"
url: https://cloudfly.vn/techblog/cach-cai-dat-java-voi-apt-tren-ubuntu-2004
image: https://media.cloudfly.vn/posts/techblog_5j7CpR8.jpg
---

# Cách cài đặt Java với Apt trên Ubuntu 20.04

## Giới thiệu

Java và JVM (máy ảo của Java) được yêu cầu cho nhiều loại phần mềm, bao gồm Tomcat, Jetty, Glassfish, Cassandra và Jenkins.

Trong hướng dẫn này, bạn sẽ cài đặt các phiên bản khác nhau của Java Runtime Environment (JRE) và Java Developer Kit (JDK) bằng cách sử dụng `apt`. Bạn sẽ cài đặt OpenJDK cũng như JDK chính thức từ Oracle. Sau đó, bạn sẽ chọn phiên bản bạn muốn sử dụng cho các dự án của mình. Khi hoàn tất, bạn sẽ có thể sử dụng JDK để phát triển phần mềm hoặc sử dụng Java Runtime để chạy phần mềm.

## Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần:

* Một máy chủ Ubuntu 20.04 được thiết lập bằng cách làm theo hướng dẫn hướng dẫn thiết lập máy chủ ban đầu Ubuntu 20.04, bao gồm a sudo non-**root** user và tường lửa.

## Cài đặt JRE/JDK mặc định

Tùy chọn dễ dàng nhất để cài đặt Java là sử dụng phiên bản được đóng gói cùng với Ubuntu. Theo mặc định, Ubuntu 20.04 bao gồm Open JDK 11, đây là một biến thể mã nguồn mở của JRE và JDK.

Để cài đặt phiên bản này, trước tiên hãy cập nhật chỉ mục gói:
```command
sudo apt update
```

Tiếp theo, kiểm tra xem Java đã được cài đặt chưa:
```command
java -version
```

Nếu Java hiện chưa được cài đặt, bạn sẽ thấy đầu ra sau:
```
[secondary_label Output]
Command 'java' not found, but can be installed with:

sudo apt install openjdk-11-jre-headless  # version 11.0.11+9-0ubuntu2~20.04, or
sudo apt install default-jre              # version 2:1.11-72
sudo apt install openjdk-13-jre-headless  # version 13.0.7+5-0ubuntu1~20.04
sudo apt install openjdk-16-jre-headless  # version 16.0.1+9-1~20.04
sudo apt install openjdk-8-jre-headless   # version 8u292-b10-0ubuntu1~20.04
```

Thực hiện lệnh sau để cài đặt Java Runtime Environment (JRE) mặc định, sẽ cài đặt JRE từ OpenJDK 11:
```command
sudo apt install default-jre
```

JRE sẽ cho phép bạn chạy hầu hết các phần mềm Java.

Xác minh cài đặt với:
```command
java -version
```

Bạn sẽ thấy đầu ra tương tự như sau:
```
[secondary_label Output]
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing))
```

Bạn có thể cần Java Development Ki (JDK) ngoài JRE để biên dịch và chạy một số phần mềm dựa trên Java cụ thể. Để cài đặt JDK, hãy thực hiện lệnh sau, lệnh này cũng sẽ cài đặt JRE:
```command
sudo apt install default-jdk
```

Xác minh rằng JDK đã được cài đặt bằng cách kiểm tra phiên bản `javac`, trình biên dịch Java:
```command
javac -version
```

Bạn sẽ thấy đầu ra sau:
```
[secondary_label Output]
javac <^>11.0.11<^>
```

Tiếp theo, hãy xem cách cài đặt JDK và JRE chính thức của Oracle.

## Cài đặt Oracle JDK 11

Thỏa thuận cấp phép của Oracle cho Java không cho phép cài đặt tự động thông qua trình quản lý gói. Để cài đặt Oracle JDK, phiên bản chính thức do Oracle phân phối, bạn phải tạo tài khoản Oracle và tải xuống JDK theo cách thủ công để thêm kho lưu trữ gói mới cho phiên bản bạn muốn sử dụng. Sau đó, bạn có thể sử dụng `apt` để cài đặt nó với sự trợ giúp từ tập lệnh cài đặt của bên thứ ba.

Phiên bản JDK của Oracle mà bạn cần tải xuống phải khớp với phiên bản của tập lệnh cài đặt. Để biết bạn cần phiên bản nào, hãy truy cập trang `oracle-java11-installer`.

Xác định vị trí gói cho **Focal**, như thể hiện trong hình dưới đây:

![description image](https://media.cloudfly.vn/posts/PGnyeYD.png)

Trong hình ảnh này, phiên bản của tập lệnh là `11.0.7`. Trong trường hợp này, bạn sẽ cần Oracle JDK 11.0.7. Số phiên bản của bạn có thể thay đổi tùy thuộc vào thời điểm bạn cài đặt phần mềm.

Bạn không cần tải xuống bất cứ thứ gì từ trang này; bạn sẽ sớm tải xuống tập lệnh cài đặt thông qua `apt`.

Sau đó truy cập trang Downloads và tìm phiên bản phù hợp với phiên bản bạn cần.

![description image](https://media.cloudfly.vn/posts/t50afne.png)

Nhấp vào nút **JDK Download** và bạn sẽ được đưa đến màn hình hiển thị các phiên bản có sẵn. Nhấp vào gói `.tar.gz` cho Linux.

![description image](https://media.cloudfly.vn/posts/sy01gSy.png)

Bạn sẽ thấy một màn hình yêu cầu bạn chấp nhận thỏa thuận cấp phép của Oracle. Chọn hộp kiểm để chấp nhận thỏa thuận cấp phép và nhấn nút **Download**. Quá trình tải xuống của bạn sẽ bắt đầu. Bạn có thể cần phải đăng nhập vào tài khoản Oracle của mình một lần nữa trước khi quá trình tải xuống bắt đầu.

Khi tệp đã được tải xuống, bạn sẽ cần chuyển tệp đó đến máy chủ của mình. Trên máy cục bộ của bạn, hãy tải tệp lên máy chủ của bạn. Trên macOS, Linux hoặc Windows sử dụng Windows Subsystem dành cho Linux, hãy sử dụng lệnh `scp` để chuyển tệp vào thư mục chính của người dùng `<^>sammy<^>` của bạn. Lệnh dưới đây giả định rằng bạn đã lưu tệp Oracle JDK vào thư mục `Downloads` của máy cục bộ:
```command
scp Downloads/jdk-<^>11.0.7<^>_linux-x64_bin.tar.gz <^>sammy<^>@<^>your_server_ip<^>:~
```

Sau khi quá trình tải tệp lên hoàn tất, hãy quay lại máy chủ của bạn và thêm kho lưu trữ của bên thứ ba sẽ giúp bạn cài đặt Java của Oracle.

Cài đặt gói `software-properties-common`, gói này sẽ thêm lệnh `add-apt-repository` vào hệ thống của bạn:
```command
sudo apt install software-properties-common
```

Tiếp theo, nhập khóa ký được sử dụng để xác minh phần mềm bạn sắp cài đặt:
```command
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
```

Bạn sẽ thấy đầu ra này:
```
[secondary_label Output]
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg:               imported: 1
```

Sau đó, sử dụng lệnh `add-apt-repository` để thêm repo vào danh sách các nguồn gói của bạn:
```command
sudo add-apt-repository ppa:linuxuprising/java
```

Bạn sẽ thấy thông báo này:
```
[secondary_label Output]
Oracle Java 11 (LTS) and 16 installer for Ubuntu (21.04, 20.10, 20.04, 18.04, 16.04 and 14.04), Pop!_OS, Linux Mint and Debian.

Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java, so a working Internet connection is required.

The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java

Created for users of https://www.linuxuprising.com/

Installation instructions (with some tips), feedback, suggestions, bug reports etc.:

. . .

Press [ENTER] to continue or Ctrl-c to cancel adding it.
```

Nhấn `ENTER` để tiếp tục cài đặt. Bạn có thể thấy một thông báo về `no valid OpenPGP data found`, nhưng bạn có thể bỏ qua điều này một cách an toàn.

Cập nhật danh sách gói của bạn để cung cấp phần mềm mới để cài đặt:
```command
sudo apt update
```

Trình cài đặt sẽ tìm Oracle JDK mà bạn đã tải xuống trong `/var/cache/oracle-jdk11-installer-local`. Tạo thư mục này và di chuyển kho lưu trữ Oracle JDK ở đó:
```command
sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
sudo cp jdk-<^>11.0.7<^>_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/
```

Cuối cùng, cài đặt gói:
```command
sudo apt install oracle-java11-installer-local
```

Trình cài đặt trước tiên sẽ yêu cầu bạn chấp nhận thỏa thuận cấp phép của Oracle. Chấp nhận thỏa thuận, sau đó trình cài đặt sẽ giải nén gói Java và cài đặt nó.

Bây giờ hãy xem cách chọn phiên bản Java bạn muốn sử dụng.

## Quản lý Java

Bạn có thể có nhiều cài đặt Java trên một máy chủ. Bạn có thể định cấu hình phiên bản nào là mặc định để sử dụng trên dòng lệnh bằng cách sử dụng lệnh `update-alternatives`.
```command
sudo update-alternatives --config java
```

Đây là kết quả đầu ra sẽ như thế nào nếu bạn đã cài đặt cả hai phiên bản Java trong hướng dẫn này:
```
[secondary_label Output]
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:
```

Chọn số được liên kết với phiên bản Java để sử dụng nó làm số mặc định hoặc nhấn `ENTER` để giữ nguyên cài đặt hiện tại.

Bạn có thể làm điều này cho các lệnh Java khác, chẳng hạn như trình biên dịch (`javac`):
```command
sudo update-alternatives --config <^>javac<^>
```

Các lệnh khác có thể chạy lệnh này bao gồm, nhưng không giới hạn ở: `keytool`, `javadoc` và `jarsigner`.

## Đặt biến môi trường `JAVA_HOME`

Nhiều chương trình được viết bằng Java sử dụng biến môi trường `JAVA_HOME` để xác định vị trí cài đặt Java.

Để đặt biến môi trường này, trước tiên hãy xác định vị trí cài đặt Java. Sử dụng lệnh `update-alternatives`:
```command
sudo update-alternatives --config java
```

Lệnh này hiển thị từng cài đặt Java cùng với đường dẫn cài đặt của nó:
```
[secondary_label Output]
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:
```

Trong trường hợp này, đường dẫn cài đặt như sau:

1. OpenJDK 11 được đặt tại `/usr/lib/jvm/java-11-openjdk-amd64/bin/java`.
2. Oracle Java được đặt tại `/usr/lib/jvm/java-11-oracle/jre/bin/java`.

Sao chép đường dẫn từ cài đặt ưa thích của bạn. Sau đó mở `/etc/environment` bằng `nano` hoặc trình soạn thảo văn bản yêu thích của bạn:
```command
sudo nano /etc/environment
```

Ở cuối tệp này, hãy thêm dòng sau, đảm bảo thay thế đường dẫn được đánh dấu bằng đường dẫn đã sao chép của riêng bạn, nhưng **không** bao gồm phần `bin/` của đường dẫn:
```nginx
[label /etc/environment]
JAVA_HOME="<^>/usr/lib/jvm/java-11-openjdk-amd64<^>"
```

Việc sửa đổi tệp này sẽ đặt đường dẫn `JAVA_HOME` cho tất cả người dùng trên hệ thống của bạn.

Lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy tải lại tệp này để áp dụng các thay đổi cho phiên hiện tại của bạn:
```command
source /etc/environment
```

Xác minh rằng biến môi trường đã được đặt:
```command
echo $JAVA_HOME
```

Bạn sẽ thấy đường dẫn bạn vừa đặt:
```
[secondary_label Output]
<^>/usr/lib/jvm/java-11-openjdk-amd64<^>
```

Những người dùng khác sẽ cần thực thi lệnh `source /etc/environment` hoặc đăng xuất rồi đăng nhập lại để áp dụng cài đặt này.

## Kết luận

Trong hướng dẫn này, bạn đã cài đặt nhiều phiên bản Java và học cách quản lý chúng. Bây giờ bạn có thể cài đặt phần mềm chạy trên Java, chẳng hạn như Tomcat, Jetty, Glassfish, Cassandra hoặc Jenkins.
