How to Install OpenJDK on Ubuntu 24.04 LTS

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:

Ubuntu Java official page

Ankita Lunawat

Working as DevOps Intern likes to share Knowledge.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share via
Copy link
Powered by Social Snap