Installare Java su CentOS 8: OpenJDK 8, OpenJDK 11 e Oracle JDK 8

Per chi è questa guida
Questa guida è pensata per amministratori di sistema, DevOps e sviluppatori che devono installare o gestire più versioni di Java su server CentOS 8. Definizione rapida: OpenJDK è l’implementazione open-source della piattaforma Java; Oracle JDK è la distribuzione Oracle con alcune differenze commerciali.
Sommario rapido dei comandi
- Cercare pacchetti:
dnf search jdk - Installare OpenJDK 11:
dnf install java-11-openjdk-devel.x86_64 - Installare OpenJDK 8:
dnf install java-1.8.0-openjdk-devel - Cambiare versione attiva:
alternatives --config java - Installare Oracle JDK locale:
dnf localinstall jdk-8u231-linux-x64.rpm
Requisiti
- Server con CentOS 8.
- Accesso root o sudo.
- Connessione Internet per i repository (a meno che non si usi un pacchetto RPM locale).
Installare OpenJDK 11
Cerca prima le versioni disponibili nel repository CentOS 8:
dnf search jdkDovresti vedere una lista di pacchetti correlati a OpenJDK, per esempio java-11-openjdk.x86_64 e java-1.8.0-openjdk.x86_64.
Per installare OpenJDK 11 (ambiente di sviluppo incluso) esegui:
dnf install java-11-openjdk-devel.x86_64Verifica l’installazione con:
java -versionOutput di esempio:
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)Note: la versione effettiva varierà nel tempo; i numeri nei sample sono di esempio.
Installare OpenJDK 8
Alcune applicazioni legacy richiedono Java 8. Installa OpenJDK 8 con:
dnf install java-1.8.0-openjdk-develControlla la versione attiva:
java -versionOutput di esempio:
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)Passare da una versione all’altra
Puoi avere più versioni installate contemporaneamente e scegliere quale versione usare come predefinita con il comando alternatives:
alternatives --config javaEsempio d’interazione:
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.5.10-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.232.b09-0.el8_0.x86_64/jre/bin/java)
Enter to keep the current selection[+], or type selection number: 1Seleziona il numero corrispondente alla versione desiderata e premi Invio. Ripeti per javac se hai bisogno che il compilatore punti alla stessa versione:
alternatives --config javacInstallare Oracle JDK 8 (pacchetto RPM locale)
- Accedi al sito Oracle e scarica il pacchetto RPM per Java 8: ad esempio
jdk-8u231-linux-x64.rpm. - Accetta il contratto di licenza e scarica il file sul server (usando scp o wget da una URL autorizzata).
- Installa il pacchetto localmente:
dnf localinstall jdk-8u231-linux-x64.rpmVerifica:
java -versionOutput di esempio:
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)Attenzione: Oracle JDK può avere requisiti di licenza e aggiornamenti diversi rispetto a OpenJDK.
Configurare JAVA_HOME e PATH (consigliato)
Per rendere persistente la variabile JAVA_HOME per tutti gli utenti, crea un file in /etc/profile.d:
cat <<'EOF' > /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
chmod +x /etc/profile.d/java.shAdatta il percorso di JAVA_HOME alla versione attiva sul tuo sistema (verifica in /usr/lib/jvm/). Dopo la modifica, effettua il logout/login o esegui source /etc/profile.d/java.sh.
Debug e problemi comuni
- java non trovato: verifica
alternatives --display javae che/usr/bin/javapunti correttamente. - Versione sbagliata per gli script: controlla
JAVA_HOMEnelle variabili d’ambiente. - Conflitti RPM: rimuovi vecchi pacchetti con
dnf remove nome-pacchettoprima di installare una versione differente. - SELinux: se l’app non parte, controlla gli eventi SELinux (
ausearch -m avc -ts recent) e usa audit2allow con attenzione.
Matrice di compatibilità rapida
| Versione Java | Uso tipico | Note di compatibilità |
|---|---|---|
| OpenJDK 11 | Applicazioni moderne, LTS | Raccomandata per nuovi progetti |
| OpenJDK 8 | Applicazioni legacy | Necessaria per software non aggiornato |
| Oracle JDK 8 | Ambienti che richiedono Oracle | Verificare licenza e supporto |
Quando scegliere OpenJDK o Oracle JDK
- Preferisci OpenJDK per pacchetti open-source, aggiornamenti dai repository e assenza di licenze commerciali.
- Scegli Oracle JDK solo se un’applicazione richiede espressamente Oracle o si dispone di accordi di supporto.
Procedure consigliate (mini SOP)
- Verifica i requisiti dell’applicazione (Java 8 vs Java 11).
- Installa la versione appropriata da repository ufficiali:
dnf install. - Controlla
java -versionewhich java. - Se servono più versioni, installale entrambe e usa
alternatives --config. - Imposta
JAVA_HOMEin/etc/profile.de documenta la configurazione. - Testa l’app in ambiente di staging prima di passare in produzione.
Checklist per ruoli
- Sviluppatore
- Verificare requisito minimo Java dell’app
- [ ] Testare build con
mvn -vogradle -vdopo il cambio
- Sysadmin/DevOps
- Installare pacchetti via DNF
- [ ] Configurare alternatives per
javaejavac - [ ] Aggiornare
JAVA_HOMEe distribuire l’aggiornamento
- Team Sicurezza
- Validare policy di licenza per Oracle JDK
- Verificare CVE per la versione installata
Esempi di comandi utili
- Elenca JVM installate:
ls -l /usr/lib/jvm/- Rimuovi OpenJDK 11 se necessario:
dnf remove java-11-openjdk-devel.x86_64- Forzare alternative per
java(usare con cautela):
alternatives --set java /usr/lib/jvm/java-11-openjdk-11.0.5.10-0.el8_0.x86_64/bin/javaDecisione veloce (diagramma)
flowchart TD
A[Hai bisogno di Java?] --> B{La tua app richiede Java 8?}
B -- Sì --> C[Installa OpenJDK 8]
B -- Sì e richiede Oracle --> D[Scarica e installa Oracle JDK 8]
B -- No --> E[Installa OpenJDK 11]
C --> F[Configura alternatives]
D --> F
E --> F
F --> G[Test in staging]
G --> H[Deploy]Brevi criteri di accettazione
java -versionrestituisce la versione desiderata./usr/bin/javapunta alla JVM scelta tramitealternatives.JAVA_HOMEè impostato e visibile ai processi applicativi.
Glossario (1 riga ciascuno)
- JDK: Java Development Kit, include compilatore e strumenti.
- JRE: Java Runtime Environment, esegue applicazioni Java.
- OpenJDK: implementazione open-source di Java.
- Oracle JDK: distribuzione Oracle con licenze commerciali.
- alternatives: sistema di gestione delle versioni di comandi condivisi in Linux.
Riepilogo
Questa guida copre l’installazione di OpenJDK 11, OpenJDK 8 e Oracle JDK 8 su CentOS 8, come verificare la versione corrente e come passare tra più installazioni usando alternatives. Segui la checklist per ruolo e testa sempre in staging prima di aggiornare sistemi di produzione.
Importante: verifica eventuali requisiti di licenza prima di distribuire Oracle JDK in ambienti di produzione.
Note: per aggiornamenti di sicurezza, preferisci repository ufficiali o canali supportati dal tuo fornitore.