Architecture
First we check which architecture we are running on.
Open a terminal and type the command arch.
The output could be i686 or i386 for a 32 bits system or x86_64 for a 64 bits system.
Environment
Your environment could already have an installation or not.
Open a terminal and run the following command :
user@machine:~$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) Server VM (build 25.25-b02, mixed mode)
user@machine:~$
In the previous output we can see that the command has been successfully executed. It gives us the default version.
Then run the following command :
user@machine:~$ update-java-alternatives -l
java-1.6.0-openjdk-i386 1061 /usr/lib/jvm/java-1.6.0-openjdk-i386
java-1.7.0-openjdk-i386 1071 /usr/lib/jvm/java-1.7.0-openjdk-i386
java-1.8.0-openjdk-i386 1069 /usr/lib/jvm/java-1.8.0-openjdk-i386
java-8-openjdk-i386 1069 /usr/lib/jvm/java-8-openjdk-i386
user@machine:~$
The current installation shows that several JVM are installed.
Installation
Run the following command in order to install or update the Open JDK 8. The idea is applicable to others JVM.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
if you have more than one Java versions installed on your system. Run the following command and select the desired one.
user@machine:~$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java 1071 auto mode
1 /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java 1071 manual mode
* 3 /usr/lib/jvm/java-8-openjdk-i386/jre/bin/java 1069 manual mode
Press enter to keep the current choice[*], or type selection number:
Set the default Java Compiler by running:
sudo update-alternatives --config javac
However this first part doesn't solve all the default tools to use the desired JVM.
The following command shows you if the tools use the JVM you want :
user@machine:~$ update-alternatives --get-selections | grep java
appletviewer manual /usr/lib/jvm/java-8-openjdk-i386/bin/appletviewer
extcheck manual /usr/lib/jvm/java-8-openjdk-i386/bin/extcheck
idlj manual /usr/lib/jvm/java-8-openjdk-i386/bin/idlj
itweb-settings auto /usr/lib/jvm/java-6-openjdk-i386/jre/bin/itweb-settings
jar manual /usr/lib/jvm/java-8-openjdk-i386/bin/jar
jarsigner manual /usr/lib/jvm/java-8-openjdk-i386/bin/jarsigner
java manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/java
javac manual /usr/lib/jvm/java-8-openjdk-i386/bin/javac
javadoc manual /usr/lib/jvm/java-8-openjdk-i386/bin/javadoc
javah manual /usr/lib/jvm/java-8-openjdk-i386/bin/javah
javap manual /usr/lib/jvm/java-8-openjdk-i386/bin/javap
javaws auto /usr/lib/jvm/java-6-openjdk-i386/jre/bin/javaws
jcmd manual /usr/lib/jvm/java-8-openjdk-i386/bin/jcmd
jconsole manual /usr/lib/jvm/java-8-openjdk-i386/bin/jconsole
jdb manual /usr/lib/jvm/java-8-openjdk-i386/bin/jdb
jdeps manual /usr/lib/jvm/java-8-openjdk-i386/bin/jdeps
jexec manual /usr/lib/jvm/java-8-openjdk-i386/jre/lib/jexec
jhat manual /usr/lib/jvm/java-8-openjdk-i386/bin/jhat
jinfo manual /usr/lib/jvm/java-8-openjdk-i386/bin/jinfo
jjs manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/jjs
jmap manual /usr/lib/jvm/java-8-openjdk-i386/bin/jmap
jps manual /usr/lib/jvm/java-8-openjdk-i386/bin/jps
jrunscript manual /usr/lib/jvm/java-8-openjdk-i386/bin/jrunscript
jsadebugd manual /usr/lib/jvm/java-8-openjdk-i386/bin/jsadebugd
jstack manual /usr/lib/jvm/java-8-openjdk-i386/bin/jstack
jstat manual /usr/lib/jvm/java-8-openjdk-i386/bin/jstat
jstatd manual /usr/lib/jvm/java-8-openjdk-i386/bin/jstatd
keytool manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/keytool
lucli auto /usr/lib/liblucene2-java/lucli
mozilla-javaplugin.so manual /usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/IcedTeaPlugin.so
native2ascii manual /usr/lib/jvm/java-8-openjdk-i386/bin/native2ascii
orbd manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/orbd
pack200 manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/pack200
policytool manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/policytool
rmic manual /usr/lib/jvm/java-8-openjdk-i386/bin/rmic
rmid manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/rmid
rmiregistry manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/rmiregistry
schemagen manual /usr/lib/jvm/java-8-openjdk-i386/bin/schemagen
serialver manual /usr/lib/jvm/java-8-openjdk-i386/bin/serialver
servertool manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/servertool
tnameserv manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/tnameserv
unpack200 manual /usr/lib/jvm/java-8-openjdk-i386/jre/bin/unpack200
wsgen manual /usr/lib/jvm/java-8-openjdk-i386/bin/wsgen
wsimport manual /usr/lib/jvm/java-8-openjdk-i386/bin/wsimport
xjc manual /usr/lib/jvm/java-8-openjdk-i386/bin/xjc
user@machine:~
if the tools are not using the needed JVM some extra step are required:
Run the following command :
sudo update-java-alternatives -s java-8-openjdk-i386
This command update the dependencies but can also complain about some missing components.
update-alternatives: error: no alternatives for mozilla-javaplugin.so.
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/IcedTeaPlugin.so
In this example the Mozilla plugin is missing. This is not a big problem if you don't want to use for security reason.
In case you want to install it, here is the procedure to get it. At the time we wrote this guide the icedtea-8-plugin is not available in the standard repository.
sudo add-apt-repository ppa:maarten-fonville/ppa
sudo apt-get update
sudo apt-get install icedtea-8-plugin
we need to rerun the following command:
sudo update-java-alternatives -s java-8-openjdk-i386