How to Install Oracle Java 17 on Debian 12/11/10

Emerging as a significant milestone in the Java landscape, Oracle’s Java 17 LTS (Long-Term Support) is the newest addition to Oracle’s Java SE platform. As an LTS release, it pledges extended support and stability that enterprise users and developers alike can depend on for years to come.

Java 17 LTS ushers in a new era, demonstrating Oracle’s commitment to enhancing functionality, performance, security, and modern development practices. Each feature of this robust and reliable platform is designed to address the evolving needs of the global Java community.

Key Features: A Comparative View

While Oracle’s Java 17 LTS retains the core essence of the Java platform, it incorporates a range of significant improvements and additions over its predecessor, Java 11 LTS. Let’s delve deeper into these enhancements:

Language and API Enhancements

  • Pattern Matching for instanceof (JEP 394): This feature simplifies common coding patterns by allowing conditional extraction of components from objects, thereby enhancing code readability and robustness.
  • Records (JEP 395): Records provide a compact syntax for declaring classes which are transparent holders for shallowly immutable data, reducing boilerplate code associated with ‘data carrier’ classes.

Performance Enhancements

  • Foreign-Memory Access API (Incubator) (JEP 393): This provides a safe and efficient API for Java programs to access foreign memory outside of the Java heap, enhancing application performance and reducing memory footprint.

Security and Privacy Enhancements

  • Strongly Encapsulate JDK Internals by Default (JEP 396): It improves security and maintainability of the platform by preventing access to the internal elements of the JDK.
  • Deprecate and Encapsulate Additional Internal APIs (JEP 403): This is a continuation of the work to encapsulate internal APIs within the JDK to ensure its integrity and security.

Tooling Enhancements

  • Packaging Tool (JEP 392): This feature provides a way for developers to package Java applications for distribution in platform-specific formats, improving application deployment practices.
  • Remove the Experimental AOT and JIT Compiler (JEP 410): Oracle’s Java 17 LTS removes the experimental Ahead-of-Time (AOT) and Just-in-Time (JIT) compiler, favoring more advanced compiler technologies.

Each of these features of Oracle’s Java 17 LTS embodies the relentless pursuit of innovation and enhancement, making Java more adaptable and efficient for modern development tasks.

As we transition into the how-to section of this guide, we’ll demonstrate how to install Oracle’s Java 17 LTS on Debian 12 Bookworm, Debian 11 Bullseye, or Debian 10 Buster. With step-by-step instructions, you’ll have the opportunity to explore and utilize the new features and improvements that Java 17 LTS has to offer.

Section 1: Oracle Java 17 LTS Installation Using .deb Package on Debian

For those who prefer Debian package management, this section provides a comprehensive step-by-step guide to installing Oracle Java 17 LTS utilizing the .deb package.

Step 1: Acquiring the Oracle Java 17 .deb Package

To initiate the installation process, we need to obtain the Oracle Java 17 .deb package. A simple and efficient method to do this is to employ the wget command, a potent tool for downloading files from the web in a non-interactive manner. It supports protocols such as HTTP, HTTPS, and FTP, and is also capable of retrieving files via HTTP proxies.

Utilize the following command to download the Oracle Java 17 .deb package:


Executing the above command engages wget to establish a connection with the designated URL and download the Java 17 Debian package onto your local system. With the package now in your possession, we are ready to proceed to the installation phase.

Step 2: Deploying Oracle Java 17 with dpkg

With the .deb package downloaded, we now employ the dpkg command to install Oracle Java 17 LTS. dpkg is an effective tool that allows you to install, remove, and manage Debian packages on your Debian system with relative ease.

Prior to utilizing the dpkg command, verify that you’re in the directory where the downloaded .deb package is stored. To install Java, enter the following command:

sudo dpkg -i jdk-17_linux-x64_bin.deb

This command prompts the dpkg utility to install the specified .deb package. The -i flag is a directive indicating our intention to install a package. Depending on the size of the package and the processing speed of your system, the installation duration may vary.

Step 3: Confirming the Installation

Following the successful installation of Oracle Java 17 LTS, it is essential to ensure that the system recognizes the correct Java version. This can be achieved by querying the installed Java version using the --version command, as shown below:

java --version

This command will return the version of Java currently active on your system. If the installation process was completed successfully, it should display Java 17. This affirms that Oracle Java 17 JDK has been properly installed and is ready for use.

Section 2: Oracle Java 17 LTS Manual Installation Using Archive on Debian

Certain users may prefer a hands-on approach to software installation, granting them total control over the procedure and enabling customization to meet their specific needs. For such scenarios, Oracle Java 17 LTS offers a manual installation option using the archive. Let’s delve into the steps necessary to achieve a customizable and adaptable Java development environment.

Step 1: Procuring the Oracle Java 17 Archive

The initial task involves obtaining the Oracle Java 17 archive. This can be efficiently done with the curl command, a versatile tool for downloading files from a server via various protocols, including HTTP and FTP.

Firstly, confirm that curl is installed on your Debian system. If it’s not, execute the following command to install it:

sudo apt install curl

Next, download Oracle JDK 17 latest release, with the following command:

curl  -O

Equipped with curl, we can proceed to download the Oracle Java 17 archive:

tar -xvf jdk-17_linux-x64_bin.tar.gz

Executing this command unravels the Oracle Java 17 archive, laying the groundwork for the subsequent installation stages.

Step 3: Navigate to the Extracted Directory and Position OpenJDK 17 Files

Next, navigate to the directory where the archive was extracted:

cd <directory_name>

Upon entering the directory, execute the following commands to relocate the Java 17 files to the desired directory:

sudo mkdir -p /usr/local/jdk-17
sudo mv * /usr/local/jdk-17

Step 4: Configuring Environment Variables

With the Java 17 files appropriately positioned, the focus now shifts to setting up the environment variables. This configuration allows your system to recognize the Java installation location and interact with it properly. Append the following lines to your .bashrc or .bash_profile file:

export JAVA_HOME=/usr/local/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

To apply the modifications to your environment variables, source the .bashrc or .bash_profile file with the following command:

source ~/.bashrc

To make the changes to the environment variables permanent and avoid using source every time, you need to add the export commands to your .bashrc or .bash_profile file.

This way, every time you open a new terminal session, these files are sourced automatically, making the variable changes persist across sessions.

The commands would look like this in your terminal:

echo 'export JAVA_HOME=/usr/local/jdk-17' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc

These commands append the export lines to the end of your .bashrc file.

After these commands have been executed, for the changes to take effect immediately, you still need to source your .bashrc or .bash_profile file. If you do not wish to source it now, the changes will be applied the next time you start a new terminal session.

To source the .bashrc file, you can use:

source ~/.bashrc

Step 5: Validate the Installation

Lastly, it’s crucial to verify that Oracle Java 17 LTS is correctly installed and your environment variables are accurately set. To accomplish this, inspect the installed Java version and the JAVA_HOME variable:

java --version

Provided everything was executed correctly, the output should present the Java version and the path to the Java installation. This result signifies a successful installation and setup process. Consequently, through this manual installation, you gain granular control over your Java development environment, which can be particularly beneficial based on your specific usage requirements.

Section 3: Developing and Validating Java Applications on Debian

After accomplishing the Oracle Java 17 LTS installation on your Debian system, it’s essential to affirm the effectiveness of your setup. A suitable way of doing this involves developing a basic Java application. This not only ascertains the integrity of your installation but also familiarizes you with the procedure of building, compiling, and running Java applications on Debian.

Step 1: Writing Your Initial Java Application

The first order of business is creating a new Java file using a text editor. The ‘nano’ text editor is frequently employed for this purpose due to its simplicity and user-friendly interface. With the following command, create a new file named ‘’:

sudo nano

Inside this freshly created file, you’ll write your first Java application. Below is a sample of a simple program which, upon execution, will display a cheery greeting:

public class Greeting {
  public static void main(String[] args) {
    System.out.println("Hello, Debian world!");

Preserve your code by pressing CTRL+O and subsequently close the text editor using CTRL+X.

Step 2: Compiling and Running the Java Application

With your code set, the next step involves its compilation. Java operates on a two-step mechanism to execute code: initially compiling it into bytecode, then running the bytecode. Accomplish this with the javac command:


Provided your code is error-free, this command will generate a file named ‘Greeting.class’ that contains the Java bytecode.

Next, to execute the bytecode and behold your meticulously crafted message, use the java command:

java Greeting

The output should be “Hello, Debian world!”, signifying the successful operation of your application and hence, the effective functioning of your Java installation.

Step 3: Broadening Your Horizons With an Additional Java Application

To further confirm the operability of your Java development environment and cement your understanding and comfort with Java on Debian, crafting and testing a second Java application is a prudent move.

Establish another file, ‘’, and embed the following simple code:

public class Goodbye {
  public static void main(String[] args) {
    System.out.println("Goodbye, Debian world!");

Compile and execute this program similar to the previous one:

java Goodbye

The output will read: “Goodbye, Debian world!”, thereby reinforcing the successful functioning of your Java development environment.

By creating and testing these two rudimentary applications, you’ve corroborated the functionality of your Java environment and have gained familiarity with the process of creating, compiling, and executing Java programs on Debian. This paves the way for you to undertake more intricate Java development tasks.

Concluding Thoughts

Throughout this guide, you’ve successfully navigated the comprehensive procedure of installing Oracle’s JDK 17 on a Debian Linux distribution. The step-by-step instructions provided have guided you through acquiring the archive, extracting its contents, arranging the files, and establishing the necessary environment variables. Additionally, you’ve engaged with the practical task of creating and executing Java applications, which served to validate your setup and familiarize you with the Java development workflow on Debian. This knowledge empowers you to take full advantage of Oracle’s JDK 17 and to begin working on more complex Java projects on your Debian system.

Additional Resources and Links

Here are some additional resources that you may find valuable in furthering your understanding and skills regarding Oracle’s JDK 17 and Java development on Debian:

  • Oracle’s Official JDK 17 Documentation: Oracle’s official documentation provides an in-depth overview of JDK 17, allowing you to explore its features, enhancements, and APIs in greater detail.
  • The Official Java Community: Engage with fellow Java developers, ask questions, and share knowledge. This vibrant community provides an excellent platform to learn and grow.
  • Oracle’s Java Tutorials: These official tutorials by Oracle can be a great place to delve into more complex Java concepts and features, providing valuable hands-on learning experience.

Share to...