Java/fr

This guide introduces the reader to Java and explains how to use Java with Gentoo Linux.

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.

Les choix possibles
Gentoo provides numerous Runtime Environments (JREs) and Development Kits (JDKs). The current choices include:

Installer un JRE/JDK
To install the profile's default JDK run emerge virtual/jdk. Or run emerge virtual/jre to install the profile's default JRE.

Some JDKs and JREs, including the Sun packages, require accepting an End User License Agreement, or EULA. If its license (such as dlj-1.1) is not listed in the  variable (found in ), then  the JDK/JRE will be unable to be installed. For more information on how to add acceptable licenses to read the Licenses chapter of the Portage Handbook.

To avoid any restrictive license hassle, consider installing icedtea-bin, which is an open Java implementation from the OpenJDK project.

Installer une machine virtuelle en limitant les recherches
Some of the JDKs and JREs require a few extra steps in their configurations. Emerge the packages as normal. If additional steps are required the ebuilds will provide instruction for the user on where to go and what to download.

Download the indicated file(s) into Once the files are in the right directories, rerun the emerge command, at which point the JRE/JDK will be begin to install.

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 3 USE flags need to be unset.

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:

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

Using the java-config tool with root privileges, a system-wide default java virtual machine (VM) can be set. Users can also use java-config to custom set their personal VM on a user-by-user basis.

Définir une machine virtuelle par défaut
Running the java-config --list-available-vms command will output a list of all JREs and JDKs installed on the system. Here is an example of the output:

The * indicates this is the current active JVM (system-vm or user-vm when set). The name in the brackets ([]) is the handle or ID for that particular VM. The handle or the number to java-config --set-system-vm can be used to set the VM. The following text provides an example of how to set the system VM.

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

Alternate method: select VM by number handle number:

As a regular user, use java-config.

Machines virtuelles Build Only
Some virtual machines are flagged as build-only due to being EOL and/or containing security vulnerabilities. These virtual machines will not automatically be used by Gentoo for the running of applications using Gentoo launchers (run-java-tool script designed for switching VMs), but will still be available for use by Gentoo's build environment as some packages may require them for building. The setting of these virtual machines as either the system or user VM is strongly discouraged as these VMs will then be used when running the executables, as well as used by any packages not using Gentoo's launcher scripts.

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.

This merge time VM switching is needed when, for example, the system-vm is set to a 1.6 VM and the package being merge requires a 1.5 VM. While merging it will select and use a 1.5 VM, leaving the system-vm choice intact.

To define which VM is selected when a switch is needed, a list of default/supported VMs per arch has been created. It can be found in.

These defaults can be over written (even the selected system VM) in for complete control over which VM will get used for merging.

For example, to always use a sun-jdk:

Or, to always use sun-jdk-1.5 wherever possible, except for when a 1.4 or 1.3 VM is explicitly required:

Or to use different providers for different versions, such as requiring  if a 1.3 (yes, 1.3) VM is asked, and fall back to ibm-jdk-bin otherwise:

Compilateurs
The standard Java compiler used for building is javac, which comes with each JDK. In addition to configuring the VM used at build time, it is also possible configure which compiler is used. Essentially, define a list with preference for which compiler to use in.

Some compilers do not support all possible  and   arguments. Therefore, each compiler in the list is checked to see if it can support the desired /. javac will work in all cases, so if no other suitable compiler is found, it will be used instead.

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

Configurer un CLASSPATH par défaut
java-config can also be used to set a system-wide default CLASSPATH, as well a user-specific default CLASSPATH.

First, list available Java libraries installed on the system to possibly put in the  variable. Here is an example of output:

Again, the names in brackets ([]) are the IDs to pass to java-config --set-system-classpath. Here is an example:

Update the environment by logging out, then in again or by typing source.

For users, java-config --set-user-classpath will create, which should then source from the shell's profile.

If desiring a system wide or user default classpath add something like the following to the shell's profile. This is advised against:

Installer un module d'extension
It is possible to install a Java plugins for a web browsers by emerging a Java VM with the  USE flag set.

Portage will allow installations of multiple Java plugins versions, though only one will be used by the web browser. Check the list of available plugins by running:

In this example, sun-jre-bin is selected for the browser plugin.

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

Java.com also provides a link to verify the installed plugin. Additionally, if a Mozilla-based browser is being used, verification of the Java plugin can be performed by typing about:plugins into the address bar.

Modules d'extension sur des systèmes multilibs(multi bibliothèques)
If running a mixed 64-bit and 32-bit multilib system (for example, on AMD64), use both 64-bit and 32-bit Java plugins. Unless there is a pressing need to run 32-bit Java applications, users have been recommended to use native 64-bit plugins on 64-bit web browsers.

There are several native 64-bit browser plugins available. The default JDK/JRE pair,  and , both include browser plugins. Just emerge one of them with  USE enabled.

To use a 32-bit plugin on a 32-bit browser, the package will need to be emerged with   USE enabled.

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

Now select the right plugin for the browser:

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

Configurer les options de la variable USE
For more information regarding USE flags, refer to the USE flags chapter from the Gentoo Handbook.

The USE flags

 * The  flag adds support for Java in a variety of programs;
 * The  flag adds support for Mozilla-like browsers (including Firefox). This is needed for viewing Java applets in a Mozilla-like browser;
 * The  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;
 * The  flag adds support for the Java Cryptography Engine;
 * For Java packages, the  flag will build API documentation using javadoc.

External resources

 * The gentoo-java, gentoo-user, and gentoo-dev mailing list archives
 * #gentoo and #gentoo-java on IRC
 * Wikipedia's entry for Java
 * Java 7 and bootstrapping icedtea on the Gentoo forums

More information can be found offline:
 * man java-config
 * java-config --help

For suggestions or questions regarding this document, please email the Gentoo Java team: