Java and the JVM (Java’s virtual machine) are widely used and required for many kinds of software. This article will guide you through the process of installing and managing different versions of Java using apt-get
.
To follow this tutorial, you will need:
One Ubuntu 16.04 server.
A sudo non-root user, which you can set up by following the Ubuntu 16.04 initial server setup guide.
The easiest option for installing Java is using the version packaged with Ubuntu. Specifically, this will install OpenJDK 8, the latest and recommended version.
First, update the package index.
- sudo apt-get update
Next, install Java. Specifically, this command will install the Java Runtime Environment (JRE).
- sudo apt-get install default-jre
There is another default Java installation called the JDK (Java Development Kit). The JDK is usually only needed if you are going to compile Java programs or if the software that will use Java specifically requires it.
The JDK does contain the JRE, so there are no disadvantages if you install the JDK instead of the JRE, except for the larger file size.
You can install the JDK with the following command:
- sudo apt-get install default-jdk
If you want to install the Oracle JDK, which is the official version distributed by Oracle, you will need to follow a few more steps.
First, add Oracle’s PPA, then update your package repository.
- sudo add-apt-repository ppa:webupd8team/java
- sudo apt-get update
Then, depending on the version you want to install, execute one of the following commands:
This is the latest stable version of Java at time of writing, and the recommended version to install. You can do so using the following command:
- sudo apt-get install oracle-java8-installer
This is a developer preview and the general release is scheduled for March 2017. It’s not recommended that you use this version because there may still be security issues and bugs. There is more information about Java 9 on the official JDK 9 website.
To install JDK 9, use the following command:
- sudo apt-get install oracle-java9-installer
There can be multiple Java installations on one server. You can configure which version is the default for use in the command line by using update-alternatives
, which manages which symbolic links are used for different commands.
- sudo update-alternatives --config java
The output will look something like the following. In this case, this is what the output will look like with all Java versions mentioned above installed.
There are 5 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 auto mode
1 /usr/lib/jvm/java-6-oracle/jre/bin/java 1 manual mode
2 /usr/lib/jvm/java-7-oracle/jre/bin/java 2 manual mode
3 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
4 /usr/lib/jvm/java-8-oracle/jre/bin/java 3 manual mode
5 /usr/lib/jvm/java-9-oracle/bin/java 4 manual mode
Press <enter> to keep the current choice[*], or type selection number:
You can now choose the number to use as a default. This can also be done for other Java commands, such as the compiler (javac
), the documentation generator (javadoc
), the JAR signing tool (jarsigner
), and more. You can use the following command, filling in the command you want to customize.
- sudo update-alternatives --config command
Many programs, such as Java servers, use the JAVA_HOME
environment variable to determine the Java installation location. To set this environment variable, we will first need to find out where Java is installed. You can do this by executing the same command as in the previous section:
- sudo update-alternatives --config java
Copy the path from your preferred installation and then open /etc/environment
using nano
or your favorite text editor.
- sudo nano /etc/environment
At the end of this file, add the following line, making sure to replace the highlighted path with your own copied path.
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
Save and exit the file, and reload it.
- source /etc/environment
You can now test whether the environment variable has been set by executing the following command:
- echo $JAVA_HOME
This will return the path you just set.
You have now installed Java and know how to manage different versions of it. You can now install software which runs on Java, such as Tomcat, Jetty, Glassfish, Cassandra, or Jenkins.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Hi there.
“ppa:webupd8team/java” is not Oracle PPA, it’s a normal PPA made by a 3rd-party user (the creator of the website webupd8.org) and recommending installing Java from such repository claiming that it’s from Oracle is a huge security danger, please fix this.
Thank you.
This no longer works, the
webupd8team/java
PPA has been discontinued. https://launchpad.net/~webupd8team/+archive/ubuntu/javaOracle instructions are deprecated
http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
I had issues with installing java on desktop. But this one https://serverclear.com/install-java-ubuntu/ worked for ubuntu 16.04 server.
This is the official way to install Oracle Java, but it is also the worst way to install Oracle Java.
The Debian package is only a wrapper installer, which then fetches an Oracle tarball from affiliated third party, and occasionally these third party vendors may have an outage, and the installation fails.
It would be nice to make this downloaded package available for the rest of the network, so we can install it on other servers, such as caching the URL Oracle uses to fetch a third party link, and then replay that link always returns a local location, like GCS or S3 bucket. Alternatively, just not use the Oracle installer that comes with Debian package.
I just want to thank you from the bottom of my heart for this great, clear and working tutorial. Thank you very much. Keep up the good work.
When I run the second command
sudo apt-get install default-jdk
I’m getting this error.How can I fix this and install jdk on my Ubuntu 17.10
Was just writing a tutorial on how to install Java on Ubuntu on my site, so I found this tutorial too.
Just as an update: Java 9 is now the stable release and only supports 64-bit systems. Maybe an update is due, or a new tutorial.
Great post thanks !
can be better to add JAVA_HOME environment variable in /etc/bash.bashrc file or ~/.bashrc file