In this article we are going to cover How to Install openJDK on Ubuntu 24.04 LTS and Setup Java Environment variables on Ubuntu 24.04 LTS, Download and Install Oracle Java 22 on Ubuntu 24.04 LTS.
Java is a versatile, powerful language with a wide range of applications. Its platform independence, object-oriented nature, rich standard library, and extensive ecosystem make it a strong choice for developers building everything from small applications to large, enterprise-level systems.
Prerequisites
- Install Ubuntu 24.04
- Local User with admin rights
- Internet Connectivity
Step#1:Install OpenJDK on Ubuntu 24.04
Use below commands to install OpenJDK on Ubuntu 24.04 LTS
sudo apt update
To search for all available Java versions in the Ubuntu package repository.
apt search openjdk | grep -E 'openjdk-.*-jdk/'
Output:
ubuntu@ip-172-31-36-134:~$ apt search openjdk | grep -E 'openjdk-.*-jdk/'
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
openjdk-11-jdk/noble-updates,noble-security 11.0.24+8-1ubuntu3~24.04.1 amd64
openjdk-17-jdk/noble-updates,noble-security 17.0.12+7-1ubuntu2~24.04 amd64
openjdk-21-jdk/noble-updates,noble-security 21.0.4+7-1ubuntu2~24.04 amd64
openjdk-8-jdk/noble-updates,noble-security 8u422-b05-1~24.04 amd64
Install openjdk-21-jdk (Java Development Kit) using below command.
sudo apt install openjdk-21-jdk
Output:
ubuntu@ip-172-31-36-134:~$ sudo apt install openjdk-21-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-common at-spi2-core ca-certificates-java dconf-gsettings-backend dconf-service fontconfig fontconfig-config fonts-dejavu-core
fonts-dejavu-extra fonts-dejavu-mono gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme java-common libasound2-data libasound2t64
libatk-bridge2.0-0t64 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0t64 libatspi2.0-0t64 libavahi-client3 libavahi-common-data libavahi-common3 libcairo-gobject2 libcairo2
libcolord2 libcups2t64 libdatrie1 libdconf1 libdeflate0 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libepoxy0 libfontconfig1 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 libgtk-3-0t64 libgtk-3-bin libgtk-3-common
libharfbuzz0b libice-dev libice6 libjbig0 libjpeg-turbo8 libjpeg8 liblcms2-2 liblerc4 libllvm17t64 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0 libpcsclite1
libpixman-1-0 libpthread-stubs0-dev librsvg2-2 librsvg2-common libsharpyuv0 libsm-dev libsm6 libthai-data libthai0 libtiff6 libvulkan1 libwayland-client0 libwayland-cursor0
libwayland-egl1 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 libxt6t64 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 mesa-vulkan-drivers openjdk-21-jdk-headless openjdk-21-jre openjdk-21-jre-headless session-migration
ubuntu-mono x11-common x11-utils x11proto-dev xorg-sgml-doctools xtrans-dev
Suggested packages:
default-jre alsa-utils libasound2-plugins colord cups-common gvfs libice-doc liblcms2-utils pcscd librsvg2-bin libsm-doc libx11-doc libxcb-doc libxt-doc openjdk-21-demo
openjdk-21-source visualvm libnss-mdns fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic mesa-utils
Recommended packages:
luit
The following NEW packages will be installed:
adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-common at-spi2-core ca-certificates-java dconf-gsettings-backend dconf-service fontconfig fontconfig-config fonts-dejavu-core
fonts-dejavu-extra fonts-dejavu-mono gsettings-desktop-schemas gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme java-common libasound2-data libasound2t64
libatk-bridge2.0-0t64 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0t64 libatspi2.0-0t64 libavahi-client3 libavahi-common-data libavahi-common3 libcairo-gobject2 libcairo2
libcolord2 libcups2t64 libdatrie1 libdconf1 libdeflate0 libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 libepoxy0 libfontconfig1 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 libgtk-3-0t64 libgtk-3-bin libgtk-3-common
libharfbuzz0b libice-dev libice6 libjbig0 libjpeg-turbo8 libjpeg8 liblcms2-2 liblerc4 libllvm17t64 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpciaccess0 libpcsclite1
libpixman-1-0 libpthread-stubs0-dev librsvg2-2 librsvg2-common libsharpyuv0 libsm-dev libsm6 libthai-data libthai0 libtiff6 libvulkan1 libwayland-client0 libwayland-cursor0
libwayland-egl1 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 libxt6t64 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 mesa-vulkan-drivers openjdk-21-jdk openjdk-21-jdk-headless openjdk-21-jre openjdk-21-jre-headless
session-migration ubuntu-mono x11-common x11-utils x11proto-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 132 newly installed, 0 to remove and 102 not upgraded.
Need to get 202 MB of archives.
After this operation, 632 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
More...
Verify Java Version for both runtime and compiler.
java --version
javac --version
Output:
ubuntu@ip-172-31-36-139:~$ java -version
openjdk version "11.0.24" 2024-07-16
OpenJDK Runtime Environment (build 11.0.24+8-post-Ubuntu-1ubuntu324.04.1)
OpenJDK 64-Bit Server VM (build 11.0.24+8-post-Ubuntu-1ubuntu324.04.1, mixed mode, sharing)
Use the following wget command to download Oracle Java 22 on Ubuntu 24.04 LTS
wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.deb
Output:
ubuntu@ip-172-31-36-134:~$ wget https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.deb
--2024-08-29 04:59:06-- https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.deb
Resolving download.oracle.com (download.oracle.com)... 23.221.32.85
Connecting to download.oracle.com (download.oracle.com)|23.221.32.85|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 167396788 (160M) [text/plain]
Saving to: ‘jdk-22_linux-x64_bin.deb’
jdk-22_linux-x64_bin.deb 20%[===================> ] 32.00M 68.7MB/s in 0.5s
2024-08-29 04:59:06 (68.7 MB/s) - Read error at byte 33554432/167396788 (Connection reset by peer). Retrying.
--2024-08-29 04:59:07-- (try: 2) https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.deb
Connecting to download.oracle.com (download.oracle.com)|23.221.32.85|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 167396788 (160M), 133842356 (128M) remaining [text/plain]
Saving to: ‘jdk-22_linux-x64_bin.deb’
jdk-22_linux-x64_bin.deb 42%[++++++++++++++++++++=====================> ] 67.55M 95.1MB/s in 0.4s
2024-08-29 04:59:08 (95.1 MB/s) - Read error at byte 70834289/167396788 (Connection reset by peer). Retrying.
--2024-08-29 04:59:10-- (try: 3) https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.deb
Connecting to download.oracle.com (download.oracle.com)|23.221.32.85|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 167396788 (160M), 96562499 (92M) remaining [text/plain]
Saving to: ‘jdk-22_linux-x64_bin.deb’
jdk-22_linux-x64_bin.deb 76%[++++++++++++++++++++++++++++++++++++++++++=================================> ] 121.55M 120MB/s in 0.4s
2024-08-29 04:59:10 (120 MB/s) - Read error at byte 127457391/167396788 (Connection reset by peer). Retrying.
--2024-08-29 04:59:13-- (try: 4) https://download.oracle.com/java/22/latest/jdk-22_linux-x64_bin.deb
Connecting to download.oracle.com (download.oracle.com)|23.221.32.85|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 167396788 (160M), 39939397 (38M) remaining [text/plain]
Saving to: ‘jdk-22_linux-x64_bin.deb’
jdk-22_linux-x64_bin.deb 100%[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================>] 159.64M 120MB/s in 0.3s
2024-08-29 04:59:13 (120 MB/s) - ‘jdk-22_linux-x64_bin.deb’ saved [167396788/167396788]
Use the following dpkg command to install the Oracle Java installer file that includes the necessary binaries and files to run the Java Development Kit on your system.
sudo dpkg -i jdk-22_linux-x64_bin.deb
Output:
ubuntu@ip-172-31-36-134:~$ sudo dpkg -i jdk-22_linux-x64_bin.deb
Selecting previously unselected package jdk-22.
(Reading database ... 83248 files and directories currently installed.)
Preparing to unpack jdk-22_linux-x64_bin.deb ...
Unpacking jdk-22 (22.0.2-ga) ...
Setting up jdk-22 (22.0.2-ga) ...
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jar to provide /usr/bin/jar (jar) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jarsigner to provide /usr/bin/jarsigner (jarsigner) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/javac to provide /usr/bin/javac (javac) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/javadoc to provide /usr/bin/javadoc (javadoc) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/javap to provide /usr/bin/javap (javap) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jcmd to provide /usr/bin/jcmd (jcmd) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jconsole to provide /usr/bin/jconsole (jconsole) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jdb to provide /usr/bin/jdb (jdb) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jdeps to provide /usr/bin/jdeps (jdeps) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jfr to provide /usr/bin/jfr (jfr) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jimage to provide /usr/bin/jimage (jimage) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jinfo to provide /usr/bin/jinfo (jinfo) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jlink to provide /usr/bin/jlink (jlink) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jmap to provide /usr/bin/jmap (jmap) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jmod to provide /usr/bin/jmod (jmod) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jpackage to provide /usr/bin/jpackage (jpackage) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jps to provide /usr/bin/jps (jps) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jrunscript to provide /usr/bin/jrunscript (jrunscript) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jshell to provide /usr/bin/jshell (jshell) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jstack to provide /usr/bin/jstack (jstack) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jstat to provide /usr/bin/jstat (jstat) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jstatd to provide /usr/bin/jstatd (jstatd) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/jwebserver to provide /usr/bin/jwebserver (jwebserver) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/serialver to provide /usr/bin/serialver (serialver) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64 to provide /usr/java/jdk-22-oracle-x64 (java_jdk_22_oracle) in auto mode
update-alternatives: using /usr/lib/jvm/jdk-22.0.2-oracle-x64/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Again, we need to verfiy java version
java --version
javac --version
Output:
ubuntu@ip-172-31-36-134:~$ java --version
javac --version
java 22.0.2 2024-07-16
Java(TM) SE Runtime Environment (build 22.0.2+9-70)
Java HotSpot(TM) 64-Bit Server VM (build 22.0.2+9-70, mixed mode, sharing)
javac 22.0.2
List all available Java versions installed on your system.
update-alternatives --list java
Output:
ubuntu@ip-172-31-36-134:~$ update-alternatives --list java
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
/usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/java
To switch between different Java versions, use the following command.
sudo update-alternatives --config java
Output:
ubuntu@ip-172-31-36-134:~$ 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/jdk-22.0.2-oracle-x64/bin/java 369115136 auto mode
1 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 manual mode
2 /usr/lib/jvm/jdk-22.0.2-oracle-x64/bin/java 369115136 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/lib/jvm/java-21-openjdk-amd64/bin/java to provide /usr/bin/java (java) in manual mode
Conclusion:
We have covered How to Install OpenJDK on Ubuntu 24.04 LTS and Setup Java Environment variables on Ubuntu 24.04 LTS.
Related Articles:
How to Install Oracle Java 17 on Ubuntu 22.04 LTS
Reference: