Java è un linguaggio di programmazione sviluppato dagli ingegneri della Sun Microsystem. Questo linguaggio è orientato agli oggetti e progettato per girare su diverse architetture senza la necessità di essere ricompilato. Sebbene Java possa essere compilato come un programma nativo, gran parte della sua popolarità è dovuta sicuramente alla sua portabilità oltre che alla presenza di alcune caratteristiche particolari come il garbage collector. Per rendere possibile l'indipendenza dall'architettura, il compilatore Java compila il codice java in un'interpretazione intermedia chiamata "java bytecode" che viene eseguita in una JRE (Java Runtime Environment - ndT "Ambiente di Esecuzione Java") e non direttamente nel sistema operativo.
Per eseguire il bytecode Java è necessario avere installato un JRE (Java Runtime Environment) che fornisce le librerie di base, una Java Virtual Machine dipendente dall'architettura, i plug-in per i browser ed altre funzionalità. Per avere un ambiente di programmazione Java bisogna installare un JDK (Java Development Kit) che comprende un compilatore bytecode ed un debugger.
Gentoo offre diverse possibilità per ambienti JRE e JDK. Tra le alternative troviamo:
| Produttore | JDK | JRE |
|---|---|---|
Per installare la versione predefinita della JDK , eseguire
Alcune JDK e JRE, compreso il pacchetto Sun, richiedono di accettare una licenza
per l'utente finale, o EULA (NdT, in inglese, End User License Agreement). Se
questa licenza (ad esempio dlj-1.1) non è elencata in ACCEPT_LICENSE in
per evitare le limitazioni di una licenza restrittiva, si consideri di
installare
Alcune delle JDK e JRE richiedono diversi passaggi prima di essere installate. Basta effettuare l'emerge di questi pacchetti come al solito, così facendo gli ebuild forniranno le istruzioni necessarie per procedere con l'installazione.
Bisogna scaricare il (o i) file indicato(i) all'interno di
Gentoo permette di avere più JDK e JRE installate contemporaneamente senza conflitti.
Usando lo strumento
Eseguendo il comando
# java-config --list-available-vms The following VMs are available for generation-2: 1) IcedTea-bin 1.10.4 [icedtea-bin] 2) Sun JDK 1.5.0.20 [sun-jdk-1.5](Build Only) *) Sun JDK 1.6.0.16 [sun-jdk-1.6]
Il
(Tramite identificativo (da preferire)) # java-config --set-system-vm sun-jdk-1.6 Now using sun-jdk-1.6 as your generation-2 system JVM(Tramite numero) # java-config --set-system-vm 3 Now using sun-jdk-1.6 as your generation-2 system JVM
Come utente normale si può usare
Alcune macchine virtuali sono marcate come "build-only" poichè stanno per
entrare in una fase di "fine vita" in cui non verranno più aggiornate e
mantenute, e/o perchè contengono delle vulnerabilità di sicurezza. Queste
macchine virtuali non verranno usate automaticamente da Gentoo per l'esecuzione
delle applicazioni attraverso gli strumenti di lancio di Gentoo ma rimaranno
comunque disponibili per l'uso nell'ambiente di compilazione di Gentoo in
quanto alcuni pacchetti potrebbero richiedere il loro uso specifico.
L'impostazione di queste macchine virtuali sia come VM di sistema sia come VM
utente è fortemente scoraggiata, in quanto queste VM successivamente verranno
usate per avviare gli eseguibili
Durante un emerge dei pacchetti JAVA, la VM usata per la compilazione può essere a volte può essere differente da quella impostata come VM di sistema.
Questa modifica di VM in fase di compilazione è necessaria quando, per esempio, la propria vm di sistema è una VM 1.6 e il pacchetto che si sta compilando richiede una VM 1.5. Durante la compilazione verrà selezionata per l'uso una VM 1.5, lasciando intatta la selezione della propria vm di sistema.
Per definire quale VM dev'essere selezionata quando è necessario un cambio, è
stato creato un elenco di
Si possono personalizzare queste impostazioni di default (e ovviamente
selezionare la VM di sistema) in
(Per utilizzare sempre sun-jdk, es. sun-jdk-1.4 per 1.4, sun-jdk-1.5 per 1.5, ecc.) *=sun-jdk
(Per utilizzare sempre sun-jdk-1.5 dove possibile, tranne quando la 1.4 oppure la 1.3 VM sono richieste esplicitamente) *=sun-jdk-1.5
# Per 1.3 si preferisce sun-jdk 1.4 ma quando non è disponibile, usare ibm-jdk-bin, # Per 1.5, usare sun-jdk 1.3=sun-jdk-1.4 ibm-jdk-bin 1.5=sun-jdk
Il compilatore standard di Java è
# Se l'ebuild lo supporta # esso verificherà la variabile COMPILERS dall'inizio alla fine e # userà il primo compilatore installato COMPILERS="ecj-X.Y jikes javac"
Alcuni compilatori non supportano tutti i possibili argomenti -target e -source. Di conseguenza, ogni compilatore nella lista viene controllato per vedere se può utilizzare il -source/-target desiderato. javac funziona in ogni caso, per cui verrà utilizzato nel caso in cui non venga trovato nessun'altro compilatore adatto.
Maggiori informazioni sui compilatori sono riportate di seguito:
| Nome | Comando | Pacchetto | Descrizione |
|---|---|---|---|
Come prima cosa, verificare la lista delle librerie Java installate nel proprio sistema, per poterle eventualmente inserirle nel proprio CLASSPATH. Questo è un esempio di output:
# java-config --list-available-packages [xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env) [junit] Simple framework to write repeatable tests (/usr/share/junit/package.env) [bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env) [bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env) [log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env) ...
Anche qui, i nomi tra parentesi (
# java-config --set-system-classpath log4j,xerces-2
A questo punto bisogna aggiornare le variabili d'ambiente effettuando un nuovo
login, oppure derivare
Per l'utente normale,
if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
source ${HOME}/.gentoo/java-env-classpath
fi
Se si vuole veramente una Classpath predefinita per l'utente o di sistema, si può aggiungere nel proprio profilo qualcosa come mostrato nell'esempio seguente. Questa procedura non è comunque consigliata.
# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"
È possibile installare un plugin Java per il proprio Browser, effettuando
l'emerge della VM Java con la flag USE
Portage consente di installare più versioni dei plugin Java, sebbene il proprio browser possa utilizzarne solo uno. Si può controllare la lista dei plugin disponibili eseguendo:
# eselect java-nsplugin list [1] sun-jre-bin-1.6 [2] icedtea-bin
In questo esempio,
# eselect java-nsplugin set sun-jre-bin-1.6
Verificare il plugin corretto:
# eselect java-nsplugin list [1] sun-jre-bin-1.6 current [2] icedtea-bin
Java.com inoltre fornisce un collegamento per
Se si sta utilizzando un sistema con librerie sia a 64-bit che 32-bit (per esempio, su AMD64), è possibile utilizzare sia i plugin Java a 64-bit che a 32-bit. A meno che non si abbia un'esigenza precisa di eseguire applicazioni Java a 32-bit, è consigliabile usare i plugin nativi a 64-bit sui browser a 64-bit.
Sono disponibili diversi plugin per i browser nativi a 64-bit. L'accoppiata
predefinita JDE/JRE,
Per usare un plugin a 32-bit su un browser a 32-bit, bisogna installare
# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use # emerge emul-linux-x86-java
Poi verificare quali plugin sono disponibili:
# eselect java-nsplugin list Available 32-bit Java browser plugins [1] emul-linux-x86-java-1.5 [2] emul-linux-x86-java-1.6 Available 64-bit Java browser plugins [1] icedtea-bin [2] sun-jre-bin-1.6
A questo punto selezionare il plugin a 32-bit per il proprio browser:
(Selezionare i plugin per i broswer a 32-bit e 64-bit) # eselect java-nsplugin set 32bit emul-linux-x86-java-1.6 # eselect java-nsplugin set 64bit sun-jre-bin-1.6
Verificare di aver selezionato il plugin corretto:
# eselect java-nsplugin list Available 32-bit Java browser plugins [1] emul-linux-x86-java-1.5 [2] emul-linux-x86-java-1.6 current Available 64-bit Java browser plugins [1] icedtea-bin [2] sun-jre-bin-1.6 current
Per maggiori informazioni riguardo l'utilizzo delle flag USE, fare riferimento
al capitolo