#howto - Installazione di Java sulle principali distribuzioni

Scritto da il
Redatto da
java
bash
ubuntu
fedora
archlinux

Cerchi come programmare in java? Qui la nostra guida ←

Java è stato per anni uno dei linguaggi di programmazione più utilizzati, da poco sorpassato da Python in fama, ma ancora oggi è fondamentale per tantissime aziende che lavorano nel mondo IT.

3 Billion Devices “Run” Java

~cit necessaria

Ma come lo installiamo sulle nostre distribuzioni?

Quale java

È innanzitutto importante capire quale distribuzione di java si vuole installare o quale versione.

Distribuzioni di java

Si intende per distribuzione java una particolare JVM (Java Virtual Machine) con i suoi tools e librerie per compilare ed eseguire codice.

Java è un linguaggio interpretato e compilato, il codice leggibile viene prima compilato in un linguaggio macchina intermedio chiamato bytecode attraverso il tool javac al quale poi vengono collegate le librerie della distribuzione, il tutto viene poi eseguito con il tool java

Da poco ( versione 10 in poi) nella compilation di tools vi si può trovare jshell, un interprete interattivo di java che vi permette di eseguire eseguire codice a riga di comando istruzione per istruzione, un po’ come python.

Le principali distribuzioni java sono:

  • OracleJDK, ovvero l’originale
  • OpenJDK, la versione open source
  • GraalVM una versione ad alte prestazioni basata su OpenJDK

Versione di Java

Java ogni anno viene migliorato aggiungendo funzioni, correggendo bug o eliminando del codice vecchio, questo processo fa si che ogni modifica faccia variare quella che invece è la versione di Java

Le versioni fino alla 5 venivano identificate come 1.x, dove x era appunto il numero di versione. Da Java 6 in avanti è stato identificato con il solo numero di versione, ad oggi siamo a Java 16, uscita ad Aprile 2021

Altresì importanti sono le versioni:

  • Java 8 : l’ultima versione di Java a mantenere alcune opzioni di compatibilità necessarie tutt’oggi a moltissime applicazioni IT, le aziende infatti lo usano ancora.

  • Java 11 : è la versione a lungo termine di supporto, o LTS. Il supporto agli aggiornamenti di sicurezza su Java8 son terminati nel 2019, quelli di Java 11 termineranno invece nel 2026

JRE e JDK

In tutti i casi vi è una differenza fondamentale tra JRE, o Java Runtime Environment e JDK, o Java Development Kit.

Il primo contiene solo gli strumenti per eseguire software java, il secondo contiene i primi e anche gli strumenti per svilupparci su ( come il java compiler ).

Nell’articolo si vedrà come installare i JDK e non le JRE.

Gestire più versioni di Java

Non è necessario scegliere una sola versione o distribuzione di java, possono coesistere più versioni sulla stessa macchina, tuttavia i comandi java,javac e jshell saranno assegnati a solo una di queste.

Una delle tecniche più comuni per gestire facilmente il cambio tra più versioni è installare ogni versione di java in una directory a se stante e fare il collegamento di una di queste in una cartella chiamata semplicemente “java”, i comandi vanno associati a quelli di quella cartella!

Installare Java

Vediamo come installare le varie distribuzioni java.

Tenete presente che nella maggiorparte delle distribuzioni, java viene installato nella cartella:

/usr/lib/jvm

Installare OracleJDK

Dalla versione 8, Oracle ha reso la versione ufficiale di java più orientata al pubblico business. Teoricamente per utilizzarla nei progetti professionali, l’utente finale deve acquisirne una licenza!

Detto questo vediamo come scaricare ed installare l’ultima versione di oracle JDK nelle nostre distribuzioni

Ubuntu e derivate

Potete installare java tramite le ppa di Uprising Linux

add-apt-repository ppa:linuxuprising/java

apt update 

apt install oracle-java16-installer

oracle-java16-installer --install-recommends

Il parametro install-recommends serve a rendere la versione di java quella predefinita

Fedora

Potete scaricare dal sito ufficiale il pacchetto rpm di java e quindi installarlo:

dnf install  jdk*.rpm 

quindi aggiornate le configurazioni di sistema:

alternatives --config java

Vi verrà chiesto, se avete più versioni, quale volete rendere predefinita

Archlinux

Trovate i pacchetti oracle su AUR, supponendo usiate paru come aur-helper potete scrivere:

paru -S jdk jdk-docs

Il procedimento è simile con tutti gli altri AUR-helper, se non ne usate alcuno potete clonare e installare manualmente i software da aur:

# jdk
git clone https://aur.archlinux.org/jdk.git

cd jdk 

makepkg -si 

## jdk-docs
git clone https://aur.archlinux.org/jdk-docs.git 

cd jdk-docs

makepkg -si

Generico

Potreste anche andare per un approccio generico. Scaricate sempre dal sito ufficiale il file tar.gz.

Potreste anche utilizzare wget da terminale:

wget -c --header "Cookie:oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otnpub/java/jdk/16.0.2%2B7/d4a915d82b4c4fbb9bde534da945d746/jdk-16.0.2_linux-x64_bin.tar.gz

NOTA BENE :

il link potrebbe cambiare ad ogni aggiornamento di sottoversione, quindi se vi da ERRORE 404: Not Found. il motivo è semplicemente che è uscita una nuova sottoversione, usate quindi il sito

Una volta scaricato il pacchetto, scompattatelo e spostatelo sotto /usr/lib/jvm, se non esiste create la cartella :

 tar -xzf jdk* 
 
 rm jdk*tar.gz
 
 mkdir -p /usr/lib/jvm
 
 mv jdk* /usr/lib/jvm

Consiglio quindi di fare il link ad una cartella chiamata java nella stessa directory:

ln -sf /usr/lib/jvm/jdk-16.0.2 /usr/lib/jvm/java

Quindi fare il link ai tool eseguibili:

ln -sf /usr/lib/jvm/java/bin/java /usr/bin/java
ln -sf /usr/lib/jvm/java/bin/javac /usr/bin/javac
ln -sf /usr/lib/jvm/java/bin/jar /usr/bin/jar
ln -sf /usr/lib/jvm/java/bin/jshell /usr/bin/jshell

E creare la variabile JAVA_HOME nel file /etc/profile

echo "JAVA_HOME=/usr/lib/jvm/java" | tee -a /etc/profile

NOTA BENE:

se l’account non è root, il comando sudo va aggiunto prima di tee, non prima di echo

Installare OpenJDK

La versione open della jdk è più che sufficiente nella maggioranza delle nostre necessità, è anche più facile da installare e rientra nel nostro sistema più naturalmente, quindi perché non provarla come prima scelta?

Ubuntu e derivate

Il pacchetto da installare è

apt-get install openjdk-jdk

Fedora

Su fedora bisogna installare il pacchetto

dnf install java-latest-openjdk.x86_64

Anche in questo caso, bisogna aggiornare la versione di default così:

alternatives --config java

Archlinux

Bisogna installare i pacchetti:

pacman -S jdk-openjdk openjdk-doc openjdk-src

Generico

Anche in questo caso possiamo installare genericamente la jdk. Trovate le release sul sito ufficiale oppure potete scaricarne una con wget così:

wget https://download.java.net/java/GA/jdk16.0.2/d4a915d82b4c4fbb9bde534da945d746/7/GPL/openjdk-16.0.2_linux-x64_bin.tar.gz

NOTA BENE :

il link potrebbe cambiare ad ogni aggiornamento di sottoversione, quindi se vi da ERRORE 404: Not Found. il motivo è semplicemente che è uscita una nuova sottoversione, usate quindi il sito

Una volta scaricato il pacchetto, scompattatelo e spostatelo sotto /usr/lib/jvm, se non esiste create la cartella :

tar -xzf openjdk* 

rm openjdk*tar.gz

mkdir -p /usr/lib/jvm

mv jdk* /usr/lib/jvm

Consiglio quindi di fare il link ad una cartella chiamata java nella stessa directory:

ln -sf /usr/lib/jvm/jdk-16.0.2 /usr/lib/jvm/java

Quindi fare il link ai tool eseguibili:

ln -sf /usr/lib/jvm/java/bin/java /usr/bin/java
ln -sf /usr/lib/jvm/java/bin/javac /usr/bin/javac
ln -sf /usr/lib/jvm/java/bin/jar /usr/bin/jar
ln -sf /usr/lib/jvm/java/bin/jshell /usr/bin/jshell

La versione headless

Esiste un ulteriore versione di openjdk, la headless, ovvero senza GUI.
Non vedo particolarissimi motivi per dover installare una versione headless su un pc desktop o un notebook ( ovviamente il discorso potrebbe cambiare su server o dispositivi per scopi precisi ) quindi l’articolo non ne tratterà l’installazione.

Installare GraalVM

Non ci ho creduto fino a che non lo ho provato, ma graalvm è davvero una versione ottimizzata di openjdk. Non so bene quali siano i suoi limiti in verità ma provando a compilare un progetto grosso ha dato i suoi frutti.

Consideriamo che GraalVM si basa sulle versioni LTS di oracle, quindi l’ultima disponibile è con Java 11.

Vediamo ora come installarlo nelle nostre distribuzioni.

Archlinux

Per archlinux potete installare il pacchetto jdk11-graalvm-bin da AUR. Con un aur-helper come paru:

paru -S jdk11-graalvm-bin

Oppure manualmente:

git clone https://aur.archlinux.org/jdk11-graalvm-bin.git
makepkg -si

Genericamente

Nelle altre distribuzioni dovrete usare il metodo generico. Scaricate quindi il tar.gz con wget oppure dalla pagina ufficiale delle release su github

wget  https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-21.2.0/graalvm-ce-java11-linux-amd64-21.2.0.tar.gz

NOTA BENE :

il link potrebbe cambiare ad ogni aggiornamento di sottoversione, quindi se vi da ERRORE 404: Not Found. il motivo è semplicemente che è uscita una nuova sottoversione, usate quindi il sito

Una volta scaricato il pacchetto, scompattatelo e spostatelo sotto /usr/lib/jvm, se non esiste create la cartella :

tar -xvzf graalvm*.tar.gz

rm graalvm*tar.gz

mkdir -p /usr/lib/jvm

mv graalvm* /usr/lib/jvm/graalvm-11

Consiglio quindi di fare il link ad una cartella chiamata java nella stessa directory:

ln -sf /usr/lib/jvm/graalvm-11 /usr/lib/jvm/java

Ora potreste utilizzare in distribuzioni come Ubuntu e Fedora i tool ufficiali per l’update delle alternative ai programmi:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/graalvm-11/bin/java 2
update-alternatives --config java

Oppure fare il link ai tool eseguibili:

ln -sf /usr/lib/jvm/java/bin/java /usr/bin/java
ln -sf /usr/lib/jvm/java/bin/javac /usr/bin/javac
ln -sf /usr/lib/jvm/java/bin/jar /usr/bin/jar
ln -sf /usr/lib/jvm/java/bin/jshell /usr/bin/jshell
history_edu Revisioni