Ubuntu include già una sua implementazione della java virtual machine (gcj) ma per alcuni scopi questa non è abbastanza o non è soddisfaciente (per esempio Eclipse 3.2 si inchioda). Se non avete mai avuto problemi con applicativi Java potreste smettere di leggere quanto segue ma se per qualche ragione lavorate o smanettate con Java o usate applicativi Java piuttosto “esigenti” (Eclipse, Tomcat, ecc.) sarebbe meglio passare alla JVM della Sun (o anche IBM).
Prima di tutto bisogna fare una distinzione di base tra il JRE e il JDK:
- Entrambi contengono la JVM (Java Virtual Machine)
- il JRE (Java Runtime Environment) contiene diverse librerie e consente di far girare tutti gli applicativi Java
- il JDK (Java Development Kit) comprende il JRE più tutta una serie di strumenti utili per lo sviluppo con Java
La via più veloce consiste nello scaricare il JDK o JRE tramite Synaptic. Al momento in cui scrivo sono disponibili la versione 5 (Java SE 1.5) e 6 (Java SE 1.6). Se per qualche ragione si vuole installare la versione 4 (Java SE 1.4) non rimane che fare il download dal sito della Sun. Programmatori o smanettoni potrebbero anche volere l’ultimo build disponibile per una data versione e anche in questo caso non rimane che affidarsi al sito della Sun in quanto la versione nel repository non è quasi mai aggiornata all’ultima disponibile. Potete scaricare l’ultima versione (1.6) da qui, oppure quelle precedenti (1.5, 1.4, 1.3) da qui.
Lavorando con più versioni Java, preferisco installare da solo i vari JDK scaricati da Sun senza dipendere in alcun modo dal repository ma se non avete particolari esigenze non vale la pena complicarsi la vita.
Nell’ipotesi in cui vogliate scaricare, supponiamo, il JDK 6 (1.6), dovete selezionare il file Linux self-extracting file (procedura praticamente identica per il JRE e per le versioni vecchie). Spostate il file scaricato nella directory in cui volete installare Java (per esempio /opt), date i permessi di esecuzione al file:
chmod + x jdk-6u2-linux-i586.bin
potreste anche aver bisogno dei privilegi del superuser, dipende in quale directory avete spostato il file. In quest’ultimo caso ovviamente:
sudo chmod + x jdk-6u2-linux-i586.bin
poi eseguite il file:
./jdk-6u2-linux-i586.bin
Anche in questo caso probabilmente avrete bisogno di usare sudo.
La directory che otterrete dopo l’installazione jdk1.6.0_02 sarà la vostra JAVA_HOME: una variabile di ambiente che vedremo come settare tra poco.
Il problema in cui sono incappato subito dopo l’installazione è che Ubuntu (almeno le versioni 5.10, 6.06 e 6.10) dimostra una certa riluttanza a far girare gli applicativi Java con la JVM di Sun appena installata preferendovi la sua di default (che come detto può causare alcuni problemucci). Il problema consiste quindi nel far capire a Ubuntu quale JVM utilizzare. Disinstallare gcj non sembra risolvere il problema per cui ho optato per una soluzione diversa.
Creare un file in
/etc/X11/Xsession.d/
chiamato
55load-my-env-vars
Editare il file e scrivere il seguante contenuto
. /opt/env_vars
creare un altro file nella directory
/opt
chiamato
env_vars
aprite il file appena creato e scriveteci dentro le seguenti righe
# Sourced by:
# /etc/bash.bashrc (for interactive non-login shells)
# /etc/X11/Xsession.d/55load-my-env-vars (for Xsessions)
PATH=/opt/java/bin:$PATH
export JAVA_HOME=/opt/java
Ovviamente il path deve puntare alla directory in cui avete intallato la JMV (nel mio caso appunto /opt/java). Aggiungete la seguente riga di testo al file .bashrc nella vostra home directory:
. /opt/env_vars
A questo punto al prossimo reboot il settaggio della java virtual machine dovrebbe essere corretto. Concludo con un paio di note: questa procedura è utile nel caso si avvii il sistema Linux direttamente in modalità grafica (penso sia la norma ormai). Se avviate il siste non in modalità, allora potrebbe essere sufficiente semplicemente definire il PATH ed esportare la JAVA_HOME editando solo il file .bashrc nella vostra home directory. Potete sempre verificare la versione della JVM installata con un
java -version
da terminale. Per controllare quale versione della JVM i vostri programmi Java utilizzano, dovrebbe essere sufficiente un
ps -ef | grep nome-programma
da terminale.



Credo che il problema della JVM di default sia descritto in questo documento della Community Ubuntu Documentation
https://help.ubuntu.com/community/EclipseIDE
Se lo sapevi già, scusa la ripetizione.
Si mORA, l’avevo visto ma hai fatto bene a riportare il link.
Editare il file /etc/eclipse/java_home vale solo per Eclipse ovviamente mentre le strategia proposta in questo post permette di settare la JVM a livello globale per tutti gli applicativi che la richiedono.
Anche
sudo update-alternatives –config java
setta la JVM a livello globale ma preferisco il modo esposto nel post perche’ non dipende dalle versioni della JVM disponibili nel repository e mi permette di cambiare la JVM utilizzata editando un file e riavviando l’ambiente grafico.
Facendo un uso professionale di Java, questa rimane la mia soluzione preferita ma penso che, di per se’, nessuna soluzione sia meglio dell’altra, dipende dalle esigenze di chi usa il sistema.
Ciao a tutti, ho il problema di installare il mobility pack per java
su piattaforma linux ubuntu, e lanciata l’installazione non mi trova la jvm. Ho provato a seguire questa procedura ma ho problemi nell’editare il file creato.
Come posso fare?
come faccio a creare uno script ke mi faccia partire tomcat all’avvio della mia macchina?
So che il post è di 2 anni fa, ma ci provo,
ho installato il pacchetto sun-java6-jre dal gestore pacchetti.
Ma non è presente il javac per compilare i miei file…
Un aiutino ???