How to install JDK 10 under Ubuntu?

How do I install Java Development Kit (JDK) 10 on Ubuntu?

The installation instructions on Oracle's help center only explain how to download and extract the archive on Linux platform, without any system setup.


Solution 1:

Update: JDK 11 Now Available

sudo apt-get install openjdk-11-jdk

For JDK 10

Option 1: Easy Installation (PPA)

sudo add-apt-repository ppa:linuxuprising/java
sudo apt-get update
sudo apt-get install oracle-java10-installer

Then set as default with:

sudo apt-get install oracle-java10-set-default

And finally verify Installation with:

$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

Source: Linux Uprising

Option 2: Manual Installation

  • Download OpenJDK 10 binaries for Linux.

  • Untar the downloaded archive:

    tar xzvf openjdk-10_linux-x64_bin.tar.gz
    
  • Move the extracted archive to where your system keeps your installed JDKs:

    sudo mv jdk-10 /usr/lib/jvm/java-10-openjdk-amd64/
    
  • Add the new Java alternative:

    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-10-openjdk-amd64/bin/java 1
    sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-10-openjdk-amd64/bin/javac 1
    
  • Update your system's java alternatives and choose JDK 10:

    $ sudo update-alternatives --config java
    here are 3 choices for the alternative java (providing /usr/bin/java).
    
      Selection    Path                                            Priority   Status
    ------------------------------------------------------------
      0            /usr/lib/jvm/java-9-openjdk-amd64/bin/java       1091      auto mode
    * 1            /usr/lib/jvm/java-10-openjdk-amd64/bin/java      1         manual mode
      2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
      3            /usr/lib/jvm/java-9-openjdk-amd64/bin/java       1091      manual mode
    
    Press <enter> to keep the current choice[*], or type selection number: 
    

    and

    $ sudo update-alternatives --config javac
    There are 3 choices for the alternative javac (providing /usr/bin/javac).
    
      Selection    Path                                          Priority   Status
    ------------------------------------------------------------
    * 0            /usr/lib/jvm/java-9-openjdk-amd64/bin/javac    1091      auto mode
      1            /usr/lib/jvm/java-10-openjdk-amd64/bin/javac   1         manual mode
      2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac    1081      manual mode
      3            /usr/lib/jvm/java-9-openjdk-amd64/bin/javac    1091      manual mode
    
    Press <enter> to keep the current choice[*], or type selection number: 1
    update-alternatives: using /usr/lib/jvm/java-10-openjdk-amd64/bin/javac to provide /usr/bin/javac (javac) in manual mode
    
  • Verify your installation with:

    $ java --version
    openjdk 10 2018-03-20
    OpenJDK Runtime Environment 18.3 (build 10+46)
    OpenJDK 64-Bit Server VM 18.3 (build 10+46, mixed mode)
    

    and

    $ javac --version
    javac 10
    
  • Done


If you prefer Oracle's JDK, download it and follow the installation steps as shown above.

Solution 2:

I've found SdkMan! a very useful tool because it provides a convenient way for managing your JDKs from the shell.

For example, once it is installed, you can:

Install a specific JDK version: sdk install java 10.0.2-open

Downloading: java 10.0.2-open

In progress...

#################                             12,3%

Use a specific JDK version: sdk use java 10.0.2-open

Using java version 10.0.2-open in this shell.

List available JDK: sdk list java

===================================================================
Available Java Versions
===================================================================                                                        
     9.0.4-open                                                                    
   + 8u161-oracle                                                                  
     8.0.191-oracle                                                               
 > + 8.0.171-oracle                                                                
     7.0.191-zulu                                                                 
     12.ea.15-open                                                                 
     11.0.1-open                                                                  
     10.0.2-open                                                                   
     1.0.0-rc8-graal                                                              

===================================================================
+ - local version
* - installed
> - currently in use
=======================================================================

And much more

See https://sdkman.io/usage