Come Installare Java su Ubuntu con Apt-Get

Introduzione Java e la Java Virtual Machine (JVM) sono necessari per poter installare ed eseguire svariati software molto diffusi, tra cui Tomcat di Apache oppure un comune Server Minecraft. In […]

Avatar di GB Factory
GB Factory 30 Gennaio 2022

Introduzione

Java e la Java Virtual Machine (JVM) sono necessari per poter installare ed eseguire svariati software molto diffusi, tra cui Tomcat di Apache oppure un comune Server Minecraft.

In questa guida vedremo come installare varie versioni del Java Runtine Enviroment (JRE) e del Java Developer Kit (JDK) utilizzando apt. Vedremo come installare sia OpenJDK che la versione ufficiale di Oracle del JDK. Impareremo a selezionare la versione di Java adeguata per i nostri progetti. Alla fine della guida saremo in grado di utilizzare il JDK per sviluppare software oppure eseguire dei programmi con la runtime di Java.

Prerequisiti

Per seguire questo tutorial sarà necessario un server Ubuntu, preferibilmente configurato seguendo la guida sulla configurazione iniziale, con un utente sudo non-root e un firewall.

Step 1 - Come Installare Java

Un'installazione di Java si compone di due software principali. Il JDK fornisce strumenti software essenziali per lo sviluppo in Java, come un compilatore e un debugger. La JRE viene utilizzata invece per eseguire effettivamente programmi scritti in Java.

Inoltre, ci sono due principali opzioni tra cui scegliere per installare Java. Open JDK è l'implementazione open source di Java e viene fornita con Ubuntu. Oracle JDK è la versione originale di Java ed è completamente mantenuto da Oracle, l'azienda che sviluppa Java.

Entrambe queste versioni sono ufficialmente riconosciute e fornite da Oracle. La differenza è che OpenJDK, essendo open source, contiene contributi degli utenti della comunità. Tuttavia, a partire da Java 11 le due opzioni sono ora funzionalmente identiche come spiegato da Oracle.

La decisione su cosa installare si riduce alla scelta della licenza appropriata per il contesto in cui si intende utilizzare Java. Inoltre, con OpenJDK c'è la possibilità di installare il JRE separatamente, mentre OracleJDK viene fornito con il suo JRE.

Opzione 1 - Come installare il JRE/JDK predefinito

Il sistema più semplice per installare Java è utilizzare la versione distribuita con Ubuntu. Nello specifico, Ubuntu 20.04 include Open JDK 11, una variante open-source del JRE e del JDK.

Prima di installare questa versione aggiorniamo l'indice dei pacchetti:

sudo apt update

Poi controlliamo se Java è già installato:

java -version

Se ci dirà che il comando non è stato trovato, significa che Java non è attualmente installato. Possiamo eseguire il seguente comando per installare il Java Runtime Enviroment (JRE) predefinito, che installerà anche il JRE di OpenJDK 11.

sudo apt install default-jre

Terminata l'installazione possiamo verificarla eseguendo il seguente comando:

java -version

Se Java è stato installato correttamente, vedremo un output simile al seguente:

openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing))

Potrebbe essere necessario installare anche il Java Development Kit (JDK), oltre al JRE, per compilare ed eseguire alcuni programmi basati su Java. Per installare il JDK è sufficiente eseguire il seguente comando, che installerà anche la JRE:

sudo apt install default-jdk

Possiamo controllare che il JDK sia stato installato correttamente verificandone la versione, per farlo eseguiamo il comando per stampare la versione del compilatore di Java:

javac -version

Nell'output dovrebbe essere visibile la versione del compilatore di Java.

Nella prossima opzione proposta vedremo come installare il JDK e la JRE ufficiali di Oracle.

Opzione 2 - Installare l'Oracle JDK 11

Il contratto di licenza di Oracle per Java non consente l'installazione automatica tramite un gestore di pacchetti. Per installare il JDK di Oracle, che è la versione ufficiale distribuita da Oracle, è necessario creare un account Oracle e scaricare manualmente il JDK per aggiungere una nuova repository di pacchetti per la versione che si desidera utilizzare. A quel punto sarà possibile utilizzare il file ottenuto per l'installazione tramite uno script di terze parti. L'Oracle JDK viene fornito con il JRE incluso, quindi non è necessario installarlo separatamente.

La versione dell'Oracle JDK che dovrai scaricare deve corrispondere allo script di installazione. Per scoprire quale versione ti serve, visita la pagina oracle-java11-installer e individua il pacchetto della serie Jammy come illustrato in figura:

In questo caso la versione dello script è 11.0.13, per questo motivo è necessario scaricare Oracle JDK 11.0.13. Il numero della versione potrebbe variare con il tempo in base a quando si segue questa guida.

Da questa pagina non è necessario scaricare nulla, lo script verrà scaricato poi dal terminale del server.

Adesso andiamo alla pagina di download di Java e troviamo la versione corrispondente a quella che dobbiamo scaricare. Se non è presente non essendo l'ultima versione, possiamo trovarla nell'archivio delle versioni. Da questa pagina scarichiamo il pacchetto per Linux .tar.gz della versione desiderata.

Una volta cliccato sul link di download apparirà un pop-up in cui dovremmo accettare il contratto di licenza con Oracle mettendo una spunta sulla checkbox. A questo punto il download avrà inizio. Si tenga presente che potrebbe essere necessario accedere al proprio account Oracle prima di poter dare avvio al download.

Una volta scaricato il file sul computer locale, sarà necessario caricarlo sul server. Su Linux o Mac OS è sufficiente il terminale di sistema, su Windows è necessario usare il Sottosistema Linux per Windows. Per il trasferimento è possibile utilizzare il seguente comando, cambiando tutti i parametri necessari:

scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz [email protected]:~

Una volta completato il caricamento del file, sarà possibile tornare sul server e aggiungere il repository di terze parti per installare Java di Oracle.

sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

Verrà stampato il seguente testo:

gpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
gpg: /tmp/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg:               imported: 1

A questo punto aggiungi il repository all'elenco delle origini per i pacchetti:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-jdk11-installer.gpg] https://ppa.launchpadcontent.net/linuxuprising/java/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/oracle-jdk11-installer.list > /dev/null

Infine aggiorniamo l'elenco dei pacchetti per rendere il nuovo software disponibile per l'installazione:

sudo apt update

Il programma per l'installazione di Oracle JDK cercherò il pacchetto nella directory /var/cache/oracle-jdk11-installer-local, quindi creiamo questo percorso e spostiamo al suo interno l'archivio:

sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/

Infine, possiamo installare il pacchetto:

sudo apt install oracle-java11-installer-local

Il programma di installazione chiederà innanzitutto di accettare il contratto di licenza Oracle. Accettando il contratto, il programma di installazione estrarrà il pacchetto di Oracle JDK e lo installerà.

Vedremo ora come selezionare la versione di Java da utilizzare

Step 2 - Come Gestire le Versioni di Java

Su uno stesso server è possibile avere più installazioni di Java. Per impostare la versione predefinita da utilizzare è possibile utilizzare il comando update-alternatives:

sudo update-alternatives --config java

Ecco come appare l'output del comando se entrambe le versioni di Java illustrate nel tutorial sono state installate:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:

Adesso in console possiamo digitare il numero della versione di Java che desideriamo utilizzare come predefinita, oppure premiamo Invio per uscire e non modificare le impostazioni.

Possiamo eseguire la stessa operazione anche per altri comando di Java, come per il compilatore (javac):

sudo update-alternatives --config javac

Come vedete ci è bastato sostituire java con javac, ma potremmo eseguire lo stesso comando anche per javadoc o keytool solo per citarne alcuni.

Step 3 - Impostare la variabile d'ambiente JAVA_HOME

Molti programmi scritti in Java utilizzano la variabile d'ambiente JAVA_HOME per ottenere il percorso in cui è installato Java.

Prima di poter impostare questa variabile dobbiamo determinare dov'è installato Java. Per farlo possiamo utilizzare il comando update-alternatives:

sudo update-alternatives --config java

Questo comando ci mostrerà ogni installazione di Java presente nel sistema con il relativo percorso di installazione:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:

In questo caso vediamo che i percorsi di installazione sono i seguenti:

  1. OpenJDK 11 è al percorso /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  2. Oracle Java è al percorso /usr/lib/jvm/java-11-oracle/jre/bin/java

Una volta aver copiato il percorso dell'installazione di nostro interesse, apriamo il file al percorso /etc/enviroment con un editor di testo, in questo caso nano:

sudo nano /etc/enviroment

Alla fine del file aggiungiamo la riga con la nostra variabile d'ambiente, inserendo tra le virgolette dopo l'uguale il percorso dell'installazione di Java che vogliamo associare alla variabile:

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

Dopo aver salvato il file ed essere usciti dall'editor, per rendere effettivi i cambiamenti alla sessione attuale (per il nostro utente), ricarichiamo il file con:

source /etc/enviroment

Per essere sicuri che la variabile sia stata impostata, possiamo stamparla in console con:

echo $JAVA_HOME

Se tutto è andato a buon fine, dovremmo vedere il percorso che abbiamo impostato precedentemente nel file. Perché il cambiamento possa avere effetto anche per gli altri utenti, essi dovranno eseguire il comando indicato in precedenza oppure uscire e rientrare nel sistema.

Conclusione

In questo tutorial abbiamo visto come installare più versioni di Java e come gestirle. Adesso abbiamo un serve pronto ad eseguire tutti i software scritti in Java, come Tomcat o Jenkins.