Java và JVM (máy ảo Java) là bắt buộc 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) sử dụng apt
. Bạn sẽ cài OpenJDK cũng như JDK chính thức từ Oracle. Sau đó bạn sẽ chọn phiên bản muốn sử dụng cho dự án của mình. Khi hoàn thành, bạn 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.
<details open> <summary>
</summary> Bạn sẽ cần:
<details open> <summary>
</summary> Một bản cài đặt Java gồm hai thành phần chính. JDK cung cấp các công cụ phần mềm thiết yếu để phát triển Java như trình biên dịch và trình gỡ lỗi. JRE dùng để thực thi các chương trình Java. Ngoài ra, có hai lựa chọn chính để cài Java. OpenJDK là bản triển khai mã nguồn mở của Java và được đóng gói cùng Ubuntu. Oracle JDK là phiên bản gốc của Java và được Oracle duy trì đầy đủ.
Cả hai phiên bản đều được Oracle công nhận chính thức. Cả hai đều do Oracle phát triển nhưng OpenJDK có bổ sung đóng góp cộng đồng do tính chất mã nguồn mở. Tuy nhiên, từ Java 11, hai lựa chọn về chức năng là như nhau như Oracle mô tả. Lựa chọn cài đặt phụ thuộc vào việc chọn giấy phép phù hợp với nhu cầu cá nhân. Ngoài ra, OpenJDK có thể cài JRE riêng biệt, trong khi Oracle JDK kèm sẵn JRE.
Một lựa chọn cài Java là sử dụng phiên bản kèm theo Ubuntu. Mặc định, Ubuntu bao gồm OpenJDK 11, là biến thể mã nguồn mở của JRE và JDK.
Để cài OpenJDK Java, trước tiên cập nhật chỉ mục gói apt
của bạn:
sudo apt update
Kiểm tra xem Java đã được cài chưa:
java -version
Nếu Java chưa được cài, bạn sẽ nhận được thông báo như sau:
Command 'java' not found, but can be installed with:
sudo apt install default-jre # version 2:1.11-72build1, or
sudo apt install openjdk-11-jre-headless # version 11.0.14+9-0ubuntu2
sudo apt install openjdk-17-jre-headless # version 17.0.2+8-1
sudo apt install openjdk-18-jre-headless # version 18~36ea-1
sudo apt install openjdk-8-jre-headless # version 8u312-b07-0ubuntu1
Chạy lệnh sau để cài JRE từ OpenJDK 11:
sudo apt install default-jre
JRE sẽ cho phép bạn chạy gần như tất cả phần mềm Java.
Kiểm tra cài đặt bằng:
java -version
Bạn sẽ nhận đầu ra tương tự:
openjdk version "11.0.14" 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2)
OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2, mixed mode, sharing)
Bạn có thể cần JDK ngoài JRE để biên dịch và chạy một số phần mềm Java cụ thể. Để cài JDK, chạy lệnh sau (cũng cài kèm JRE):
sudo apt install default-jdk
Kiểm tra JDK đã cài bằng cách xem phiên bản javac
(trình biên dịch Java):
javac -version
Bạn sẽ thấy đầu ra:
javac 11.0.14
Sau đây, bạn sẽ học cách cài JDK và JRE chính thức của Oracle.
Giấy phép Oracle cho Java không cho phép tự động cài qua trình quản lý gói. Để cài Oracle JDK, bạn cần [tạo tài khoản Oracle]và tải thủ công JDK để thêm kho phần mềm mới cho phiên bản muốn dùng. Sau đó dùng apt
với sự hỗ trợ từ kịch bản cài đặt bên thứ ba để cài. Oracle JDK bao gồm sẵn JRE nên không cần cài riêng.
Phiên bản Oracle JDK cần tải phải trùng với phiên bản kịch bản cài đặt. Để biết phiên bản cần, xem trang oracle-java11-installer.
Tìm gói cho Jammy, như hình dưới:
Trong hình, phiên bản là 11.0.13
. Bạn cần Oracle JDK 11.0.13. Phiên bản của bạn có thể khác tùy thời điểm cài.
Bạn không cần tải từ trang này; sẽ cài kịch bản qua apt
sau.
Tiếp theo, vào trang Tải kho lưu trữ và tìm phiên bản tương ứng.
![Trang tải kho Java của Oracle]![description image]
Chọn gói nén Linux x64 .tar.gz
:
![description image]
Màn hình sẽ yêu cầu chấp nhận thỏa thuận giấy phép Oracle. Chọn hộp chấp nhận và nhấn Download. Có thể bạn phải đăng nhập lại tài khoản Oracle lần nữa.
Sau khi tải xong, chuyển file lên máy chủ. Trên máy cục bộ dùng macOS, Linux hoặc Windows có Windows Subsystem for Linux, dùng lệnh scp
để chuyển file tới thư mục home của user sammy
trên server. Lệnh sau giả định bạn lưu file JDK trong thư mục Downloads
cục bộ:
scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz sammy@your_server_ip:~
Sau khi upload xong, về server thêm kho phần mềm bên thứ ba giúp cài Oracle Java.
Trước tiên, nhập khoá ký để xác minh phần mềm:
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
Bạn sẽ thấy đầu ra:
gpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
gpg: /tmp/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg: imported: 1
Thêm kho phần mềm vào danh sách nguồn:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-jdk11-installer.gpg] https://ppa.launchpadcontent.net/linuxuprising/java/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/oracle-jdk11-installer.list > /dev/null
Cập nhật danh sách gói:
sudo apt update
Trình cài đặt sẽ tìm Oracle JDK bạn đã tải trong /var/cache/oracle-jdk11-installer-local
. Tạo thư mục và di chuyển file vào đó:
sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/
Cuối cùng, cài gói:
sudo apt install oracle-java11-installer-local
Trình cài sẽ yêu cầu bạn chấp nhận giấy phép Oracle, sau đó giải nén và cài Java.
Bây giờ bạn sẽ học cách chọn phiên bản Java muốn dùng. </details>
<details open> <summary>
</summary>
Bạn có thể cài nhiều phiên bản Java trên một máy chủ. Bạn có thể cấu hình phiên bản mặc định sử dụng trên dòng lệnh bằng lệnh update-alternatives
.
sudo update-alternatives --config java
Kết quả sẽ trông như sau nếu bạn cài cả hai phiên bản trong hướng dẫn:
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ố tương ứng phiên bản Java để dùng làm mặc định, hoặc nhấn ENTER
để giữ nguyên.
Bạn có thể làm tương tự với các lệnh Java khác như trình biên dịch (javac
):
sudo update-alternatives --config javac
Các lệnh khác có thể dùng lệnh này gồm keytool
, javadoc
, và jarsigner
.
</details>
<details open> <summary>
JAVA_HOME
</summary>
Nhiều chương trình viết bằng Java sử dụng biến môi trường JAVA_HOME
để xác định vị trí cài Java.
Để đặt biến môi trường này, trước tiên xác định nơi Java được cài bằng lệnh:
sudo update-alternatives --config java
Lệnh này liệt kê mỗi bản cài Java cùng đường dẫn:
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:
Đường dẫn cài đặt ví dụ:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-11-oracle/jre/bin/java
Sao chép đường dẫn bản cài bạn chọn. Mở file /etc/environment
bằng nano
hoặc trình soạn thảo khác:
sudo nano /etc/environment
Thêm dòng sau cuối file, thay phần được tô sáng bằng đường dẫn của bạn, lưu ý không bao gồm phần bin/
:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Sửa file này sẽ đặt biến JAVA_HOME
cho tất cả người dùng trên hệ thống.
Lưu và thoát trình soạn thảo.
Tải lại file để áp dụng cho phiên làm việc hiện tại:
source /etc/environment
Kiểm tra biến môi trường đã được đặt:
echo $JAVA_HOME
Bạn sẽ thấy đường dẫn vừa đặt:
/usr/lib/jvm/java-11-openjdk-amd64
Người dùng khác cần chạy source /etc/environment
hoặc đăng xuất rồi đăng nhập lại để áp dụng.
</details>
<details open> <summary>
</summary>
Nếu gặp lỗi Java not found
hoặc command not found
, hệ thống không xác định được thực thi Java. Khắc phục bằng cách đặt biến môi trường PATH chứa thư mục cài Java:
export PATH=$PATH:/usr/lib/jvm/java-11-openjdk-amd64/bin
Nếu nhận lỗi JAVA_HOME is not set
, nghĩa là biến môi trường chưa cấu hình. Khắc phục bằng cách đặt biến:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Lỗi này nghĩa hệ thống không tìm được Java Development Kit (JDK) hoặc Java Runtime Environment (JRE) đã cài. Kiểm tra đường dẫn cài đặt và đặt biến PATH đúng:
export PATH=$PATH:/usr/lib/jvm/java-11-openjdk-amd64/bin
Nếu gặp lỗi Permission denied
khi cài Java, có thể do tài khoản không có quyền. Chạy lại lệnh cài với sudo
:
sudo apt-get install openjdk-11-jdk
</details>
<details open> <summary>
</summary>
Chạy lệnh:
java -version
Nếu Java đã cài, hiện phiên bản Java đang dùng. Nếu chưa, hiện lỗi.
JRE cung cấp môi trường chạy Java, trong khi JDK gồm JRE cùng các công cụ phát triển như trình biên dịch và gỡ lỗi.
Tính năng | JRE | JDK |
---|---|---|
Môi trường chạy | Có | Có |
Công cụ phát triển | Không | Có |
Trình biên dịch | Không | Có |
Trình gỡ lỗi | Không | Có |
Chạy lệnh:
sudo apt-get install openjdk-11-jdk
Dùng lệnh:
sudo update-alternatives --config java
Chạy:
sudo apt-get remove openjdk-11-jdk
JAVA_HOME
là biến môi trường chỉ tới thư mục cài đặt Java trên hệ thống. Đặt bằng lệnh:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
</details>
<details open> <summary>
</summary> Trong hướng dẫn này, bạn đã cài và quản lý thành công nhiều phiên bản Java trên hệ thống Ubuntu. Việc này mở ra nhiều khả năng cài phần mềm dựa trên Java như Tomcat, Jetty, Glassfish, Cassandra, hoặc Jenkins. </details>