Gentoo Logo

Guida a Java in Gentoo

Indice:

1.  Cos'è Java?

Panoramica

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.

2.  Prima di cominciare

Installazioni Esistenti

Per installazioni esistenti, non curandosi del fatto che si abbia installato precedentemente qualsiasi Java, assicurarsi di aver seguito la Guida all'aggiornamento di Java in Gentoo.

Nuove Installazioni

Le nuove installazioni non richiedono un'ulteriore preparazione.

3.  Installazione della Macchina Virtuale

Le scelte

Gentoo offre diverse possibilità per ambienti JRE e JDK. Tra le alternative troviamo:

Produttore JDK JRE
Il Kit Blackdown Java dev-java/blackdown-jdk dev-java/blackdown-jre
Il Kit Java di Sun dev-java/sun-jdk dev-java/sun-jre-bin
il Kit Java di IBM dev-java/ibm-jdk-bin dev-java/ibm-jre-bin
Il Kit di Sviluppo J2SE di BEA WebLogic dev-java/jrockit-jdk-bin

L'opzione predefinita per Java 1.4 è l'accoppiata JRE/JDK di Blackdown, in quanto è disponibile gratuitamente (free as a free beer) senza la necessità di nessuna registrazione.

Le JRE e JDE di Sun, IBM e BEA sono generalmente più veloci, ma per ottenerle è leggermente più faticoso, in quanto bisogna leggere ed accettare la loro licenza prima di scaricarle (IBM in più richiede anche una registrazione).

Installare JRE/JDK

Per installare la versione predefinita della JDK , eseguire emerge virtual/jdk. Oppure per installare la versione predefinita della JRE, eseguire emerge virtual/jre.

Recentemente, la Sun ha rilasciato la proprie JDK e JRE con una licenza più amichevole nei confronti delle distribuzioni Linux. Di conseguenza, i rilasci di Sun da Java 1.5 in avanti si possono scaricare liberamente, senza ulteriori fastidi.

Nota: Il pacchetto JDK include anche la JRE, in modo tale che se si installa direttamente la JDK non c'è la necessità di installare anche la JRE.

Installare macchine virtuali con restrizioni nello scaricamento

Come già detto, 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 /usr/portage/distfiles, e rieseguire emerge, a questo punto l'installazione di JDK/JRE comincerà.

4.  Configurare la propria macchina virtuale

Panoramica

Gentoo permette di avere più JDK e JRE installate contemporaneamente senza conflitti.

Usando lo strumento java-config è possibile impostare globalmente l'ambiente Java da utilizzare (se si hanno i privilegi di root). Gli utenti possono utilizzare java-config per configurare la propria impostazione personale.

Nota: È anche possibile utilizzare eselect per cambiare la vm di sistema e di utente. Vedere eselect java-vm help.

Configurare una macchina virtuale predefinita

Eseguendo il comando java-config --list-available-vms viene visualizzata la lista degli JRE e JDK disponibili sul sistema in uso. Questo è un esempio di output:

Codice 4.1: Lista delle VM disponibili

# java-config --list-available-vms
The following VMs are available for generation-2:
1)      Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2)      Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
3)      Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
4)      Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
5)      Kaffe 1.1.7 [kaffe]
*)      Sun JDK 1.5.0.08 [sun-jdk-1.5]

Il * indica che questa è la vm attualmente in uso ( vm di sistema o vm utente se configurata). Il nome tra parentesi quadre "[]" è l'identificativo di quella particolare VM, utilizzabile (in alternativa al numero) in java-config --set-system-vm. Questo è un esempio di come configurare la VM di sistema:

Codice 4.2: Scelta della VM di sistema

(Tramite identificativo (da preferire))
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
(Tramite numero)
# java-config --set-system-vm 6
Now using sun-jdk-1.5 as your generation-2 system JVM

Come utente normale si può usare java-config --set-user-vm.

Nota: Non c'è più bisogno di "derivare" (source) il profilo a seguito di aggiornamenti della VM utente/di sistema.

VM Preferita

Durante un emerge dei pacchetti JAVA, la VM può essere cambiata a seconda delle proprie necessità.

Data la grande varietà di VM disponibili, gli sviluppatori di Gentoo non hanno le risorse per verificare il funzionamento di ogni pacchetto su ognuna di esse. Quindi per accertarsi che ogni merge avvenga senza problemi, è stato definito un elenco di VM predefinite/supportate per architettura. Tale elenco si può trovare in /usr/share/java-config-2/config/jdk-defaults.conf. Quando viene installato un pacchetto Java, e viene rilevata l'installazione di una VM elencata in quel file, essa verrà automaticamente utilizzata, invece della vm di sistema.

Il cambio di VM durante le operazioni di merge può essere necessario quando, per esempio, è impostata una VM di sistema 1.4 e il pacchetti che si sta installando richiede una VM 1.5. Durante il processo di merge verrà usata la VM 1.5, lasciando intatta la vm di sistema.

Naturalmente, Gentoo consente di effettuare molte scelte, per cui si potranno sovrascrivere queste impostazioni predefinite in /etc/java-config-2/build/jdk.conf ed avere un controllo completo sulla VM usata. Alcuni esempi:

Codice 4.3: Esempio di /etc/java-config-2/build/jdk.conf

(Per utilizzare sempre sun-jdk, es. sun-jdk-1.4 per 1.4, sun-jdk-1.5 per 1.5, ecc.)
*=sun-jdk

Codice 4.4: Esempio di /etc/java-config-2/build/jdk.conf

(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

Codice 4.5: Esempio /etc/java-config-2/build/jdk.conf

# Per 1.3 si preferisce sun-jdk 1.4 ma quando non è disponibile, usare ibm-jdk-bin,
# Per 1.4, usare blackdown-jdk, e per 1.5, usare sun-jdk
1.3=sun-jdk-1.4 ibm-jdk-bin
1.4=blackdown-jdk
1.5=sun-jdk

Avvertenza: Non modificare questo file. Se queste opzioni vengono modificare per l'utilizzo di una VM non supportata, le cose potrebbero non funzionare più correttamente. I bug inseriti che riportano VM non supportate saranno meno prioritari di bug presenti con VM supportate.

5.  Compilatori

Il compilatore standard di Java è javac, disponibile con ogni JDK. Oltre a poter configurare la VM usata in fase di compilazione, si può scegliere quale compilatore utilizzare. Essenzialmente, si può definire una lista preferita di compilatori da utilizzare, tale scelta va fatta in /etc/java-config-2/build/compilers.conf.

Codice 5.1: /etc/java-config-2/build/compilers.conf

# Se l'ebuild lo supporta
# esso verificherà la variabile COMPILERS dall'inizio alla fine e
# userà il primo compilatore installato

COMPILERS="ecj-3.1 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
javac javac N/A Questo è il compilatore predefinito, disponibile in ogni JDK.
jikes jikes dev-java/jikes Jikes originalmente è stato sviluppato da IBM, è generalmente risulta essere più rapido di javac. Tuttavia risulta essere più pedante e in alcuni casi avrà dei problemi dove invece javac non ne ha; inoltre non supporta ancora la sintassi di Java 1.5.
Compilatore di Eclipse per Java ecj-3.1 =dev-java/eclipse-ecj-3.1* ECJ è il compilatore usato da Eclipse. È molto completo, veloce e supporta la sintassi di Java 1.5.

6.  Impostare una CLASSPATH predefinita

Avvertenza: Le opzioni spiegate in questa sezione dovrebbero essere considerate deprecate e molto probabilmente verranno rimosse in futuro. Si sconsiglia vivamente l'uso di tali opzioni, perché i propri progetti o applicazioni Java dovrebbero idealmente utilizzare i propri classpath. Se si sceglie di specificare un CLASSPATH predefinita, alcune applicazioni potrebbero comportarsi in modo inaspettato, in quanto trovano nel classpath delle classi non previste.

java-config può essere usato per impostare globalmente una CLASSPATH predefinita, oppure una CLASSPATH predefinita specifica per utente.

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:

Codice 6.1: Elencare le classi

# 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 ([]) sono gli identificatori da passare a java-config --set-system-classpath. Questo è un esempio:

Codice 6.2: Impostare i classpath

# java-config --set-system-classpath log4j,xerces-2

Nota: La directory corrente (.) non farà parte del classpath di sistema, in quanto è inserita nel profilo di login del sistema.

A questo punto bisogna aggiornare le variabili d'ambiente effettuando un nuovo login, oppure derivare /etc/profile.

Per l'utente normale, java-config --set-user-classpath creerà ~/.gentoo/java-env-classpath, il quale dovrà essere ereditato dal proprio profilo di shell.

Codice 6.3: Ereditare lo specifico classpath per utente

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.

Codice 6.4: Impostare il classpath

# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"

7.  Plugin Java per Browser

Installare un plugin

È possibile installare un plugin Java per il proprio Browser, effettuando l'emerge della VM Java con la flag USE nsplugin abilitata.

Nota: nsplugin non è disponibile per tutte le architetture. Per verificare la disponibilità di tale plugin sulla propria architettura, eseguire emerge -pv <java-vm> prima di installare la VM.

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:

Codice 7.1: Vedere i plugin disponibili

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.5
   [2]   blackdown-jre-1.4.2

In questo esempio, sun-jre-bin è selezionato come plugin per il browser.

Codice 7.2: Selezionare un plugin

# eselect java-nsplugin set sun-jre-bin-1.5

Verificare il plugin corretto:

Codice 7.3: Verifica selezione del plugin corretto

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.5  current
   [2]   blackdown-jre-1.4.2

Java.com inoltre fornisce un collegamento per verificare i plugin installati. In aggiunta, se viene utilizzato un browser basato su Mozilla, è possibile verificare il proprio plugin Java digitando about:plugins nella barra degli indirizzi del browser.

Plugin su sistemi multilib

Se si sta utilizzando un sistema con librerie sia a 64-bit che 32-bit (per esempio, su AMD64), è possibile utilizzare solamente i plugin Java a 32-bit.

Per usare i plugin a 32-bit , bisogna installare emul-linux-x86-java con la flag USE nsplugin attiva.

Codice 7.4: Installare un plugin a 32-bit

# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use
# emerge emul-linux-x86-java

Poi verificare quali plugin sono disponibili:

Codice 7.5: Vedere i plugin disponibili

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.4.2
  [2]   emul-linux-x86-java-1.5

Sebbene si debba selezionare un browser a 32-bit (come mozilla-firefox-bin) per usare i plugin a 32-bit, la versione a 64-bit di konqueror usa direttamente la VM Java, in questo modo è possibile utilizzare direttamente con tale browser la versione a 64-bit di blackdown, senza la necessità di ulteriori configurazioni.

A questo punto selezionare il plugin a 32-bit per il proprio browser:

Codice 7.6: Selezionare il plugins

# eselect java-nsplugin set 32bit emul-linux-x86-java-1.5

Verificare di aver selezionato il plugin corretto:

Codice 7.7: Verificare il plugin corretto

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.4.2
  [2]   emul-linux-x86-java-1.5  current

8.  Flag USE da utilizzare con Java

Impostare le flag USE

Per maggiori informazioni riguardo l'utilizzo delle flag USE, fare riferimento al capitolo Flag USE del Manuale Gentoo.

Le flag

  • La flag java aggiunge il supporto a Java in vari programmi
  • La flag nsplugin aggiunge il supporto per i browser come Mozilla (incluso Firefox). Questa flag è necessaria per visualizzare le applet java nel proprio browser.
  • La flag source installa un archivio in formato zip del codice sorgente di un pacchetto. Questa modalità è usata tradizionalmente per gli IDE per 'fissare" il sorgente alle librerie che si stanno usando.
  • La flag jce aggiunge il supporto al "Java Cryptography Engine" (Motore di Crittografia Java)
  • Per i pacchetti Java, la flag doc compilerà la documentazione delle API usando javadoc.

9.  Risorse aggiuntive

Risorse off-line

  • java-config man page
  • java-config --help

Risorse Online



Stampa

Aggiornato il 1 gennaio 2008

Oggetto: Questa guida è un'introduzione a Java e spiega come usare Java con Gentoo Linux.

Joshua Nichols
Autore

Karl Trygve Kalleberg
Autore

Joshua Saddler
Redazione

Cristian Iannuzzi
Traduzione

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.