Jak zainstalować Java na Ubuntu 22.04
Zainstaluj Java na Ubuntu 22.04
Cel
Java jest jednym z najpopularniejszych języków programowania na świecie. Jego szerokie zastosowanie w ostatnich latach sprawia, że jest niezbędnym narzędziem w świecie programowania. Aby dowiedzieć się więcej o wszystkich możliwościach języka Java, zapoznaj się z oficjalną dokumentacją.
W tym tutorialu dowiesz się, jak zainstalować zestaw Java Development Kit (JDK) na dystrybucji Ubuntu 22.04 Linux.
Wymagania
W tym tutorialu przyjęto, że posiadasz serwer VPS, serwer bare metal lub, jak w naszym przypadku, instancję OVHcloud Compute z systemem Ubuntu 22.04. Potrzebne są również podstawowe kompetencje w zakresie korzystania z wiersza poleceń. Jeśli potrzebujesz pomocy w skonfigurowaniu instancji Public Cloud z systemem Ubuntu 22.04, postępuj zgodnie z instrukcjami zawartymi w przewodniku Korzystanie z instancji obliczeniowej OVHcloud.
Wskazówki
W tym tutorialu użyto OpenJDK. To jest wersja open source, ale istnieje wiele licencjonowanych wersji dostarczanych przez różnych dostawców (Oracle, Microsoft, AWS, ...).
W tym tutorialu wyjaśnimy, jak zainstalować oprogramowanie OpenJDK oraz jak przełączać się między różnymi zainstalowanymi wersjami.
W momencie tworzenia tego tutoriala, najnowszą wersją LTS Java była 17.x, a ostatnią wersją GA była 18.x.
Instalacja wersji OpenJDK LTS
Aby zainstalować Java w systemie Ubuntu, użyj polecenia apt-get:
sudo apt-get update && apt-get -y install openjdk-17-jdk
Output:
$ sudo apt-get update && apt-get -y install openjdk-17-jdk Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease Hit:2 http://nova.clouds.archive.ubuntu.com/ubuntu jammy InRelease Hit:3 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-update InRelease Hit:4 http://nova.clouds.archive.ubuntu.com/ubuntu jammy-backports InRelease Reading package lists... Done Trwa tworzenie drzewa zależności... Done Reading state information... Done The following additional packages will be installed: adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-core ca-certificates-java dconf-gsettings-backend dconf-service fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-extra gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme java-common libasound2 libasound2-data libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libatspi2.0-0 libavahi-client3 libavahi-common-data libavahi-common3 libcairo-gobject2 libcairo2 libcups2 libdatrie1 libdconf1 libdeflate0 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libfontconfig1 libfontenc1 libgail-common libgail18 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgif7 libgl1 libgl1-amber-dri libgl1-mesa-dri libglapi-mesa libglvnd0 libglx-mesa0 libglx0 libgraphite2-3 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz0b libice-dev libice6 libjbig0 libjpeg-turbo8 libjpeg8 liblcms2-2 libllvm13 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0 libpcsclite1 libpixman-1-0 libpthread-stubs0-dev librsvg2-2 librsvg2-common libsm-dev libsm6 libthai-data libthai0 libtiff5 libvulkan1 libwayland-client0 libwebp7 libx11-dev libx11-xcb1 libxau-dev libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1-dev libxcomposite1 libxcursor1 libxdamage1 libxdmcp-dev libxfixes3 libxft2 libxi6 libxinerama1 libxkbfile1 libxmu6 libxpm4 libxrandr2 libxrender1 libxshmfence1 libxt-dev libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 mesa-vulkan-drivers openjdk-17-jdk-headless openjdk-17-jre openjdk-17-jre-headless session-migration ubuntu-mono x11-common x11-utils x11proto-dev xorg-sgml-doctools xtrans-dev ... update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode Setting up libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ... Setting up humanity-icon-theme (0.6.16) ... Setting up libgail18:amd64 (2.24.33-2ubuntu2) ... Setting up libgtk2.0-bin (2.24.33-2ubuntu2) ... Setting up libgail-common:amd64 (2.24.33-2ubuntu2) ... Setting up openjdk-17-jre:amd64 (17.0.3+7-0ubuntu0.22.04.1) ... Setting up ubuntu-mono (20.10-0ubuntu2) ... Setting up openjdk-17-jdk:amd64 (17.0.3+7-0ubuntu0.22.04.1) ... update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode Processing triggers for ca-certificates (20211016) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. done. Processing triggers for libglib2.0-0:amd64 (2.72.1-1) ... Processing triggers for libc-bin (2.35-0ubuntu3) ... Processing triggers for man-db (2.10.2-1) ... Setting up at-spi2-core (2.44.0-3) ... Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1) ... Scanning processes... Scanning candidates... Scanning linux images... Restarting services... /etc/needrestart/restart.d/systemd-manager systemctl restart packagekit.service postgresql@14-main.service ssh.service systemd-journald.service systemd-networkd.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service udisks2.service Service restarts being deferred: systemctl restart systemd-logind.service systemctl restart user@1000.service No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
Sprawdź instalację aplikacji java:
java -version
Output:
$ java -version openjdk version "17.0.3" 2022-04-19 OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
Dobrą praktyką jest ustawienie zmiennej środowiskowej JAVA_HOME ze ścieżką do instalacji zestawu JDK.
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ echo $JAVA_HOME
Output:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64/ $
Zarządzaj dwiema lub więcej instalacjami zestawu JDK
Wyobraźmy sobie, że musisz użyć innej wersji JDK dla konkretnego projektu. Zainstaluj określoną wersję OpenJDK, jak opisano powyżej.
sudo apt-get -y install openjdk-18-jdk
Output:
$ sudo apt-get -y install openjdk-18-jdk Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: openjdk-18-jdk-headless openjdk-18-jre openjdk-18-jre-headless Suggested packages: openjdk-18-demo openjdk-18-source visualvm libnss-mdns fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic The following NEW packages will be installed: openjdk-18-jdk openjdk-18-jdk-headless openjdk-18-jre openjdk-18-jre-headless 0 upgraded, 4 newly installed, 0 to remove and 12 not upgraded. Need to get 268 MB of archives. After this operation, 421 MB of additional disk space will be used. Get:1 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jre-headless amd64 18~36ea-1 [48.0 MB] Get:2 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jre amd64 18~36ea-1 [180 kB] Get:3 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jdk-headless amd64 18~36ea-1 [220 MB] Get:4 http://nova.clouds.archive.ubuntu.com/ubuntu jammy/universe amd64 openjdk-18-jdk amd64 18~36ea-1 [10.9 kB] Fetched 268 MB in 5s (58.3 MB/s) .. update-alternatives: using /usr/lib/jvm/java-18-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode Setting up openjdk-18-jdk:amd64 (18~36ea-1) ... update-alternatives: using /usr/lib/jvm/java-18-openjdk-amd64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode Processing triggers for hicolor-icon-theme (0.17-2) ... Scanning processes... Scanning candidates... Scanning linux images... Restarting services... Service restarts being deferred: systemctl restart systemd-logind.service systemctl restart user@1000.service No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host.
Sprawdź nową instalację:
java -version
Output:
$ java -version openjdk version "18-ea" 2022-03-22 OpenJDK Runtime Environment (build 18-ea+36-Ubuntu-1) OpenJDK 64-Bit Server VM (build 18-ea+36-Ubuntu-1, mixed mode, sharing)
Następnie ustaw zmienną środowiskową JAVA_HOME:
export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ echo $JAVA_HOME
Output:
$ export JAVA_HOME=/usr/lib/jvm/java-18-openjdk-amd64/ $ echo $JAVA_HOME /usr/lib/jvm/java-18-openjdk-amd64/ $
Powrót do wersji 17 jest nieco kłopotliwy. Na szczęście, istnieje narzędzie aktualizacji-alternatyw.
sudo update-alternatives --config java
Output:
$ sudo update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-18-openjdk-amd64/bin/java 1811 auto mode 1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode 2 /usr/lib/jvm/java-18-openjdk-amd64/bin/java 1811 manual mode Press to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to provide /usr/bin/java (java) in manual mode
Sprawdź, czy wybrano nową wersję Java.
java -version
Output:
$ java -version openjdk version "17.0.3" 2022-04-19 OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1) OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)
⚠️ Uwaga⚠️ jeśli ustawiono zmienną środowiskową JAVA_HOME, należy ją zaktualizować za pomocą odpowiedniej ścieżki.
Testowanie instalacji zestawu JDK
Aby przetestować instalację aplikacji Java, tworząc aplikację Hello World, utwórz plik HelloWorld.java i wklej do niego następujący kod:
public class HelloWorld { public static void main(String[] args) { System.out.println("👋 Hello World!"); } }
Zapisz i skompiluj plik, a następnie uruchom go.
javac HelloWorld.java java HelloWorld
Output:
$ javac HelloWorld.java $ java HelloWorld.java 👋 Hello World!
To już wszystko, zainstalowałeś i skonfigurowałeś OpenJDK w Ubuntu 22.04.