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 (éboueur). 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 ou Environnement d'exécution Java en français) 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 ou machine virtuelle Java en français) 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.  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 Open Java SE IcedTea (précélemment icedtea6-bin) dev-java/icedtea-bin
Le Java 7 SE d'Oracle dev-java/oracle-jdk-bin dev-java/oracle-jre-bin
Le Java 6 SE de Sun dev-java/sun-jdk dev-java/sun-jre-bin
Le Java SE d'IBM dev-java/ibm-jdk-bin dev-java/ibm-jre-bin

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.

Quelques JDK ou JRE, y compris les paquets de Sun, ne peuvent être installés qu'en acceptant un CLUF ou Contrat de Licence Utilisateur final. Si sa licence (telle que dlj-1.1) n'est pas listée dans les options de ACCEPT_LICENSE dans le fichier /etc/portage/make.conf, vous ne pourrez installer le JDK/JRE. Pour plus d'informations sur la manière d'ajouter des licences acceptables à /etc/portage/make.conf, lisez le Manuel de Portage .

Pour éviter toute énervement à cause d'une licence restrictive, considérez l'installation de icedtea-bin, qui est une implémentation de Java Open Source du projet Open JDK.

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échargement restreint

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.

3.  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 la machine virtuelle au niveau système et/ou utilisateur. 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 3.1 : lister les machines virtuelles disponibles

# 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]

Note : les machines virtuelles portant la marque Build Only peuvent contenir des vulnérabilités et/ou être EOL (en fin de vie). Gentoo recommande de ne pas choisir ces machines virtuelles comme machines virtuelles système ou utilisateur. Lisez Machines virtuelle Build Only pour plus d'information.

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 à la poignée 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 3.2 : réglage de la machine virtuelle du système

(Par la poignée (recommandé))
# java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM
(Par le numéro)
# java-config --set-system-vm 3
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 Build Only

Quelques machines virtuelles sont marquées build-only parce qu'elles sont en fin de vie (EOL) et/ou contiennent des failles de sécurité. Ces machines virtuelles ne sont pas utilisées automatiquement par Gentoo pour des applications utilisant les lanceurs Gentoo mais restent disponibles pour l'environnement de compilation/construction car certains paquets en ont besoin pour la compilation/construction. La définition de ces machines virtuelles en tant que machine virtuelle système ou utilisateur est déconseillée car ces machines virtuelles seraient utilisées lors de l'appel des exécutables /usr/bin/{java,javac,..} et par les paquets ne faisant pas appel aux scripts des lanceurs de Gentoo.

Machines virtuelles préférées en compilation/construction

Pendant l'installation des paquets Java, la machine virtuelle peut être, et est, commutée selon les besoins.

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

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.

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 3.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 3.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 3.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 prise en charge, les choses sont susceptibles de mal se passer. Les bogues reportés avec une machine virtuelle non prise en charge ne seront pas prioritaires tant qu'il y a des rapports de bogues concernant des machines virtuelles prises en charge.

4.  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 4.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-X.Y 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.

5.  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 5.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 5.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 5.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 5.4 : paramétrage du CLASSPATH

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

6.  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 : l'option nsplugin de la variable USE 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 6.1 : visualiser les extensions disponibles

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.6
   [2]   icedtea-bin

Dans cet exemple, sun-jre-bin est l'extension sélectionnée pour le navigateur.

Exemple de code 6.2 : choisir une extension

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

Vérifions que l'extension désirée est sélectionnée :

Exemple de code 6.3 : vérifier l'extension désirée

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.6  current
   [2]   icedtea-bin

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. À moins que vous n'ayez un besoin impérieux d'utiliser des applications 32 bits, nous vous recommandons d'utiliser des plugins en format natif 64 bits dans les navigateurs 64 bits.

Il existe plusieurs navigateurs en format natif 64 bits. Les JDK et JRE par défaut sun-jdk et sun-jre-bin, incluent tous les deux des extensions pour les navigateurs. Installer simplement l'un d'eux avec emerge en utilisant l'option nsplugin de la variable USE.

Exemple de code 6.4 : installer une extension 64 bits

# echo "dev-java/sun-jre-bin nsplugin" >> /etc/portage/package.use
# emerge sun-jre-bin

Pour utiliser l'extension 32 bits, vous devez faire un emerge emul-linux-x86-java en utilisant l'option nsplugin de la variable USE.

Exemple de code 6.5 : installer une 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 6.6 : visualiser les extensions disponibles

# 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

À présent, sélectionnez la bonne extension pour votre navigateur :

Exemple de code 6.7 : choisir des extensions

(Choisir des extensions pour les navigateurs 32 bits  et 64 bits )
# eselect java-nsplugin set 32bit emul-linux-x86-java-1.6
# eselect java-nsplugin set 64bit sun-jre-bin-1.6

Vérifions que les extensions désirées sont sélectionnées :

Exemple de code 6.8 : vérifier les extensions désirées

# 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

7.  Options de la variable USE pour l'utilisation de Java

Configurer les options de la variable USE

Pour plus d'informations concernant les options de la variable USE, référez-vous au chapitre portant sur les paramètres USE du Manuel Gentoo.

Les options

  • L'option java ajoute la prise en charge de Java dans un bon nombre de programmes.
  • L'optionnsplugin ajoute la prise en charge des navigateurs de type Mozilla (notamment Firefox). Vous aurez besoin de cette option pour visualiser des applets Java dans votre navigateur de type Mozilla.
  • L'option 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.
  • L'option jce ajoute la prise en charge du moteur de cryptographie Java (N.D.T. : Java Cryptography Engine).
  • Pour les paquets Java, l'option doc construira la documentation des API en utilisant Javadoc.

8.  Documentation supplémentaire

Documentation hors-ligne

  • Les pages man de java-config.
  • java-config --help.

Documentation en ligne



Imprimer

Dernière mise à jour le 24 juillet 2012

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

José Fournier
Traducteur

Donate to support our development efforts.

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