Important: You are required to change your passwords used for Gentoo services and set an email address for your Wiki account if you haven't done so. See the full announcement and Wiki email policy change for more information.

Java

From Gentoo Wiki
Revision as of 08:52, 19 September 2013 by Jaaf (Talk | contribs)

Jump to: navigation, search
Other languages:Deutsch 99% • ‎English 100% • ‎español 100% • ‎français 100% • ‎русский 100%


Ce guide vous introduit à Java et vous explique comment l'utiliser avec Gentoo Linux.

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 et conçu pour être exécuté sur des plateformes multiples sans avoir à recompiler le code pour chacune des plateformes. Bien que Java puisse être compilé comme un programme natif, la popularité de Java est essentiellement attribuable à sa portabilité, et à d'autres fonctionnalités comme la fonction éboueur. Pour rendre possible l'indépendance de la plateforme, le compilateur Java compile le code en une représentation intermédiaire appelée Java bytecode qui tourne sur un environnement d'exécution Java ou JRE et pas directement sur le système d'exploitation.

Afin d'exécuter le Java bytecode, il faut avoir un environnement d'exécution Java (Java Run Time Environment ou JRE) installé. Le JRE procure, parmi d'autres, les bibliothèques du cœur, une machine virtuelle Java dépendante de la plateforme et des modules d'extension pour les navigateurs. Un kit de développement Java (Java Development Kit ou JDK) ajoute des outils de programmation comme un compilateur de bytecote et un débogueur.

Installer une machine virtuelle

Les choix possibles

Gentoo procure de nombreux environnement d'exécution (JREs) et kits de développement (JDKs). Dans les choix courants, nous trouvons :

Vendeur JDK JRE
Le IcedTea Open Java SE (anciennement 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

Installer un JRE/JDK

Pour installer le JDK par défaut de votre profil, exécutez emerge virtual/jdk. Ou pour installer le JRE par défaut de votre profil , exécutez emerge virtual/jre.

Quelques JDKs et JREs, y compris les paquets de Sun, nécessitent que l'utilisateur accepte un contrat de licence utilisateur final CLUF (en anglais End User License Agreement ou EULA). Si cette licence (telle que dlj-1.1) n'est pas listée dans la variable ACCEPT_LICENSE dans /etc/portage/make.conf, vous ne serez pas en mesure d'installer le JDK/JRE. Pour savoir comment ajouter des licences acceptables à make.conf, reportez-vous au manuel de Portage .

Pour éviter le désagrément d'une licence trop restrictive, installez plutôt icedtea-bin, qui est une mise en œuvre libre de Java du projet OpenJDK.

Note
Un JDK comprend aussi un JRE, c'est pourquoi, installer un JDK vous évite d'installer aussi un JRE.

Installer une machine virtuelle en limitant les recherches

Quelques JDKs et JREs vous obligent à faire quelques explorations avant l'installation. Installez (avec emerge) les paquets comme vous le feriez normalement. Les ebuilds vous indiqueront où aller et quoi télécharger.

Vous devriez télécharger les fichiers indiqués dans /usr/portage/distfiles . Une fois ces fichiers en place, vous pouvez relancer la commande emerge qui commencera alors à installer le JRE/JDK.

Configurer votre machine virtuelle

Vue d'ensemble

Gentoo a la capacité à avoir plusieurs JDKs et JREs installés sans que cela ne crée de conflit.

En utilisant l'outil java-config, vous pouvez définir la version par défaut applicable à tout le système (à condition que vous ayez un accès super-utilisateur). Les utilisateurs peuvent également utiliser java-config pour définir leur propre version par défaut.

Note
Vous pouvez aussi utiliser eselect pour changer la machine virtuelle au niveau du système ou de l'utilisateur. Reportez-vous à eselect java-vm help.

Définir une machine virtuelle par défaut

En exécutant la commande java-config --list-available-vms vous obtiendrez une liste de tous les JREs et JDKs installés sur votre système. Voici un exemple de sortie de cette commande :

root # 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 marquées Build Only peuvent contenir des vulnérabilités et/ou être en fin de vie. Gentoo vous recommande de ne pas choisir ces machines virtuelles comme machine virtuelle système ou utilisateur. Reportez-vous à Build Only VM pour plus d'information.

Le signe * indique la machine virtuelle courante (machine virtuelle système ou utilisateur lorsque définie). Le nom entre les crochets carrés ([]) est la poignée ou l'identifiant de cette machine virtuelle particulière. Vous pouvez utiliser la poignée ou le numéro pour la définir avec java-config --set-system-vm. Voici un exemple de comment définir la machine virtuelle système.

Définir la machine virtuelle système à l'aide de la poignée (solution préférée):

root # java-config --set-system-vm sun-jdk-1.6
Now using sun-jdk-1.6 as your generation-2 system JVM

Vous pouvez également la définir à l'aide des numéros.

root # java-config --set-system-vm 3
Now using sun-jdk-1.6 as your generation-2 system JVM

En tant qu'utilisateur ordinaire, vous pouvez utiliser java-config --set-user-vm.

Note
Il n'est plus nécessaire de sourcer le profil pour que la mise à jour de la machine virtuelle utilisateur/système prenne effet .

Machines virtuelles Build Only

Quelques machines virtuelles sont marquées comme build-only (compilation seulement) parce qu'elles contiennent des vulnérabilités ou sont en fin de vie. Ces machines virtuelles ne seront pas utilisées automatiquement par Gentoo pour exécuter des applications à l'aide des lanceurs Gentoo, mais resteront disponibles pour l'environnement de compilation de Gentoo car certains paquets pourront encore en avoir besoin pour leur compilation. Définir ces machines virtuelles en tant que machine virtuelle par défaut (système ou utilisateur) est très fortement déconseillé car ces machines virtuelles seraient alors utilisées lors de l'exécution des exécutables /usr/bin/{java,javac,..} et seraient aussi utilisées par tout paquet n'utilisant pas les scripts de lancement de Gentoo.

Machine virtuelle préférée pour la compilation

Lors de l'installation de paquets Java, la machine virtuelle utilisée pour la compilation peut parfois être différente de celle définie en tant que machine virtuelle par défaut du système.

Cette commutation de machine virtuelle lors de la compilation est nécessaire quand, par exemple, votre machine virtuelle système est définie à 1.6 et que le paquet que vous êtes en train d'installer nécessite une machine virtuelle 1.5. Lors de la compilation la machine 1.5 sera utilisée, sans toucher à votre choix de machine virtuelle par défaut du système.

Pour définir quelle machine virtuelle sera choisie lorsqu'une commutation sera nécessaire, nous avons créé une liste des machines virtuelles par défaut prises en charge par architecture. Vous les trouverez dans /usr/share/java-config-2/config/jdk-defaults.conf.

Vous pouvez supplanter ces machines par défaut (et même votre machine virtuelle système choisie) dans /etc/java-config-2/build/jdk.conf et contrôler complètement quelle machine virtuelle sera utilisée pour l'installation.

Par exemple, pour utiliser sun-jdk dans tous les cas :

File/etc/java-config-2/build/jdk.confRequérir sun-jdk

*=sun-jdk

Ou utiliser sun-jdk-1.5 à chaque fois que possible, sauf lorsqu'une machine virtuelle 1.4 ou 1.3 est explicitement requise :

File/etc/java-config-2/build/jdk.confRequérir sun-jdk-1.5 pour les machines virtuelles 1.5

*=sun-jdk-1.5

Ou utiliser différents fournisseurs pour différentes versions, comme requérir sun-jdk-1.4 si une machine 1.3 (j'ai bien dit, 1.3) est demandée,et se rabattre sur ibm-jdk-bin dans les autres cas :

File/etc/java-config-2/build/jdk.confUtiliser des expressions multiples

1.3=sun-jdk-1.4 ibm-jdk-bin
1.5=sun-jdk


Attention !
Vous n'avez pas à éditer ce fichier. Si vous changez ces options pour utiliser une machine virtuelle non prise en charge, ça pourrait se passer mal. Comme il existe une grande variété de machines virtuelles disponibles, nous n'avons pas les ressources suffisantes pour vérifier que chacun des paquets fonctionne sur chacune d'elles. Les bogues rapportés avec une machine virtuelle non prise en charge ne seront pas traités tant des bogues rapportés sur les machines virtuelles prises en charge existeront.

Compilateurs

Le compilateur Java standard est utilisé pour la compilation est javac. Il est fourni avec chacun de JDK. En plus de configurer la machine virtuelle utilisée à la compilation, il est aussi possible de configurer quel compilateur sera utilisé. Pour aller à l'essentiel, vous définissez une liste de vos préférences de compilateur à utiliser dans /etc/java-config-2/build/compilers.conf.

File/etc/java-config-2/build/compilers.confDéfinir les compilateurs préférés

COMPILERS="ecj-X.Y jikes javac"

Quelques compilateurs ne prennent pas en charge tous les arguments -target (cible) et -source. De plus, chacun des compilateurs dans la liste est vérifié pour savoir s'il prend en charge les -source/-target désirés. Le compilateur javac fonctionnera dans tous les cas, c'est pourquoi, si aucun autre compilateur convenable n'est trouvé, il sera utilisé.

Plus de détails sur les différents compilateurs sont fournis ci-après :

Nom Poignée Paquet Description
javac javac N/A C'est le compilateur utilisé par défaut qui arrive avec chaque JDK.
jikes jikes dev-java/jikes Jikes a été développé à l'origine par IBM. Paradoxalement, il est généralement plus pédant et il plante dans quelques rares circonstances dans lesquelles javac ne rencontre pas de problème. Il ne prend pas encore en charge la syntaxe Java 1.5.
Compilateur pour Java d'Eclipse ecj dev-java/eclipse-ecj ECJ est le compilateur utilisé par le kit de développement Eclipse. Il est très riche de fonctionnalités et très rapide. Il ne prend pas en charge la syntaxe Java 1.5.

Configurer un CLASSPATH par défaut

Attention !
Les options présentées dans cette section doivent être considérées comme en voie d'obsolescence et seront probablement retirées dans le futur. Nous recommandons fortement de ne pas les utiliser, parce que vos projets Java ou vos applications devraient, dans l'idéal, gérer leur propre classpath. Si vous choisissez de spécifier un CLASSPATH par défaut, quelques applications pourraient se comporter de manière inattendue, parce que des classes qu'elles n'attendaient pas, pourraient se trouver dans le classpath.

java-config peut aussi être utilisé pour définir un CLASSPATH par défaut applicable à tout le système, aussi bien qu'un CLASSPATH spécifique à un utilisateur.

Tout d'abord, il vous faut lister les bibliothèques Java disponibles installées sur votre système qui pourraient être placées dans votre CLASSPATH. Voici un exemple de sortie :

root # 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, le nom entre crochets carrés ([]) est l'identifiant que vous devez passer à java-config --set-system-classpath. En voici un exemple :


root # java-config --set-system-classpath log4j,xerces-2
Note
Le répertoire courant (.) ne fera pas partie du classpath système, car cela doit être ajouté au profil de connexion de votre système.

Vous devrez mettre votre environnement à jour en vous déconnectant et en vous reconnectant, ou en sourçant /etc/profile.

Pour les utilisateurs, java-config --set-user-classpath créera ~/.gentoo/java-env-classpath, que vous devrez sourcer depuis le profil de votre shell.

CodeSourcer un classpath spécifique à l'utilisateur

if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
       source ${HOME}/.gentoo/java-env-classpath
fi

Si vous avez réellement besoin d'un classpath par défaut applicable à tout le système ou à un utilisateur, vous pouvez ajouter quelque chose comme ce qui suit au profil de votre shell. Mais nous devrions vous en dissuader.

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

Modules d'extension Java pour les navigateurs

Installer un module d'extension

Vous pouvez installer un module d'extension Java pour votre navigateur Internet en installant une machine virtuelle Java avec l'option nsplugin de la variable USE activée.

Note
nsplugin n'est pas disponible pour toutes les architectures. Vérifiez les modules d'extension disponibles sur votre architecture avant d'essayer d'installer une machine virtuelle avec la commande emerge -pv <java-vm>.

Portage vous autorise à installer plusieurs versions du module d'extension Java, bien qu'un seul d'entre eux sera utilisé par votre navigateur. Vous pouvez vérifier la liste des modules d'extension disponibles en exécutant :

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

Dans cet exemple, sun-jre-bin est choisi comme module d'extension Java du navigateur.

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

Vérifiez que le module d'extension correct à été choisi :

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

Java.com also procure un lien vers verify your installed plugin. De plus, si vous utilisez un navigateur basé sur Mozilla, vous pouvez connaître votre module d'extensio Java courant en tapant about:plugins dans la barre d'adresses.

Modules d'extension sur des systèmes multilibs(multi bibliothèques)

Si vous utilisez un système multilib mixant les bibliothèques 64 bits et 32 bits(par exemple, sur AMD64), vous pouvez utiliser des modules d'extension Java 64 bits ou 32 bits. Sauf si vous avez de bonnes raisons d'exécuter des applications Java 32 bits, nous vous recommandons d'utiliser un module d'extension Java 64 bits natif sur les navigateurs en 64 bits.

Il existe plusieurs modules d'extension natifs en 64 bits pour les navigateurs. Les couplesJDK/JRE, sun-jdk et sun-jre-bin, comprennent tous les deux des modules d'extension pour navigateurs. Contentez-vous d'installer l'un d'eux via la commande emerge avec l'option nsplugin de la variable USE activée.

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

Pour utiliser un module d'extension 32 bits sur un navigateur 32 bits, vous devez installer (emerger) emul-linux-x86-java avec l'option nsplugin de la variable USE activée.

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

Ensuite, vérifiez quels sont les modules d'extension disponibles :

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

Maintenant choisissez le module d'extension qui convient à votre navigateur :

root # eselect java-nsplugin set 32bit emul-linux-x86-java-1.6
root #
eselect java-nsplugin set 64bit sun-jre-bin-1.6

Vérifiez que le module d'extension correct a été sélectionné :

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

Options de la variable USE à utiliser avec Java

Configurer les options de la variable USE

Pour plus d'information à propos des options de la variable USE, reportez-vous à la page sur la variable USE

Les options

  • L'option java ajoute la prise en charge de Java dans de nombreux programmes.
  • L'option nsplugin ajoute la prise en charge de Java par les navigateurs basé sur Mozilla (y compris Firefox). Vous en aurez besoin pour voir les applets Java dans le navigateur.
  • L'option source installe une archive zip du code source d'un paquet. Ceci est traditionnellement utilisé par les environnements de développement (IDE) pour attacher les sources aux bibliothèques que vous utilisez.
  • L'option jce ajoute la prise en charge du moteur de cryptographie Java.
  • Pour les paquets Java, l'option doc construira une documentation de l'interface de programmation d'application (API) en utilisant javadoc.

Ressources additionnelles

Ressources hors ligne

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

Ressources en ligne

Remerciements

Nous tenons à remercier les auteurs et éditeurs suivants pour leur contribution à ce guide :


  • Joshua Nichols
  • Karl Trygve Kalleberg
  • Joshua Saddler