Java

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Java and the translation is 38% complete.

Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
Resources

Ce guide est une introduction à Java. Il 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.

JVM languages

The Java virtual machine is not used exclusively by Java programming language. Multiple programming languages use the Java platform and run on the JVM. Examples of such include: Clojure, Apache Groovy, Kotlin or Scala.

Installer une machine virtuelle

Les choix possibles

Gentoo procure de nombreux environnement d'exécution Java (JREs) et kits de développement Java (JDKs). Les choix courants comprennent :

Vendeur JDK JRE
IcedTea Open Java SE (anciennement icedtea6-bin) dev-java/icedtea et dev-java/icedtea-bin
Oracle Java dev-java/oracle-jdk-bin dev-java/oracle-jre-bin
GCJ IcedTea GNU GCC Java (actuellement IcedTea-7) dev-java/icedtea sys-devel/gcc USE="gcj"

Installer un JRE/JDK

Pour installer le "JDK" par défaut du profile, exécuter :

root #emerge --ask virtual/jdk

Pour installer le "JRE" par défaut du profile, exécuter :

root #emerge --ask virtual/jre

Quelques JDKs et JREs, y compris les paquets d'Oracle, nécessitent que l'utilisateur accepte des Conditions Générales d'Utilisation (CGU, 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, l'installation du JDK/JRE échouera. Pour savoir comment ajouter des licences acceptables à make.conf, reportez-vous au chapitre Licences du manuel 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
Soyez conscient qu'un JDK comprend aussi un JRE, c'est pourquoi il n'est pas nécessaire d'installer un JRE si un JDK a déjà été installé.

Installing IcedTea GCJ Virtual Machine

Important
gcj is deprecated and is removed in GCC versions 7.0 and greater. It is unavailable from GCC 6.0 on Gentoo. Consider this section deprecated.

The IcedTea virtual machine is provided in source code and requires compilation by a Java bytecode compiler. This bootstrapping can be executed by the GNU Compiler for Java (GCJ). This compiler is available when GCC is built with the gcj USE flag.

When GCC is rebuilt with this USE flag set, the dev-java/icedtea package can be installed. Because of a Portage bug, users need to install dev-java/gcj-jdk and dev-java/ant-core explicitly first if they are not already present.

root #emerge --ask --oneshot dev-java/gcj-jdk dev-java/ant-core
root #emerge --ask dev-java/icedtea:7

Installer une machine virtuelle en limitant les recherches

Quelques JDKs et JREs vous obligent à passer par quelques étapes supplémentaires pour leur configuration. Installez (avec emerge) les paquets comme vous le feriez normalement. Si des étapes supplémentaires sont nécessaires, les ebuilds vous indiqueront où aller et quoi télécharger.

Téléchargez les fichiers indiqués dans /usr/portage/distfiles . Une fois ces fichiers en place, relancez la commande emerge<tt> qui commencera alors à installer le JRE/JDK. </div>

Setting up a headless JRE

Sometimes there is no need for a full JRE with all the capabilities of java. Using java on a server often does not require any GUI, graphical, sound or even printer related features. To install a simplified (sometimes also referred to as headless) JRE, a few USE flags need to be changed for the selected JRE flavor.

FILE /etc/portage/package.useRequired USE flag changes
dev-java/icedtea headless-awt -alsa -cups
dev-java/icedtea-bin headless-awt -alsa -cups
dev-java/oracle-jre-bin headless-awt -alsa -cups

Depending on the current Gentoo profile, this might already be the case. As usual, the USE flag settings that are applicable to a particular package can be checked by running emerge in pretend mode:

user $emerge --pretend --verbose virtual/jre

Configurer la machine virtuelle Java

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 <tt>java-config</tt> en tant qu'utilisateur root, vous pouvez configurer une machine virtuelle (VM) par défaut applicable à tout le système. Les utilisateurs peuvent également utiliser <tt>java-config</tt> pour définir leur propre version par défaut.

Note
Vous pouvez aussi utiliser <tt>eselect</tt> 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.

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.

CODE Sourcer 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

Important
The Java plugin support had been deprecated in JDK 9[1].

The Java browser plugin used to be managed via eselect java-nsplugin. This has now been removed in favor of a simpler out-of-the-box experience. For basic usage, simply emerge the chosen JVM with the nsplugin USE flag enabled. Note that Oracle's plugin is only available for amd64 and x86.

Note
Note that Chromium-based browsers since version 42 and Firefox since version 52 no longer support NPAPI-based plugins[2]. This effectively disables the Java plugin on modern browsers.

For more information, including JVM selection, Web Start, and multilib, see the README installed with icedtea-web.

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.

Following USE flags go in JAVA_PKG_IUSE.

  • The source flag installs a zip of the source code of a package. This is traditionally used for IDEs to 'attach' source to the libraries that are being use;
  • For Java packages, the doc flag will build API documentation using javadoc.

See also

External resources

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

For suggestions or questions regarding this document, please email the Gentoo Java team: java@gentoo.org

References

  1. JDK 9 and the Java Plugin, java.com. Retrieved on November 30, 2018
  2. How do I enable Java in my web browser?, java.com. Retrieved on November 30, 2018

This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Joshua Nichols, Karl Trygve Kalleberg, Joshua Saddler (nightmorph)
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.