Gentoo Logo

Guide Java avec Gentoo

Table des matières :

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

(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.

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

(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.

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



Imprimer

Dernière mise à jour le 28 septembre 2008

Une version originale plus récente datée du 7 octobre 2009 existe.

Résumé : Ce guide présente aux utilisateurs et développeurs la technologie Java et explique comment utiliser Java sous Gentoo Linux.

Joshua Nichols
Auteur

Karl Trygve Kalleberg
Auteur

Joshua Saddler
Correcteur

Marc Krauth
Traducteur

Camille Huot
Traducteur, relecteur

Clément Varaldi
Traducteur

Marion Agé
Traducteur

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.