Introduzione

Java è uno dei linguaggi di programmazione più popolari utilizzati per creare diversi tipi di applicazioni e sistemi.

Esistono due diverse implementazioni di Java, OpenJDK e Oracle Java con quasi nessuna differenza tra loro, tranne che Oracle Java ha alcune funzionalità commerciali aggiuntive. La licenza Java Oracle consente solo l'uso non commerciale del software, come l'uso personale e l'uso di sviluppo. OpenJDK è un'implementazione open source della piattaforma Java.

I repository CentOS 7 predefiniti includono le ultime due principali versioni Java LTS, Java 8 e Java 11.

In questo tutorial, spiegheremo come installare una o più versioni di Java (OpenJDK) su CentOS 7 e come impostare Java predefinito tramite alternative.

Installare OpenJDK 11

La raccomandazione generale è di installare l'ultima versione di Java LTS (JDK 11). Alcune applicazioni basate su Java potrebbero richiedere una versione specifica di Java, pertanto potrebbe essere necessario consultare la documentazione dell'applicazione.

Per installare OpenJDK 11 su CentOS 7, eseguire il comando seguente come root o utente con privilegi sudo :

sudo yum install java-11-openjdk-devel

Una volta completata l'installazione, puoi verificarla controllando la versione Java:

java -version

L'output dovrebbe essere simile al seguente:

openjdk version "11.0.4" 2019-07-16 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.4+11-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.4+11-LTS, mixed mode, sharing)

Java è stato installato correttamente sul sistema CentOS 7.

CentOS 7 supporta anche una versione headless di OpenJDK che fornisce un runtime Java minimo necessario per eseguire applicazioni senza un'interfaccia utente grafica (nessun supporto per tastiera, mouse e sistemi di visualizzazione). Questa versione è più adatta per le applicazioni server poiché ha meno dipendenze e utilizza meno risorse di sistema.

Per installare la versione headless di OpenJDK 11:

sudo yum install java-11-openjdk-headless

Se hai già installato java-11-openjdk-devel, il pacchetto headless  verrà installato come dipendenza.

Installare OpenJDK 8

Java 8, la versione precedente di Java LTS è ancora supportata e ampiamente utilizzata. Se l'applicazione richiede Java 8, è possibile installarla digitando il comando seguente:

sudo yum install java-1.8.0-openjdk-devel

Verifica l'installazione controllando la versione Java:

java -version

L'output dovrebbe assomigliare a questo:

openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

Per installare la versione headless di OpenJDK 8:

sudo yum install java-1.8.0-openjdk-headless

Impostare la versione Java predefinita

Se sul sistema CentOS sono state installate più versioni Java, è possibile utilizzare il sistema alternativo per impostare quale versione Java verrà utilizzata durante la digitazione java nel terminale.

Per verificare quale versione di Java è impostata come predefinita, digitare:

java -version

Se si desidera modificare la versione predefinita, utilizzare il comando alternatives:

sudo alternatives --config java

L'output sarà simile al seguente:

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.4.11-0.el8_0.x86_64/bin/java)
*+ 2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el8_0.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 

Sullo schermo verrà stampato un elenco di tutte le versioni di Java installate. Immettere il numero della versione che si desidera utilizzare come predefinita e premere Invio dalla tastiera.

Potresti anche voler cambiare la versione di javac predefinita :

sudo alternatives --config java

javac è un'utilità di comando per la compilazione di programmi Java.

Impostare la variabile di ambiente JAVA_HOME

La variabile di ambiente JAVA_HOME viene utilizzata da alcune applicazioni Java per determinare il percorso di installazione di Java e specificare quale versione Java deve essere utilizzata per eseguire l'applicazione.

Per impostare la variabile JAVA_HOME in base all'utente, aggiungerla al file ~/.bashrc oppure a qualsiasi altro file di configurazione che viene caricato quando l'utente accede. Per l'impostazione a livello di sistema, utilizzare uno script all'interno della directory /etc/profile.d.

Supponiamo di voler impostare JAVA_HOME su OpenJDK 8 nel file profile.d.

Aprire il file profile.d:

vi /etc/profile.d/java.sh

Aggiungere la seguente riga di codice

JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"

Per rendere effettive le modifiche sulla shell corrente, è possibile disconnettersi e accedere nuovamente oppure utilizzare il comando source:

source /etc/profile.d/java.sh

Verificare che la variabile di ambiente JAVA_HOME sia stata impostata correttamente:

echo $JAVA_HOME

L'output dovrebbe mostrare il percorso dell'installazione Java:

/usr/lib/jvm/java-1.8.0-openjdk

È inoltre possibile impostare JAVA_HOME nella configurazione dell'applicazione, nel file di unità di sistema o nella riga di comando all'avvio del programma.

Ad esempio, per eseguire Maven usando Java 8, digitare:

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk mvn --version
...
Java version: 1.8.0_222, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-0.el8_0.x86_64/jre
...

Conclusione

CentOS 7 supporta due versioni principali di Java, Java 8 e Java 11, che possono essere installate utilizzando il gestore pacchetti yum.