Guide Java avec Gentoo
1.
Qu'est-ce que Java ?
Vue d'ensemble
Java est un langage de programmation qui a été développé par les ingénieurs de
Sun Microsystems. C'est un langage orienté objet conçu pour pouvoir
s'exécuter sur différentes plates-formes sans avoir besoin de recompiler le code
sur chacune d'elles. Même si Java peut être compilé comme un programme natif,
la grande popularité de Java vient probablement du fait qu'il permet de
produire des programmes portables. De plus, il dispose de nombreuses
fonctionnalités intéressantes comme le « garbage collector ». Pour
rendre possible l'indépendance de la plate-forme, le compilateur Java
compile le code Java dans une représentation intermédiaire appelée
« Java bytecode » qui s'exécute dans un JRE
(« Java Runtime Environment », Environnement d'exécution Java)
et non directement sur le système d'exploitation.
Afin d'exécuter le code Java, il faut donc disposer d'un JRE. Le JRE met à
disposition du programme les bibliothèques principales, une machine virtuelle
Java (ou JVM, pour « Java Virtual machine ») dépendante de la
plate-forme, des extensions pour les navigateurs (Mozilla par exemple), etc. Un
JDK (« Java Development Kit », ou kit de développement pour Java)
ajoute à cela des outils de programmation comme par exemple un compilateur et
un débogueur.
2.
Avant de commencer
Installations existantes
Pour les installations existantes, quelque soit la façon dont vous avez
installé Java auparavant, assurez-vous d'avoir suivi le guide de mise à jour de Java.
Nouvelles installations
Les nouvelles installations ne devraient nécessiter aucune autre préparation.
3.
Installation d'une machine virtuelle
Les choix
Gentoo propose de nombreux environnements JRE et JDK. Actuellement, voici les
choix que nous avons :
| Vendeur |
JDK |
JRE |
| Le kit Java de Blackdown |
dev-java/blackdown-jdk |
dev-java/blackdown-jre |
| Le kit Java de Sun |
dev-java/sun-jdk |
dev-java/sun-jre-bin |
| Le kit Java d'IBM |
dev-java/ibm-jdk-bin |
dev-java/ibm-jre-bin |
| Le kit de développement J2SE de BEA WebLogic |
dev-java/jrockit-jdk-bin |
Par défaut, c'est le couple JRE/JDK de Blackdown qui sera installé, dans la
mesure où il est librement disponible, sans avoir besoin d'enregistrement
auprès du fournisseur.
En général, les kits JRE/JDK de Sun et d'IBM sont plus rapides, mais ils sont
plus compliqués à installer puisque, pour chacun d'entre eux, on vous demandera
de lire et d'accepter leur licence avant de les télécharger. (IBM vous
demandera par ailleurs de remplir un formulaire d'enregistrement.)
Installation d'un JRE/JDK
Pour installer le JDK par défaut de votre profil, vous pouvez exécuter la
commande emerge virtual/jdk. Ou encore, pour le JRE par défaut de votre
profil, vous pouvez faire emerge virtual/jre.
Il y a peu, Sun a rendu la licence de ses JDK et JRE plus faciles à
l'utilisation sous Linux. En conséquence, Sun a rendu ses versions de Java 1.5
et antérieures plus facilement téléchargeables, sans tracas supplémentaire.
Note :
Un JDK inclut également un JRE, donc si vous avez installé un JDK vous n'êtes
pas obligé d'installer un JRE en plus.
|
Installation des machines virtuelles téléchargées manuellement
Comme nous l'avons déjà mentionné, quelques machines JDK et JRE vous demandent
de passer par quelques étapes avant de pouvoir être téléchargées. Compilez
simplement les paquets avec emerge comme vous le faites habituellement.
Les ebuilds vous indiqueront alors où aller et ce qui est à télécharger.
Vous devez télécharger et placer les fichiers indiqués dans
/usr/portage/distfiles. Ceci fait, vous pouvez relancer
la commande emerge et JRE/JDK commencera alors à s'installer.
4.
Configuration de la machine virtuelle
Vue d'ensemble
Gentoo donne la possibilité d'avoir plusieurs JDK et JRE installés
sans provoquer de conflit.
En utilisant l'outil java-config, vous pouvez déterminer la
configuration par défaut de tout le système (à condition d'avoir un accès aux
droits de super-utilisateur sur le système). Les utilisateurs peuvent aussi se
servir de java-config pour définir leur propre configuration par
défaut.
Note :
Vous pouvez aussi utiliser eselect pour changer le système et
l'utilisateur de la machine virtuelle. Pour cela, regardez avec la commande
eselect java-vm help.
|
Paramétrage d'une machine virtuelle par défaut
En lançant la commande java-config --list-available-vms (N.D.T. :
VM = Machine Virtuelle), vous avez la liste de tous les JRE et JDK
installés sur votre système. Voici un exemple de retour de la commande :
Exemple de code 4.1 : Liste des machines virtuelles disponibles |
# java-config --list-available-vms
Les machines virtuelles suivantes sont disponibles pour 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]
|
L'étoile * indique qu'il s'agit de la machine virtuelle en cours
d'utilisation (system-vm ou user-vm quand c'est indiqué). Le nom entre crochets
[] correspond au « label » ou à l'identifiant d'une
machine virtuelle spécifique. Vous devez utiliser le contenu de ces crochets ou
le numéro de java-config --set-system-vm. Voici un exemple de
configuration d'une machine virtuelle :
Exemple de code 4.2 : Réglage de la machine virtuelle du système |
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
# java-config --set-system-vm 6
Now using sun-jdk-1.5 as your generation-2 system JVM
|
En tant que simple utilisateur, vous pouvez exécuter la commande
java-config --set-user-vm.
Note :
Vous n'êtes plus obligé de faire un source du profil pour les mises à
jour des machines virtuelles faites par l'utilisateur/le système.
|
Machines virtuelles préférées
Pendant l'installation des paquets Java, la machine virtuelle peut être et sera
commutée selon les besoins.
En raison de la grande variété de machines virtuelles disponibles, nous n'avons
pas les ressources nécessaires pour tester et vérifier la façon dont chaque
paquet fonctionne pour chacune d'elles. Pour vous assurer que chaque paquet
s'installe normalement, nous avons établi une liste de machines virtuelles
par défaut/supportées par architecture. Vous pouvez les trouver dans le
fichier /usr/share/java-config-2/config/jdk-defaults.conf. Quand
vous compilez un paquet Java et qu'il détecte que l'une des machines virtuelles
présentes dans ce fichier est installée, il utilisera automatiquement cette
machine virtuelle, à la place de system-vm.
Le changement de machine virtuelle lors de l'installation est ainsi nécessaire
quand, par exemple, votre system-vm est réglé sur une machine virtuelle 1.4 et
que le paquet que vous êtes en train d'installer requiert la version 1.5.
Pendant l'installation cela utilisera la machine virtuelle 1.5 préférée,
laissant votre choix de system-vm intact.
Bien sûr, sur Gentoo tout est une question de choix, donc vous pouvez
outrepasser ces valeurs par défaut dans le fichier
/etc/java-config-2/build/jdk.conf afin d'avoir un contrôle total
sur les machines virtuelles qui seront utilisées. Voici quelques exemples :
Exemple de code 4.3 : Exemple de /etc/java-config-2/build/jdk.conf |
*=sun-jdk
|
Exemple de code 4.4 : Exemple de /etc/java-config-2/build/jdk.conf |
*=sun-jdk-1.5
|
Exemple de code 4.5 : Exemple de /etc/java-config-2/build/jdk.conf |
1.3=sun-jdk-1.4 ibm-jdk-bin
1.4=blackdown-jdk
1.5=sun-jdk
|
Attention :
Vous n'êtes pas obligé de modifier ce fichier. Si vous changez ces options pour
utiliser une machine virtuelle qui n'est pas supportée, les choses sont
susceptibles de mal se passer. Les bogues reportés avec une machine virtuelle
non supportée ne seront pas prioritaires tant qu'il y a des rapports de bogues
concernant des machines virtuelles supportées.
|
5.
Compilateurs
Le compilateur Java standard habituellement utilisé pour compiler est javac,
qui est fourni avec tous les JDK. En plus de configurer la machine virtuelle
utilisée au moment de la compilation, il est également possible de configurer
le compilateur que vous désirez employer. Il est essentiel que vous définissiez
une liste de vos préférences pour le compilateur à utiliser dans le fichier
/etc/java-config-2/build/compilers.conf.
Exemple de code 5.1 : /etc/java-config-2/build/compilers.conf |
# If the ebuild supports it
# it will check the COMPILERS var front to back and
# use the first compiler that is installed
COMPILERS="ecj-3.1 jikes javac"
|
Certains compilateurs ne supportent pas tous les arguments -cible et -source
possibles. Par conséquent, chaque compilateur présent dans la liste est vérifié
pour s'assurer qu'il supporte les arguments -source/-cible désirés. javac
fonctionnera dans tous les cas, ainsi si aucun autre compilateur approprié
n'est trouvé, il sera utilisé à la place.
Voici davantage de détails sur chaque compilateur :
| Nom |
Exécutable |
Paquet |
Description |
| javac |
javac |
N/A |
C'est le compilateur par défaut qui est utilisé et qui est fourni avec
chaque JDK.
|
| jikes |
jikes |
dev-java/jikes |
Jikes était à l'origine développé par IBM. Pour l'anecdote, il est
généralement plus rapide que javac. Notez cependant qu'il est plus pédant
et qu'il rencontre des échecs dans certaines circonstances où javac n'a
aucun problème. De même, il ne supporte pas encore la syntaxe de Java 1.5.
|
| Compilateur Eclipse pour Java |
ecj-3.1 |
=dev-java/eclipse-ecj-3.1* |
ECJ est le compilateur utilisé par la plateforme de développement logiciel
Eclipse. Il est très complet et assez rapide. Il supporte la syntaxe de
Java 1.5.
|
6.
Paramétrage d'un CLASSPATH par défaut
Attention :
Les options expliquées dans cette section devraient être considérées comme
obsolètes et seront probablement retirées dans l'avenir. Nous vous recommandons
fortement de ne pas les utiliser, car vos projets Java ou vos applications
devraient dans l'idéal gérer leurs propres CLASSPATH. Si vous décidez
d'indiquer un CLASSPATH par défaut, certaines applications peuvent avoir un
comportement imprévu parce que certaines classes inattendues pourraient alors
se trouver dans leur CLASSPATH.
|
java-config peut également être utilisé pour définir un CLASSPATH par
défaut aussi bien au niveau système que pour un utilisateur spécifique.
Premièrement, vous devrez lister les librairies Java disponibles qui sont
installées sur votre système et qui pourraient être ajoutées dans votre
CLASSPATH. Voici un exemple de l'affichage :
Exemple de code 6.1 : Énumération des classes disponibles |
# 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)
...
|
De nouveau, les noms entre crochets ([]) sont les identifiants que vous
devez passer à java-config --set-system-classpath. Voici un
exemple :
Exemple de code 6.2 : Paramétrage des CLASSPATH |
# java-config --set-system-classpath log4j,xerces-2
|
Note :
Le répertoire courant (.) ne fera pas partie du CLASSPATH système,
ainsi il devra être ajouté dans votre profil de connexion au système.
|
Vous devrez mettre à jour votre environnement en vous déconnectant de votre
session puis en vous reconnectant ou en faisant un source /etc/profile.
Pour les utilisateurs, java-config --set-user-classpath va créer
~/.gentoo/java-env-classpath que vous devrez alors
« sourcer » depuis votre profil de ligne de commande.
Exemple de code 6.3 : Lier le CLASSPATH spécifique à l'utilisateur |
if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
source ${HOME}/.gentoo/java-env-classpath
fi
|
Si vous voulez vraiment un CLASSPATH par défaut au niveau système ou pour
l'utilisateur, vous pouvez ajouter quelque chose comme ce qui suit dans votre
profil de ligne de commande. Mais nous vous déconseillons cela.
Exemple de code 6.4 : Paramétrage du CLASSPATH |
# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)"
|
7.
Extensions Java pour le navigateur
Installation d'une extension
Vous pouvez installer une extension Java pour votre navigateur Internet en
compilant une machine virtuelle Java avec la variable USE nsplugin
active.
Note :
La variable USE nsplugin n'est pas disponible pour toutes les
architectures. Vérifiez les extensions disponibles pour votre architecture
avant d'essayer d'installer une machine virtuelle avec la commande
emerge -pv <java-vm>.
|
Portage vous permettra d'installer plusieurs versions des extensions Java, bien
qu'une seule puisse être utilisée par votre navigateur Internet. Vous pouvez
vérifier la liste des extensions disponibles en exécutant :
Exemple de code 7.1 : Vérification des extensions disponibles |
# eselect java-nsplugin list
[1] sun-jre-bin-1.5
[2] blackdown-jre-1.4.2
|
Dans cet exemple, sun-jre-bin est l'extension sélectionnée pour le
navigateur.
Exemple de code 7.2 : Sélection d'une extension |
# eselect java-nsplugin set sun-jre-bin-1.5
|
Vérifions que l'extension désirée est sélectionnée :
Exemple de code 7.3 : Vérification de l'extension désirée |
# eselect java-nsplugin list
[1] sun-jre-bin-1.5 current
[2] blackdown-jre-1.4.2
|
Java.com fournit également un lien pour vérifier votre extension
installée. De plus, si vous utilisez un navigateur basé sur Mozilla,
vous pouvez vérifier votre extension Java en tapant about:plugins dans
la barre d'adresse.
Extensions sur les systèmes multilib
Si vous avez un système multilib 64 bits ou 32 bits (par exemple un
AMD64), vous pouvez avoir les deux extensions Java 64 bits et 32 bits
installées.
Pour utiliser l'extension 32 bits, vous devez faire un emerge
emul-linux-x86-java avec la variable USE nsplugin activée.
Exemple de code 7.4 : Installation de l'extension 32 bits |
# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use
# emerge emul-linux-x86-java
|
Ensuite, vérifiez quelles sont les extensions disponibles :
Exemple de code 7.5 : Vérification des extensions disponibles |
# 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
|
Bien que vous deviez sélectionner un navigateur 32 bits (tel que
mozilla-firefox-bin) pour utiliser votre extension 32 bits, la
version 64 bits de konqueror utilise la machine virtuelle Java
directement, ainsi il est possible d'utiliser la version 64 bits de
blackdown avec votre navigateur sans configuration supplémentaire
nécessaire.
À présent, sélectionnez la bonne extension pour votre navigateur
32 bits :
Exemple de code 7.6 : Sélection des extensions |
# eselect java-nsplugin set 32bit emul-linux-x86-java-1.5
|
Vérifions que les extensions désirées sont sélectionnées :
Exemple de code 7.7 : Vérification des extensions désirées |
# eselect java-nsplugin list
Available 32-bit Java browser plugins
[1] emul-linux-x86-java-1.4.2 current
[2] emul-linux-x86-java-1.5
|
8.
Paramètres USE pour l'utilisation de Java
Configurer les paramètres USE
Pour plus d'informations concernant les paramètres USE, référez-vous au chapitre
portant sur les
paramètres
USE du Manuel Gentoo.
Les paramètres
-
Le paramètre java ajoute le support de Java dans un bon nombre de
programmes.
-
Le paramètre nsplugin ajoute le support pour des navigateurs de type
Mozilla (notamment Firefox). Vous aurez besoin de ce paramètre pour
visualiser des applets Java dans votre navigateur de type Mozilla.
-
Le paramètre source installe une archive zip du code source d'un
paquet. Celui-ci est utilisé notamment pour les IDE (environnement de
développement intégré) pour attacher le source aux bibliothèques que vous
utilisez.
-
Le paramètre jce ajoute le support du moteur de cryptographie Java
(N.D.T. : Java Cryptography Engine).
-
Pour les paquets Java, le paramètre build construira la
documentation des API en utilisant Javadoc.
9.
Documentation supplémentaire
Documentation hors-ligne
- Les pages man de java-config.
-
java-config --help.
Documentation en ligne
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|