sabato 16 aprile 2016

Installiamo Java su Linux

Oggi proviamo a fare una cosa che normalmente non comporta alcun problema ma almeno capiamo cosa succede: installiamo la JDK di Oracle su una macchina Ubuntu (o meglio Linux Mint, ma poco cambia).

Dopo il setup del sistema operativo, Mint parte con la OpenJDK, che di per se non è male per il 90% dei casi. Tuttavia alcuni applicativi richiedono la JDK di Oracle e quindi bisogna installare questa, ma purtroppo non è presente nei repository ufficiali.
Se si va sul sito ufficiale di oracle osserveremo che non esiste un pacchetto Debian (.deb) per installare ma solo RedHat (RPM). Viene comunque fornito il file compresso e quello andremo ad usare.
Ora per onore di cronaca vi dico che è possibile agganciarsi a un repository non ufficiale che per altro ve la tiene anche aggiornata

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

ma oggi vogliamo fare un altra cosa: usare il pacchetto compresso.
Quindi scarichiamo il file .tar (32 o 4 bit) e cominciamo.

Prima di cominciare vediamo cosa abbiamo installato sia per java che per javac (è ESTREMAMENTE consigliato avere java e javac della stessa versione!)
Quindi digitiamo

sudo update-alternatives --query java
sudo update-alternatives --query javac

Finito il download del pacchetto come root andiamo in
/usr/lib/jvm
ed estraiamo il file (per semplicità nella directory
/usr/lib/jvm/oracle_jdk8
(più figo ancora? estraiamo dove vogliamo e poi
sudo mv /path/to/jdk1.8.0_20 /usr/lib/jvm/oracle_jdk8) 

Lo installiamo qui perchè è qui che si devono installare tutti i pacchetti disponibili a tutti gli utenti e noi che siamo root...

Fatto questo dobbiamo modificare le "alternatives" in modo che la nostra jdk sia quella di default.
Innanzitutto installiamo le alternatives
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle_jdk8/jre/bin/java 2000
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/oracle_jdk8/bin/javac 2000
(attenti ai path che sono leggermente diversi tra i due comandi!)
a questo punto le mettiamo come prioritarie
sudo update-alternatives --config java
e poi
sudo update-alternatives --config javac

Ci siamo quasi.
Java infatti funziona utilizzando alcune variabili d'ambiente (la più nota JAVA_HOME).
Sempre come root creiamo il file
/etc/profile.d/oraclejdk.sh
e ci andiamo a mettere dentro queste stringhe
export J2SDKDIR=/usr/lib/jvm/oracle_jdk8
export J2REDIR=/usr/lib/jvm/oracle_jdk8/jre
export PATH=$PATH:/usr/lib/jvm/oracle_jdk8/bin:/usr/lib/jvm/oracle_jdk8/db/bin:/usr/lib/jvm/oracle_jdk8/jre/bin
export JAVA_HOME=/usr/lib/jvm/oracle_jdk8
export DERBY_HOME=/usr/lib/jvm/oracle_jdk8/db
(attenti sempre ai path!)

Riavviamo e proviamo
java -version
e poi
echo $JAVA_HOME

Finito!.