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.
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.
Les nouvelles installations ne devraient nécessiter aucune autre préparation.
3. Installation d'une machine virtuelle
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.)
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
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 |
(Avec le contenu (recommandé)) # java-config --set-system-vm blackdown-jdk-1.4 Now using blackdown-jdk-1.4 as your generation-2 system JVM (Avec le numéro) # 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. |
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 |
(Je veux toujours utiliser un sun-jdk, i.e. sun-jdk-1.4 pour la version 1.4, sun-jdk-1.5 pour la 1.5, etc)
*=sun-jdk
|
Exemple de code 4.4 : Exemple de /etc/java-config-2/build/jdk.conf |
(Toujours utiliser sun-jdk-1.5 quand c'est possible, sauf si une machine virtuelle 1.4 ou 1.3 est requise)
*=sun-jdk-1.5
|
Exemple de code 4.5 : Exemple de /etc/java-config-2/build/jdk.conf |
# Pour les machines virtuelles 1.3 je préfère que ce soit sun-jdk 1.4 mais quand elle n'est pas disponible, je veux utiliser ibm-jdk-bin,
# Pour les machines 1.4, je veux utiliser blackdown-jdk, et pour les 1.5, je veux utiliser sun-jdk
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. |
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
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
Pour plus d'informations concernant les paramètres USE, référez-vous au chapitre portant sur les paramètres USE du Manuel Gentoo.
9. Documentation supplémentaire
Ce document est protégé par la licence Creative Commons : Paternité - Partage des Conditions Initiales à l'Identique 2.5.