# IBM Runtime Environment pour Linux, Java 2 Technology Edition, Version 1.4.2

# Guide d'utilisation

# Notice de copyright

Remarque : Avant d'utiliser le présent document et le produit associé, prenez connaissance des informations générales figurant à la section Remarques.

Cette édition du guide utilisateur s'applique aux plateformes suivantes lorsqu'elles deviennent disponibles :

- IBM 32-bit Runtime Environment pour Linux sur architecture Intel, Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment pour Linux sur architecture Intel, Java 2 Technology Edition, Version 1.4.2
- IBM 32-bit Runtime Environment pour Linux sur iSeries et pSeries, Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment pour Linux sur iSeries et pSeries, Java 2 Technology Edition, Version 1.4.2
- IBM 31-bit Runtime Environment pour Linux sur zSeries, Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment pour Linux sur zSeries, Java 2 Technology Edition, Version 1.4.2

ainsi qu'aux versions et modifications suivantes, sauf indication contraire dans les nouvelles éditions.

(c) Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.

(c) Copyright International Business Machines Corporation, 1999, 2004. All rights reserved.

U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

# Préface

Le présent guide utilisateur décrit IBM Runtime Environment pour toutes les plateformes Linux. Les informations relatives à une plateforme spécifique sont marquées comme telles. Reportez-vous bien à la documentation propre à votre plateforme. En particulier, Web Start et le plug-in sont spécifiques à la version 32 bits de SDK pour Linux sur architecture Intel.

IBM Runtime Environment comprend également la machine virtuelle Java (JVM), les classes Java Core Sun Microsystems et les fichiers de prise en charge. IBM Runtime Environment ne contient pas toutes les classes du composant SDK.

Le guide utilisateur contient des informations générales sur IBM Runtime Environment et des informations spécifiques sur les différences qui existent entre l'implémentation IBM de Runtime Environment et l'implémentation Sun. Consultez ce guide utilisateur ainsi que la documentation plus détaillée disponible sur le site Web Sun à l'adresse suivante : http://java.sun.com.

Le document IBM JVM Diagnostics Guide fournit des informations plus détaillées sur la machine JVM d'IBM.

Pour connaître la liste des distributions pour lesquelles le composant SDK for Linux a été testé, consultez le site Web à l'adresse suivante : http://www-106.ibm.com/developerworks/java/jdk/linux/tested.html

Notez que IBM Runtime Environment pour Linux est un sous-ensemble de SDK qui vous permet uniquement d'exécuter les applications Java. Si vous avez installé SDK, IBM Runtime Environment est inclus.

Les termes "Runtime Environment" et "machine virtuelle Java" sont utilisés indifféremment dans ce guide utilisateur.

Les modifications techniques apportées au guide utilisateur Version 1.4.2, autres que les modifications mineures ou importantes telles que la mise à jour de "1.4.1" en "1.4.2", sont indiquées en rouge lors de l'affichage au format HTML ou sur une impression en couleurs, et par des barres verticales placées à leur gauche.

# Table des matières

Notice de copyright
Préface
Généralités
| |
Conventions
Compatibilité des versions
| |
Informations destinées aux utilisateurs de Linux PPC64
Fichiers de Runtime Environment for Linux
Contrat de licence
Compilateur JIT (Just-in-Time)
Interface JNI (Java Native Interface) et interface NMI (Native Method Interface)
| |
Installation sur Red Hat Enterprise Linux (RHEL) 3
Configuration de Runtime Environment pour Linux
Désinstallation de Runtime Environment pour Linux
Désinstallation du composant RPM
Désinstallation du composant TAR compacté
| |
Pont JDBC/ODBC réintégré
Lancement d'une application Java
Récapitulatif des commandes
Options
Options standard
Options non standard
Globalisation de la commande java
Utilisation des chemins d'accès aux classes
| |
Configuration de l'allocation de mémoire à grandes pages
Utilisation des chemins d'accès aux classes d'amorçage
Définition des règles de récupération de place
Délai d'interruption
Réduction du délai d'interruption
Environnements à segments très saturés
Informations complémentaires sur la récupération de place
Traitement des signaux par la JVM
Signaux utilisés par la JVM
Création d'un lien entre un pilote de code natif et une bibliothèque de chaînage de signaux
| |
Implémentation du pool de gestionnaires de connexions pour RMI
Obtention du numéro de compilation et de version IBM
(Linux IA 32 bits uniquement) Utilisation du plug-in Java
Installation et configuration du plug-in Java pour Netscape 6 et Mozilla
Installation et configuration du plug-in Java pour Netscape 4
Utilisation du plug-in Java avec des navigateurs Mozilla compilés gcc3.2.x
Utilisation des paramètres DBCS
(Linux IA 32 bits uniquement) Utilisation de Web Start
Installation de Java Web Start
Utilisation des piles flottantes
Changement de méthode de saisie sur un système DBCS
Installation d'une application sur le système d'un utilisateur
Restrictions d'utilisation
Limitations applicables à toutes les plateformes Linux, sauf indication contraire
Limitations de Linux IA 32 bits
Limitations de Linux PPC 32 bits et 64 bits
Limitations de Linux PPC 32 bits
Limitations de Linux zSeries 64 bits
Limitations de Linux zSeries 32 bits et 64 bits
Commentaires sur ce guide utilisateur
Remarques
Marques

# Généralités

Runtime Environment for Linux contient le sous-groupe de classes requis pour créer un environnement d'exécution Java et pour exécuter des programmes Java. Il comprend également la machine virtuelle Java, les classes Java et des fichiers de prise en charge. Runtime Environment for Linux ne contient qu'un sous-ensemble des classes proposées dans SDK.

| | |

## Conventions

|

Dans le présent guide utilisateur, le répertoire d'installation |par défaut de SDK est /opt/IBMJava2-142/. Les différentes plateformes |et leur répertoire d'installation par défaut sont répertoriés |ci-après. Remplacez /opt/IBMJava2-142/ par le répertoire correspondant |à votre plateforme :

|

|
- Linux IA 32 bits : /opt/IBMJava2-142/
|
- Linux IA 64 bits : /opt/IBMJava2-142/
|
- Linux PPC 32 bits : /opt/IBMJava2-ppc-142/
|
- Linux PPC 64 bits : /opt/IBMJava2-ppc64-142/
|
- Linux zSeries 31 bits : /opt/IBMJava2-s390-142/
|
- Linux zSeries 64 bits : /opt/IBMJava2-s390x-142/

## Compatibilité des versions

En général, les applets ou les applications qui s'exécutent dans la version 1.1.8, 1.2.2 ou 1.3.1 de SDK pour Linux doivent s'exécuter correctement dans cette version. Les applets qui dépendent des API Java 1.4.2 de Sun fonctionnent uniquement avec les navigateurs qui prennent en charge les API 1.4.2.

Il n'est pas garanti que les classes compilées 1.4.2 fonctionnent dans les éditions de Runtime Environment antérieures à 1.4.0.

| | |

### Informations destinées aux utilisateurs de Linux PPC64

|

Runtime |Environment version 1.4.2 n'est pas pris en charge sur SLES 8. |Pour exécuter SDK sur SLES 8, utilisez SDK version 1.4.1 SR1.

## Fichiers de Runtime Environment for Linux

Runtime Environment for Linux contient des fichiers .so non débogables et des fichiers de classe qui permettent de prendre en charge un programme en cours d'exécution. Runtime Environment for Linux ne comporte aucun outil de développement (comme appletviewer ou javac), ni aucune classe qui appartiendrait uniquement à un système de développement.

De plus, le composant de l'API Java Communications est fourni pour être utilisé avec Runtime Environment for Linux. (Excepté sous Linux IA 64 bits et Linux zSeries 31 bits et 64 bits).

## Contrat de licence

Le fichier LICENSE_xx.html contient le contrat de licence du logiciel Runtime Environment for Linux (xx est une abréviation représentant la langue).

Pour afficher ou imprimer ce contrat de licence, chargez le fichier dans un navigateur Web.

## Compilateur JIT (Just-in-Time)

Le compilateur JIT (libjitc.so) génère dynamiquement un code machine pour des séquences de code intermédiaire utilisées fréquemment dans des applications ou des applets Java pendant leur exécution.

Runtime Environment pour Linux inclut le compilateur JIT (libjitc.so), qui est activé par défaut. Vous pouvez le désactiver pour isoler un incident lié à l'application, à une applet ou au compilateur.

Pour désactiver le compilateur JIT, entrez la commande suivante à l'invite du shell dans la fenêtre dans laquelle vous exécuterez l'application :

        export JAVA_COMPILER=NONE

Pour activer le compilateur JIT, entrez la commande suivante à l'invite du shell :

        export JAVA_COMPILER=jitc

Pour vérifier si le compilateur JIT est activé ou non, entrez la commande suivante à l'invite du shell :

        java -version

Si le compilateur est utilisé, le message suivant s'affiche :

    (JIT enabled: jitc)

Si le compilateur n'est pas utilisé, le message suivant s'affiche :

    (JIT disabled)

## Interface JNI (Java Native Interface) et interface NMI (Native Method Interface)

L'interface JNI (Java Native Interface) est fournie avec le logiciel Runtime Environment. Pour plus d'informations sur l'utilisation de l'interface JNI, reportez-vous à la page Web Sun suivante : http://java.sun.com.

La version de ce logiciel IBM ne prend pas en charge l'interface NMA (Native Method Interface). N'utilisez pas cette interface dans vos applications.

| | |

# Installation sur Red Hat Enterprise Linux (RHEL) 3

|

L'environnement d'exécution dépend de la bibliothèque partagée /usr/lib/libstdc++-libc6.2-2.so.3. |Cette bibliothèque n'est pas installée par défaut pour RedHat Enterprise Linux (RHEL) |3.0.

|

Le composant rpm qui contient cette bibliothèque est |`compat-libstdc++-7.3-2.96.122.i386.rpm` . Pour installer la bibliothèque, entrez la commande suivante |sur une invite shell :

|

    rpm -ivh compat-libstdc++-7.3-2.96.122.i386.rpm

|

Pour inclure la bibliothèque lors de l'installation de RHEL 3, |procédez comme suit :

|

|
1. Lorsque l'écran des valeurs par défaut des paquetages apparaît, |sélectionnez l'option de personnalisation des paquetages à |installer.
|
2. Dans l'écran Sélection des groupes de paquetages, sous les |options Développement, sélectionnez Développement de logiciels propriétaires.

# Configuration de Runtime Environment pour Linux

Après avoir installé Runtime Environment pour Linux, vous devez ajouter les répertoires suivants à l'instruction PATH du script de connexion au shell :

/opt/IBMJava2-142/jre/bin

Si vous avez installé Runtime Environment pour Linux dans un autre répertoire, remplacez /opt/IBMJava2-142/ par le répertoire dans lequel vous avez installé Runtime Environment.

Remarque :
(Pour les utilisateurs de la version chinoise de Linux IA 32 bits uniquement) En raison des incohérences des codages de police sur RedHat Advanced Server, lorsque vous effectuez une installation pour un environnement dont la langue par défaut doit être le chinois, il est recommandé d'utiliser l'anglais comme langue par défaut lors de l'installation, puis de passer au chinois une fois l'installation terminée. Si vous ne procédez pas ainsi, les polices chinoises risquent de ne pas s'afficher.

# Désinstallation de Runtime Environment pour Linux

La méthode de suppression de Runtime Environment est différente selon que vous avez utilisé le package RPM (Red Hat Package Manage) ou le package TAR (Tape Archive) compacté. Pour plus d'informations reportez-vous à la section Désinstallation du composant RPM ou Désinstallation du composant TAR compacté.

## Désinstallation du composant RPM

Pour désinstaller Runtime Environment for Linux si vous l'avez installé à l'aide du composant RPM :

1. A l'invite du script shell, tapez la commande suivante :

   -         rpm -e IBMJava2-JRE-1.4.2

   - Pour Linux PPC 32 bits :

         rpm -e IBMJava2-JRE-ppc-1.4.2

   - Pour Linux PPC 64 bits :

         rpm -e IBMJava2-JRE-ppc64-1.4.2

   Vous pouvez également utiliser un outil graphique tel que kpackage ou yast2.
2. Supprimez de l'instruction PATH le répertoire d'installation du logiciel Runtime Environment.
3. (Linux IA 32 bits uniquement) Si vous avez installé l'extension Java, supprimez les fichiers correspondants du répertoire du navigateur Web.

## Désinstallation du composant TAR compacté

Pour désinstaller Runtime Environment for Linux lorsque vous l'avez installé à l'aide du composant RPM compacté :

1. Supprimez les fichiers Runtime Environment du répertoire d'installation dans lequel vous avez installé Runtime Environment.
2. Supprimez de l'instruction PATH le répertoire d'installation du logiciel Runtime Environment.
3. (Linux IA 32 bits uniquement) Si vous avez installé l'extension Java, supprimez les fichiers correspondants du répertoire du navigateur Web.

| | |

# Pont JDBC/ODBC réintégré

|

Le pont JDBC/ODBC, qui avait été retiré d'IBM SDK, version 1.4.0, |a été réintégré dans la version 1.4.2.

# Lancement d'une application Java

L'outil Java permet de lancer une application Java.

La JVM recherche la classe de lancement et les autres classes utilisées dans trois ensembles d'emplacements : le chemin d'accès à la classe d'amorçage, les extensions installées et le chemin d'accès à la classe d'utilisateur. Les arguments situés après le nom de la classe ou le nom de fichier JAR sont transmis à la fonction main.

La commande javaw est identique à la commande java, à cette différence qu'aucune fenêtre de console ne lui est associée. Utilisez la commande javaw lorsque vous ne souhaitez pas qu'une fenêtre d'invite s'affiche. Si le lancement échoue, le programme de lancement de javaw affiche une boîte de dialogue contenant un message d'erreur.

## Récapitulatif des commandes

Les commandes java et javaw ont la syntaxe suivante :

    java [ options ] class [ arguments ... ]
    java [ options ] -jar file.jar [ arguments ... ]
    javaw [ options ] class [ arguments ... ]
    javaw [ options ] -jar file.jar [ arguments ... ]

Les éléments placés entre crochets sont facultatifs.

options
  Options de la ligne de commande.
class
  Nom de la classe à lancer.
file.jar
  Nom du fichier JAR à lancer. Il est utilisé uniquement avec -jar.
argument
  Argument transmis à la fonction main.

Si l'option -jar est indiquée, le fichier JAR nommé contient les fichiers de ressources et de classes de l'application, avec la classe de lancement indiquée par l'en-tête de manifeste de la classe principale.

## Options

Le programme de lancement contient un jeu d'options standard qui sont prises en charge dans l'environnement d'exécution courant et qui le seront également dans les prochaines éditions. Il contient également un jeu d'options non standard.

### Options standard

- -D<nom_propriété>=<valeur>
  - Définit une propriété système.
- -assert
  - Affiche l'aide concernant les options d'assertion.
- -cp ou -classpath <répertoires et fichiers ZIP ou JAR séparés par deux points (:)>
  - Définit le chemin d'accès aux classes et aux ressources d'application. Si -classpath et -cp ne sont pas utilisées, et que la variable CLASSPATH n'est pas définie, le chemin d'accès aux classes de l'utilisateur par défaut est le répertoire courant (.). Voir également Utilisation des chemins d'accès aux classes.
- -help ou -?
  - Affiche un message d'aide.
- -showversion
  - Affiche la version du produit et continue la procédure.
- -verbose:[class | gc | jni]
  - Active le mode prolixe.
- -version
  - Affiche la version du produit.
- -X
  - Affiche l'aide concernant des options non standard.

### Options non standard

Les options -X répertoriées ci-dessous correspondent à un sous-ensemble des options disponibles. Ces options ne sont pas des options standard et peuvent être modifiées sans préavis.

- -Xargencoding
  - Permet aux options de la commande Java d'utiliser des séquences d'échappement Unicode pour représenter des caractères qui ne font pas partie du jeu de caractères de l'environnement local. Les séquences d'échappement Unicode sont au format \u####, où # correspond à un chiffre hexadécimal.
- -Xbootclasspath:<répertoires et fichiers ZIP ou JAR séparés par un point-virgule (;)>
  - Définit le chemin d'accès aux classes et aux ressources d'amorçage. Il existe d'autres méthodes pour définir le chemin d'accès aux classes d'amorçage. Voir Utilisation des chemins d'accès aux classes d'amorçage.
- -Xbootclasspath/a:<répertoires et fichiers ZIP ou JAR séparés par un point-virgule (;)>
  - Ajoute les noms de fichiers et de répertoires à la fin du chemin d'accès à la classe d'amorçage.
- -Xbootclasspath/p:<répertoires et fichiers ZIP ou JAR séparés par un point-virgule (;)>
  - Ajoute les noms de fichiers et de répertoires au début du chemin d'accès à la classe d'amorçage. Voir Utilisation des chemins d'accès aux classes d'amorçage.
- -Xcheck:jni
  - Effectue des vérifications complémentaires pour les fonctions JNI.
- -Xcheck:nabounds
  - Effectue des vérifications complémentaires pour les opérations de tableau JNI.
- -Xdebug
  - Démarre la JVM une fois le débogueur activé.
- -Xdisableexplicitgc
  - Modifie les appels de System.gc() en no-ops.
- -Xdisablejavadump
  - Désactive la fonction de vidage Java pour l'arrêt anormal du processus. Lorsque la fonction de vidage Java est désactivée, le fichier de vidage d'arrêt du processus système est exécuté. Le vidage Java est utile lorsque l'incident se produit dans le code Java. Si l'incident se produit au niveau des composants système, il peut être préférable d'utiliser le vidage système normal.
- -Xgcpolicy:{optthruput | optavgpause }
  - Définit le paramètre relatif à la récupération de place. La valeur par défaut est optthruput. Pour plus d'informations, reportez-vous à la section Définition des règles de récupération de place.
- |-Xlp |
  |
  - Demande à la machine JVM d'allouer le segment de mémoire Java (à partir duquel les objets Java sont |alloués) avec de grandes pages, dont la taille est exprimée en |méga-octets. Si aucune grande page n'est disponible, le segment Java |est alloué avec des pages Linux standard, dont la taille est |généralement de 4 ko. La machine JVM utilise shmget() pour allouer |de grandes pages au segment de mémoire. Les grandes pages sont prises |en charge par les systèmes fonctionnant sur des noyaux Linux version |2.6 ou ultérieure.
- -Xms<taille>
  - Définit la taille de segment Java initiale.
- -Xmx<taille>
  - Définit la taille de segment Java maximale.
- -Xnoclassgc
  - Désactive la collecte des classes pour la récupération de place.
- -Xoss<taille>
  - Définit la taille maximale de la pile Java pour les unités d'exécution.
- -Xquickstart
  - Réduit la durée de démarrage des applications. Si vous ne spécifiez pas cette option, la compilation initiale des méthodes est effectuée à un niveau d'optimisation élevé (en d'autres termes, JIT ne compile pas les méthodes "critiques" car elles ont déjà été compilées à un niveau d'optimisation élevé).
- -Xrs
  - Limite l'utilisation des signaux du système d'exploitation.
- -Xrunnom_bibliothèque[:options]
  - Charge les bibliothèques d'assistance. Pour charger plusieurs bibliothèques, indiquez cette option plusieurs fois sur la ligne de commande. Voici des exemples de bibliothèques :
    - -Xrunhprof[:help] | [:<option>=<valeur>, ...]
      - Définit le profil du segment, du microprocesseur ou du moniteur.
    - -Xrunjdwp[:help] | [:<option>=<valeur>, ...]
      - Charge les bibliothèques de débogage pour prendre en charge les applications de débogage éloignées.
- -Xss<taille>
  - Définit la taille maximale de la pile native pour les unités d'exécution. Pour plus de détails, reportez-vous à la rubrique Utilisation de piles flottantes.
- -Xverbosegclog:<chemin d'accès au fichier><nomfichier>[X, Y]
  - Force l'écriture de la sortie verboseGC dans le fichier spécifié. Si ce fichier existe, la sortie remplace son contenu. Si ce fichier existe mais qu'il ne peut pas être ouvert ou s'il est impossible de créer un nouveau fichier, la sortie est redirigée sur l'erreur standard. Si vous définissez les arguments entiers X et Y, la sortie verboseGC est redirigée vers un nombre Y de fichiers, chaque fichier contenant un nombre X de cycles gc pouvant générer une sortie verboseGC. Ces fichiers sont nommés nomfichier1, nomfichier2, etc.
    Remarque :
    La variable d'environnement IBM_JVM_ST_VERBOSEGC_LOG a été supprimée.
- -Xverify
  - Active des vérifications plus strictes, en anticipant sur les incidents éventuels.

## Globalisation de la commande java

La commande java et les autres commandes du programme de lancement java (telles que javaw) permettent d'indiquer un nom de classe comme n'importe quel caractère Unicode contenu dans le jeu de caractères de l'environnement local courant.

Vous pouvez indiquer n'importe quel caractère Unicode dans les arguments et le nom de classe à l'aide des séquences d'échappement Java. Pour ce faire, vous devez indiquer -Xargencoding. Pour indiquer un caractère Unicode, utilisez les séquences d'échappement au format `\u####`, où # est un caractère hexadécimal (de 0 à 9, de A à F).

Pour indiquer que le nom de classe et les arguments de commande sont en codage UTF8 ou ISO8859_1, utilisez -Xargencoding:utf8 et -Xargencoding:latin.

Dans Runtime Environment, si vous utilisez un environnement local autre que l'anglais, les commandes java et javaw affichent des messages de sortie traduits. Ces messages sont différents de ceux contenus dans la version 1.3.1, et diffèrent également selon l'environnement local dans lequel Java s'exécute. Les descriptions détaillées des erreurs et les autres informations de débogage renvoyées par la commande java sont en anglais. Les informations de débogage renvoyées pendant l'initialisation sont placées entre crochets.

## Utilisation des chemins d'accès aux classes

Dans Runtime Environment, vous pouvez indiquer un nom de classe comme nom de fichier complet comprenant un chemin d'accès complet et l'extension .class. Dans les versions précédentes de SDK, vous pouviez uniquement indiquer la classe relative à la variable CLASSPATH, et l'extension .class n'était pas autorisée. L'utilisation du nom de fichier complet vous permet de lancer une application Java à partir du bureau ou du programme de lancement du fichier. Si vous indiquez un fichier de type .class et son chemin d'accès, le chemin d'accès indiqué est ajouté à la variable CLASSPATH. Par exemple, la commande `java ~/myapp/thisapp.class` correspond à la commande `java -classpath ~/myapp thisapp`.

| | |

## Configuration de l'allocation de mémoire à grandes pages

|

L'utilisation de grandes pages est principalement destinée à améliorer les |performances des applications qui allouent une quantité de mémoire |importante et qui accèdent fréquemment à cette mémoire. |L'amélioration des performances en utilisant des grandes pages |provient principalement du nombre réduit d'échecs dans le TLB |(Translation Lookaside Buffer). En effet, le TLB mappe |une plage de mémoire virtuelle plus importante.

|

Pour configurer l'allocation de mémoire à grandes pages, vérifiez |d'abord que le noyau actif prend en charge les grandes pages. Vérifiez que le fichier /proc/meminfo |contient les lignes suivantes :

|

    HugePages_Total:     4
    |HugePages_Free:      4
    |Hugepagesize:     4096 kB

Notez que les valeurs de ces zones |dépendent du système. |Si le noyau ne prend pas en charge les grandes pages, vous devez compiler un nouveau |noyau qui les prend en charge.

|

La quantité de mémoire que vous pouvez allouer aux grandes pages |est obtenue en multipliant `HugePages_Free par |Hugepagesize`. L'administrateur système doit configurer le |nombre de grandes pages du système pour satisfaire les exigences des |segments de mémoire Java. Il peut configurer le nombre de grandes |pages en éditant le fichier /proc/sys/vm/nr_hugepages.

|

Parfois, si le système dispose d'un nombre de grandes pages libres disponibles |adéquat, l'appel de shmget() pour l'allocation de mémoire à grandes |pages échoue. Cet échec vient du fait que les grandes pages ne sont |pas contigües. Pour l'empêcher, l'administrateur système doit |spécifier l'option `hugepages=<n>` au démarrage du |système (et non ultérieurement via /proc).

|

La fonction shmget(), qui utilise shmmax, alloue de la mémoire à |grandes pages. Pour modifier la |valeur de shmmax, éditez le fichier /proc/sys/kernel/shmmax.

|

Notez que la fonction shmget() n'aboutit que si elle est exécutée |par l'utilisateur root. Pour utiliser des grandes pages, vous pouvez |exécuter Java en tant qu'utilisateur root ou définir le bit suid du |programme exécutable Java.

## Utilisation des chemins d'accès aux classes d'amorçage

Vous pouvez définir la propriété système ibm.jvm.bootclasspath à l'aide de l'option -D décrite dans le document Lancement d'une application Java. La valeur de cette propriété est utilisée comme chemin d'accès supplémentaire et est insérée entre une valeur définie par -Xbootclasspath/p: et le chemin d'accès aux classes d'amorçage. Le chemin d'accès aux classes d'amorçage est le chemin d'accès par défaut ou celui qui est défini avec l'option -Xbootclasspath:.

Ne déployez pas des applications qui utilisent l'option -Xbootclasspath: ou -Xbootclasspath/p: pour remplacer une classe dans core.jar, graphics.jar, server.jar, security.jar, xml.jar, tools.jar ou charsets.jar. En effet, ce type de déploiement serait contraire aux termes de la licence du code binaire de Java 2 Runtime Environment.

## Définition des règles de récupération de place

L'option d'exécution JVM -Xgcpolicy indique les règles de récupération de place.

-Xgcpolicy accepte les valeurs optthruput (valeur par défaut) et optavgpause. Cette option contrôle le comportement du récupérateur en établissant des compromis entre le débit de l'application et l'ensemble du système et les délais d'interruption nécessités par la récupération de place.

Le format et les valeurs de cette option sont les suivants :

> -Xgcpolicy:optthruput

> -Xgcpolicy:optavgpause

### Délai d'interruption

Lorsque l'espace disponible dans le segment ne permet pas à une application de créer un objet, la fonction de récupération de place identifie les objets non référencés et les supprime, ce qui rétablit l'état du segment et permet de répondre rapidement aux demandes d'affectation de ressources actuelles et ultérieures. Des cycles de récupération de place de ce type génèrent parfois des interruptions inattendues dans l'exécution du code d'application. Dans la mesure où la taille et la complexité des applications augmentent, la taille des segments s'accroît et les interruptions causées par le processus de récupération de place deviennent plus longues et plus gênantes. La valeur de récupération de place par défaut, optthruput, offre un débit très élevé aux applications, au prix d'interruptions fréquentes, d'une durée comprise entre quelques millisecondes et plusieurs secondes, selon la taille du segment et la quantité de place à récupérer.

### Réduction du délai d'interruption

L'option optavgpause réduit sensiblement la durée des interruptions générées par le processus de récupération de place et réduit l'impact de l'augmentation de taille du segment sur la durée des interruptions. L'effet de cette option est le plus sensible dans des configurations comportant des segments de grande taille. Pour réduire les délais d'interruption, des opérations de récupération de place doivent être effectuées en même temps que l'exécution normale du programme. Ainsi, vous noterez une certaine baisse du débit de l'application (ce débit est variable d'une application à l'autre).

### Environnements à segments très saturés

Si le segment Java est proche de la saturation et que la place à récupérer est très limitée, les demandes de nouveaux objets ne sont pas satisfaites rapidement car aucun espace n'est disponible immédiatement. Si le segment est utilisé au maximum de sa capacité ou presque, une baisse de performances se produit au niveau des applications, indépendamment du réglage des options définies ci-dessus. Si des demandes d'espace supplémentaire sont effectuées, l'application reçoit une exception OutofMemory qui entraîne l'arrêt de la JVM si cette dernière n'est pas interceptée et traitée. A ce stade, la machine JVM génère deux fichiers de diagnostic : un fichier Heapdump et un fichier Javadump. Ces fichiers sont détaillés dans le document Diagnostics Guide for Java 1.4.2 et permettent de déterminer l'origine de l'affectation élevée du segment de mémoire Java. Le document Diagnostics Guide se trouve sur le site developerWorks, à l'adresse suivante : http://www-106.ibm.com/developerworks/java/jdk/diagnosis/. Dans ces cas de figure, il est recommandé d'augmenter la taille du segment à l'aide de l'option -Xmx ou de réduire le nombre d'objets d'application utilisés.

### Informations complémentaires sur la récupération de place

Pour plus de détails sur la récupération de place, reportez-vous aux documents suivants :

http://www.ibm.com/developerworks/ibm/library/i-garbage1/

http://www.ibm.com/developerworks/ibm/library/i-garbage2/

http://www.ibm.com/developerworks/ibm/library/i-garbage3/

# Traitement des signaux par la JVM

En cas de signal pertinent pour la JVM, un gestionnaire de signaux est appelé. Il détermine s'il a été appelé pour une unité d'exécution Java ou non Java. Si le signal concerne une unité d'exécution Java, la JVM prend le contrôle du traitement du signal. Si le signal concerne une unité d'exécution non Java, et que l'application qui a installé la JVM a déjà installé un gestionnaire spécifique pour ce signal, le contrôle est passé à ce gestionnaire. Sinon, le signal est ignoré (qu'il s'agisse ou non de l'action par défaut pour ce signal).

En cas de signaux d'exception ou d'erreur, la JVM effectue l'une des opérations suivantes :

- elle traite la condition et procède à une récupération (lorsque l'exception est due au code de votre application) ou
- elle démarre une séquence d'arrêt contrôlé avec les actions suivantes :
  1. elle appelle le gestionnaire de signaux de votre application pour le signal en question ;
  2. elle génère un vidage Javadump pour décrire l'état de la JVM au point de défaillance ;
  3. elle appelle un point d'abandon installé par l'application ;
  4. elle effectue le nettoyage nécessaire afin que la procédure d'arrêt s'effectue correctement.

Pour plus d'informations sur la manière d'écrire un programme de lancement spécifiant les points d'ancrage cités précédemment, voir : http://www-106.ibm.com/developerworks/java/library/i-signalhandling/. Ce document a été écrit pour Java version 1.3.1, mais il s'applique également aux versions ultérieures.

En cas de signaux d'interruption, la JVM démarre également une séquence d'arrêt contrôlé, mais cette fois, elle l'exécute comme un arrêt normal :

- elle appelle le gestionnaire de signaux de votre application pour le signal en question ;
- elle exécute tous les points d'arrêt de l'application ;
- elle appelle un point de sortie installé par l'application ;
- elle effectue le nettoyage nécessaire.

La procédure de fermeture est identique à celle démarrée par un appel de la méthode Java `System.exit()`.

D'autres signaux utilisés par la JVM sont réservés à des fins de contrôle interne et ne provoque pas l'arrêt de la JVM. Le seul signal de contrôle intéressant est SIGQUIT qui entraîne un vidage Javadump.

## Signaux utilisés par la JVM

Le tableau tableau 1 ci-dessous indique les signaux utilisés par la JVM. Ces signaux ont été groupés par type ou par utilisation.

- Exceptions : Le système d'exploitation déclenche de façon synchrone une signal d'exception approprié en cas de condition d'erreur fatale.
- Erreurs : La JVM déclenche un signal SIGABRT si elle détecte une condition à partir de laquelle aucune récupération n'est possible.
- Interruptions : Les signaux d'interruption sont déclenchés de façon asynchrone, en dehors d'un processus JVM, et visent à demander l'arrêt.
- Contrôles : D'autres signaux sont utilisés par la JVM à des fins de contrôle.

Tableau 1. Signaux utilisés par la JVM
Nom du signal | Type de signal | Description | Désactivé par -Xrs
--- | --- | --- | ---
SIGSEGV | Exception | Accès incorrect à la mémoire (écriture dans une mémoire inaccessible) | Non
SIGILL | Exception | Instruction non conforme (tentative d'appel d'une instruction machine inconnue) | Non
SIGFPE | Exception | Exception en virgule flottante (division par zéro) | Non
SIGBUS | Exception | Erreur de bus (tentative d'adressage d'un emplacement de mémoire inexistant) | Oui
SIGSYS | Exception | Emission d'un appel système incorrect | Oui
SIGXCPU | Exception | Temps d'unité centrale maximal atteint (durée d'exécution trop longue) | Oui
SIGXFSZ | Exception | Taille de fichier maximale atteinte | Oui
SIGABRT | Erreur | Arrêt anormal. La JVM déclenche ce signal si elle détecte un incident JVM. | Oui
SIGINT | Interruption | Attention interactive (Ctrl-C). JVM s'arrête normalement. | Oui
SIGTERM | Interruption | Demande d'arrêt. JVM s'arrête normalement. | Oui
SIGHUP | Interruption | Arrêt de l'exécution. JVM s'arrête normalement. | Oui
SIGUSR1 | Contrôle | Défini par l'utilisateur. Utilisé par certaines JVM à des fins de contrôle interne. | Non
SIGUSR2 | Contrôle | Défini par l'utilisateur. Utilisé par certaines JVM à des fins de contrôle interne. | Non
SIGQUIT | Contrôle | Signal d'arrêt pour un terminal. Utilisé par la JVM pour des vidages Javadump. | Oui
SIGTRAP | Contrôle | Utilisation en interne par dbx ou ptrace. Utilisé par certaines JVM à des fins de contrôle interne. | Non
SIGPIPE | Contrôle | Opération d'écriture dans un canal qui n'est pas en cours de lecture. Ignoré par la JVM. | Non

Utilisez l'option -Xrs (réduction de l'utilisation des signaux) pour empêcher la JVM de traiter la plupart des signaux. Pour plus d'informations, reportez-vous à la page du programme de lancement d'applications Java (http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html.

Les signaux `1 (SIGHUP)`, `2 (SIGINT)`, `4 (SIGILL)`, `6 (SIGABRT)`, `7 (SIGEMT)`, `8 (SIGFPE)` , `10 (SIGBUS)`, `11 (SIGSEGV)`, `12 (SIGSYS)`, `15 (SIGTERM)`, `24 (SIGXCPU)` provoquent l'arrêt de la JVM. Par conséquent, un gestionnaire de signaux d'application ne doit tenter aucune récupération à partir de ces signaux à moins qu'il n'ait plus besoin des services de la JVM.

## Création d'un lien entre un pilote de code natif et une bibliothèque de chaînage de signaux

L'environnement d'exécution dispose d'une fonction de chaînage de signaux. Cette fonction permet à la JVM d'interagir plus efficacement avec du code natif qui installe ses propres gestionnaires de signaux.

La fonction de chaînage de signaux permet à une application de créer un lien vers la bibliothèque partagée libjsig.so et de la charger avant les bibliothèques système. La bibliothèque libjsig.so garantit l'interception des appels à `signal()`, `sigset()` et `sigaction()`, par exemple, afin que leurs gestionnaires ne remplacent pas les gestionnaires de signaux de la JVM. Ces appels enregistrent les nouveaux gestionnaires de signaux ou les "chaînent" à la suite des gestionnaires qui sont installés par la JVM. Par la suite, lorsque l'un des ces signaux est déclenché ou qu'il s'avère qu'il s'adresse à la JVM, les gestionnaires préinstallés sont appelés.

Pour utiliser libjsig.so :

- Liez la bibliothèque à l'application qui crée ou incorpore une JVM à l'aide de la commande suivante :

      gcc -L$JAVA_HOME/bin -ljsig
      	-L$JAVA_HOME/bin/classic -ljvm application_java.c

  ou
- Utilisez la variable d'environnement LD_PRELOAD comme suit :

      export LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<application_java> (bash et ksh)

      setenv LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<application_java> (csh)

  (si `RACINE_JAVA` est configuré ; sinon, utilisez /opt/IBMJava2-142/jre.)

Si vous installez des gestionnaires de signaux qui utilisent `sigaction()`, certains indicateurs sa_flags ne sont pas respectés lorsque la JVM utilise ce signal. Ces indicateurs sont les suivants :

- SA_NOCLDSTOP - Toujours désactivé.
- SA_NOCLDWAIT - Toujours désactivé.
- SA_RESTART - Toujours activé.
- SA_ONSTACK - Toujours activé (SIGSEGV seulement) pour Linux IA et zSeries et désactivé pour Linux PPC.

La bibliothèque libjsig.so masque également les gestionnaires de signaux JVM pour l'application. Ainsi, les appels tels que `signal()`, `sigset()` et `sigaction()` qui sont effectués après le démarrage de la JVM ne renvoient plus de référence au gestionnaire de signaux de la JVM mais à n'importe quel gestionnaire déjà installé avant le démarrage de la JVM.

| | |

# Implémentation du pool de gestionnaires de connexions pour RMI

|

Le regroupement d'unités d'exécution pour les gestionnaires de |connexions RMI n'est pas activé par |défaut.

|

Pour activer le regroupement de connexions implémenté au niveau du |transport TCP du RMI, définissez l'option

|

    -Dsun.rmi.transport.tcp.connectionPool=true (ou toute valeur non NULL)

|

Cette version de Runtime Environment ne contient pas de paramètre |permettant de restreindre le nombre d'unités d'exécution du pool de |connexions.

# Obtention du numéro de compilation et de version IBM

Pour obtenir le numéro de compilation et de version du logiciel, entrez la commande suivante à l'invite du shell :

`java -version`

# (Linux IA 32 bits uniquement) Utilisation du plug-in Java

L'extension Java est un plug-in de navigateur Web. Si vous utilisez l'extension Java, vous pouvez désactiver la machine JVM par défaut de votre navigateur et la remplacer par un environnement d'exécution pour exécuter des applets ou des beans dans le navigateur.

Pour plus d'informations sur le plug-in Java, reportez-vous au site Web de Sun à l'adresse suivante : http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/.

Le plug-in Java ne prend pas en charge la fonction d'impression avec cette édition de SDK.

Le plug-in Java est pris en charge sur Netscape 4, Netscape 6 et Mozilla, comme fourni par votre distribution.

## Installation et configuration du plug-in Java pour Netscape 6 et Mozilla

Pour installer et configurer le plug-in Java pour Netscape 6 ou Mozilla, créez un lien symbolique entre le fichier de bibliothèque /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so et le répertoire plugins de votre navigateur (/chemin-installation-navigateur/plugins).

Si vous voulez mettre le plug-in Java à disposition de tous les utilisateurs du système, procédez comme suit :

1. Connectez-vous en tant que root.
2. Créez un lien symbolique entre le fichier de bibliothèque /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so et le répertoire des plug-ins de Mozilla ou Netscape (en général, /usr/local/mozilla/plugins/ (ou netscape), bien qu'il puisse varier dans certaines distributions).

       ln -s /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so \
          /usr/local/mozilla/plugins/

Remarque :
Il est préférable de créer un lien symbolique avec le fichier libjavaplugin_oji.so plutôt que de le copier, sinon, il serait alors incapable de trouver l'emplacement de la JVM.

## Installation et configuration du plug-in Java pour Netscape 4

Pour installer et configurer le plug-in Java pour Netscape 4, créez un lien symbolique entre le fichier de bibliothèque /opt/IBMJava2-142/jre/bin/javaplugin.so et le répertoire des plug-ins de votre navigateur (/chemin-installation-navigateur/plugins).

Si vous voulez mettre le plug-in Java à disposition de l'utilisateur actuel, procédez comme suit :

1. Créez un répertoire plugins dans le répertoire $HOME/.netscape (s'il n'a pas déjà été créé).
2. Créez un lien symbolique entre le fichier de bibliothèque /opt/IBMJava2-142/jre/bin/javaplugin.so et /$HOME/.netscape/plugins.

Si vous voulez mettre le plug-in Java à disposition de tous les utilisateurs du système, procédez comme suit :

1. Connectez-vous en tant que root.
2. Créez un lien symbolique dans le fichier de bibliothèque /opt/IBMJava2-142/jre/bin/javaplugin.so, dans le répertoire des plug-ins (en général, /usr/local/netscape/plugins/, bien qu'il puisse varier dans certaines distributions).

       ln -s /opt/IBMJava2-142/jre/bin/javaplugin.so \
          /usr/local/netscape/plugins/

Remarque :
Il est préférable de créer un lien symbolique avec le fichier javaplugin.so plutôt que de le copier, sinon, il serait alors incapable de trouver l'emplacement de la JVM.

## Utilisation du plug-in Java avec des navigateurs Mozilla compilés gcc3.2.x

Si vous utilisez une distribution livrée avec un navigateur Mozilla compilé gcc3.2.x (SLES8, Suse8.1), vous devez utiliser les bibliothèques de plug-ins compilées gcc3 livrées avec IBM SDK pour Linux, version 1.4.2 : libjavaplugin_ojigcc3.so et libjavaplugin_jnigcc3.so. Pour utiliser ces bibliothèques, créez un lien symbolique vers libjavaplugin_ojigcc3.so, dans le répertoire <rép_installation_mozilla>/plugins :

    ln -s <sdkdir>/jre/bin/libjavaplugin_ojigcc3.so libjavaplugin_ojigcc3.so

## Utilisation des paramètres DBCS

Le plug-in Java prend en charge les caractères double octet (par exemple, le chinois traditionnel BIG-5, le coréen et le japonais) en tant que paramètres pour les balises `<APPLET>`, `<OBJECT>` et `<EMBED>`. Vous devez sélectionner le codage des caractères correct pour le document HTML de sorte que le plug-in Java puisse analyser le paramètre. Indiquez le codage des caractères pour le document HTML à l'aide de la balise `<META>` dans la section `<HEAD>`, comme suit :

    <meta http-equiv="Content-Type" content="text/html; charset=big5">

Cet exemple demande au navigateur d'analyser le fichier HTML à l'aide de l'encodage de caractères Chinese BIG-5. Tous les paramètres sont transmis correctement au plug-in Java. Cependant, il est possible que certaines des versions plus anciennes des navigateurs ne comprennent pas correctement cet indicateur. Dans ce cas, vous pouvez obliger le navigateur à ignorer cet indicateur, mais vous devrez peut-être modifier le codage manuellement.

Vous pouvez indiquer le codage à utiliser pour analyser le fichier HTML :

- Netscape 4 : Menu Affichage -> Jeu de caractères
- Mozilla : Menu Affichage -> Codage des caractères

# (Linux IA 32 bits uniquement) Utilisation de Web Start

Java Web Start permet de déployer les applications basées sur la technologie Java. Il connecte l'ordinateur à Internet et permet à l'utilisateur de lancer et de gérer des applications directement à partir du Web. Java Web Start permet d'activer les applications en un seul clic, et vérifie que vous utilisez toujours la version la plus récente, éliminant les procédures d'installation ou de mise à niveau. Souvent, la distribution des logiciels sur Internet requiert que vous trouviez le programme d'installation sur le Web, que vous le téléchargiez, que vous le localisiez et que vous l'exécutiez. Une fois que vous avez exécuté le programme d'installation, vous devez indiquer les répertoires d'installation et les options d'installation (complète, standard ou minimale). Cette tâche peut s'avérer longue et complexe, et doit être répétée pour chaque nouvelle version du logiciel.

A l'inverse, les applications déployées sur le Web, telles que l'agenda ou le client de messagerie électronique, sont simples à installer et à utiliser. Le navigateur Web a automatisé le processus. Vous n'avez plus à effectuer des étapes de téléchargement et de configuration complexes, et vous êtes sûr d'exécuter la version la plus récente. Java Web Start offre les mêmes avantages aux applications complètes.

Pour plus d'informations sur Java Web Start, consultez les sites Web suivants : http://java.sun.com/products/javawebstart et http://java.sun.com/j2se/1.4.2/docs/guide/jws/index.html .

## Installation de Java Web Start

Le script d'installation de Java Web Start est installé avec la machine JRE pour Java version 1.4.2.

Le script est appelé /opt/IBMJava2-142/jre/bin/webstart_install_sdk.sh. Exécutez le script pour utiliser Web Start. Définissez le répertoire de travail courant sur l'emplacement où vous souhaitez installer Java Web Start. La procédure d'installation crée un sous-répertoire appelé javaws dans le répertoire de travail courant.

La procédure d'installation met également à jour les types MIME utilisés par Mozilla et par les autres navigateurs.

Vous pouvez appeler Web Start de trois manières différentes :

1. Sélectionnez un lien sur une page Web qui fait référence à un fichier .jnlp.
2. Démarrez javaws à partir du répertoire javaws créé ci-dessus afin d'afficher la boîte de dialogue de Java Web Start à partir de laquelle les applications peuvent être sélectionnées.
3. A l'invite du script shell, tapez `javaws <URL>`, où `<URL>` est l'emplacement d'un fichier .jnlp.

Ces opérations entraînent le démarrage de l'application sélectionnée par Web Start. Si vous utilisez l'application pour la première fois, elle est téléchargée. Lors des appels suivants, le site Web d'origine est consulté pour rechercher les éventuelles mises à jour disponibles. Web Start télécharge ces mises à jour avant le démarrage de l'application.

En cas d'erreur au niveau d'un jnlp (par exemple, un nom de balise incorrect), Web Start s'interrompt sans afficher de message d'erreur.

# Utilisation des piles flottantes

Sur un système Linux sans piles flottantes, chaque unité d'exécution a une taille de pile native minimale de 256 ko, quelle que soit la valeur définie pour -Xss. Sur un système à piles flottantes, les valeurs de l'option -Xss sont respectées. Si vous effectuez une migration à partir d'un système Linux à piles non flottantes, vous devez vous assurer que les valeurs de l'option -Xss sont suffisamment élevées et ne sont pas basées sur une valeur minimale de 256 Ko.

(Linux IA 32 bits uniquement) Certaines distributions Linux (RedHat, par exemple) comportent une fonction appelée "piles flottantes" ("floatings stacks"). En raison des limitations liées au noyau Linux, la JVM ne fonctionnera pas sur le matériel SMP comportant des piles flottantes si le niveau du noyau est inférieur au niveau 2.4.10. Dans cet environnement, les piles flottantes doivent être désactivées avant que la JVM ou une application démarrant la JVM ne soit lancée. Sous RedHat, les piles flottantes sont désactivées en exportant une variable d'environnement de la façon suivante :

    export LD_ASSUME_KERNEL=2.2.5

# Changement de méthode de saisie sur un système DBCS

Pour changer de méthode de saisie sur un système DBCS, vous devez utiliser la classe java.util.prefs.Preferences plutôt que les variables d'environnement IBMJAVA_INPUTMETHOD_SWITCHKEY et IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS. Pour plus d'informations, reportez-vous à la section Sun's Input Method Framework Specification.

# Installation d'une application sur le système d'un utilisateur

Une fois votre application développée et prête à être commercialisée, vous devez l'installer sur le système d'un utilisateur, configurer ce système pour qu'il prenne en charge votre application, et configurer l'environnement d'exploitation.

Si vous utilisez Runtime Environment for Linux, vous devez vérifier que votre procédure d'installation ne remplace pas une installation existante (sauf s'il s'agit d'une version antérieure de Runtime Environment for Linux).

Pour redistribuer Runtime Environment for Linux, vous pouvez l'installer sur votre système, puis copier les fichiers Runtime Environment requis dans votre module d'installation. Si vous adoptez cette méthode, vous devez impérativement inclure tous les fichiers fournis avec Runtime Environment for Linux. Le logiciel Runtime Environment for Linux ne peut être redistribué que dans son intégralité. En effet, l'application que vous distribuez comporte sa propre copie de Runtime Environment for Linux.

Pour des informations spécifiques sur les fichiers à redistribuer, reportez-vous au contrat de licence relatif au produit.

# Restrictions d'utilisation

Les sections suivantes décrivent les restrictions d'utilisation de Runtime Environment pour Linux.

## Limitations applicables à toutes les plateformes Linux, sauf indication contraire

- Si vous utilisez KDE (K Desktop Environment), vous ne pourrez peut-être pas utiliser le presse-papiers du système avec DBCS pour copier les informations entre les applications Linux et Java.
- SDK met en oeuvre des unités d'exécution en mode natif, chacune étant ainsi exécutée comme un processus Linux. Si le nombre d'unités Java dépasse le nombre maximal de processus autorisé, votre programme pourra recevoir un message d'erreur SIGSEGV ou s'arrêter.

  Le nombre d'unités d'exécution disponibles est déterminé au minimum par les éléments suivants :

  - le nombre de processus utilisateur (ulimit -u) dans /etc/security/limits.conf,
  - la limite définie dans /proc/sys/kernel/threads_max,
  - la limite PTHREAD_THREADS_MAX définie dans libpthreads.so (glibc doit être recompilé).

  Toutefois, il se peut que vous n'ayez plus assez de mémoire de stockage avant d'atteindre le nombre maximal d'unités d'exécution.

- Si vous avez mis fin à une application Java avec Ctrl-C, plusieurs processus peuvent restés orphelins.
- Les boîtes de dialogue créées avec Swing peuvent ne s'afficher qu'au bout de quelques secondes.
- Les résultats KeyEvents qui impliquent l'utilisation de la touche ALT diffèrent selon le gestionnaire de fenêtres utilisé dans Linux. Ils diffèrent également en fonction du système d'exploitation. Avec le gestionnaire de fenêtres Enlightenment, Alt+A et Maj+Alt+A produisent des modificateurs différents, alors que Ctrl+Alt+A ne produit aucun événement de touche. Par contre, avec le gestionnaire de fenêtres WindowMaker, Ctrl+Alt+A produit un événement de touche.
- Avec Linux X Window System, les codes clavier sont définis comme suit: 64 0xffe9 (Alt_L) 0xffe7 (Meta_L) et 113 0xffea (Alt_R) 0xffe8 (Meta_R). Pour vérifier ces touches, entrez la commande suivante à l'invite du shell :

      xmodmap -pk

  Ceci explique pourquoi les touches Meta et Alt sont activées ensemble dans SDK. Comme solution palliative, vous pouvez supprimer la définition Meta_x en entrant la commande suivante à l'invite du shell:

      xmodmap -e "keysym Alt_L = Alt_L" -e "keysym Alt_R = Alt_R"

  Remarque :
  Cette solution peut affecter d'autres applications X-Window exécutées sur le même écran si elles utilisent la touche Meta que vous avez supprimée.
- La création de paires de clés DSA de longueur différente risque de prendre beaucoup de temps sur des machines lentes. Ce délai ne doit pas être interprété comme un arrêt et le processus ira à son terme si on lui laisse le temps. L'algorithme de génération des clés DSA a été optimisé pour générer des longueurs de clé standard (par exemple, 512, 1024) plus rapidement que les autres longueurs.
- Les programmes natifs ne peuvent pas créer une JVM 1.1. Il est impossible d'appeler JNI_CreateJavaVM() et de lui transmettre une version de JNI_VERSION_1_1(0x00010001). Les versions pouvant être transmises sont les suivantes :
  - JNI_VERSION_1_2(0x00010002)
  - JNI_VERSION_1_4(0x00010004)

  Dans chaque cas, la JVM créée correspond à celle spécifiée par les bibliothèques (soit, 1.2.2, 1.3.x, 1.4.x) et non à celle impliquée par l'interface JNI. L'interface API n'affecte pas la spécification du langage qui est mise en oeuvre par la JVM, les API de bibliothèques de classes ou tout autre comportement de la JVM. L'interface API spécifie uniquement comment le code natif peut appeler le comportement requis.

- Dans la version en chinois traditionnel, les touches de fonction Entrée, Espace, Retour arrière et Echap ne fonctionnent pas comme prévu lorsque vous utilisez les éditeurs IME LinYi ZhuYin, YiTian ZhuYin et Bosham pour saisir les caractères TCH. La touche Entrée permet d'insérer une ligne, la touche Echap permet d'annuler les chaînes de pré-édition ou la fenêtre candidate, et la barre d'espacement permet d'insérer des espaces. La fenêtre candidate doit disparaître une fois que vous avez appuyé sur la touche de validation, et ne doit pas réapparaître lorsque vous appuyez sur la touche Retour en arrière pendant que vous utilisez les éditeurs IME LinYi ZhuYin, YiTian ZhuYin et Bosham pour saisir les caractères en chinois traditionnel.
- Si vous exécutez de nombreuses unités d'exécution concurrentes, le message suivant peut s'afficher : `java.lang.OutOfMemoryError`. Il indique que votre machine commence à manquer de ressources et les messages peuvent avoir les raisons suivantes :
  1. Aucune nouvelle unité d'exécution ne peut être créée car :
     - Le nombre maximal de processus créés a été atteint.
     - Les ressources système sont insuffisantes pour créer de nouvelles unités d'exécution. Dans ce cas, d'autres exceptions Java peuvent s'afficher, selon le système sur lequel s'exécute votre application.
  2. La mémoire du noyau est insuffisante ou fragmentée. Les messages noyau correspondants et dont l'ID processus a été arrêté à l'aide de la commande kill sont consignés dans le fichier /var/log/messages.
  Essayez d'optimiser votre système pour augmenter les ressources système correspondantes.
- Pendant l'installation, si vous avez déjà installé une version antérieure de ce produit distribué par Red Hat, le gestionnaire RPM (Red Hat Package Manager) signalera que la version du module IBM est antérieure à toute version du produit distribué par Red Hat. Cette condition est due au fait que Red Hat ajoute un "numéro de série" au module RPM, ce qui remplace le schéma de contrôle des versions pour le module et, par défaut, RPM refuse d'installer un module qui apparaît être antérieur à celui déjà installé. Vous pouvez installer le nouveau module IBM à l'aide de l'option --oldpackage de la commande rpm.
- Dans SDK version 1.4.2, les performances des applications exécutées sur des machines SMP (symmetric multiprocessor machines) sur SLES 8 sont meilleures lorsque l'implémentation des moniteurs Java par est modifiée par IBM JVM. Comme pour la plupart des applications, les performances sont meilleures ou identiques, le nouvel algorithme est désormais appliqué par défaut. Si par contre, le nouveau paramètre par défaut diminue les performances de votre machine JVM, vous pouvez restaurer l'ancien algorithme en définissant la variable d'environnement suivante : `export IBM_JVM_MONITOR_OLD=<toute valeur>`.

  Pour plus d'informations, reportez-vous au document Diagnostics Guide for v1.4.2.

- Lorsque vous exécutez une application java awt/swing sur une machine Linux et que vous en exportez l'affichage sur une seconde machine, certaines boîtes de dialogue risquent de ne pas s'afficher si le jeu de polices chargé sur la machine client X est différent de celui chargé sur la machine serveur X. Cet incident est plus particulièrement constaté sur SLES8 avec des environnements locaux chinois, lorsque l'installation par défaut de la version serveur installe des polices arphic, mais que l'installation par défaut du client ne les installe pas. Pour éviter cet incident, installez les mêmes polices sur les deux machines.
- |Si l'environnement local de votre système utilise un codage UTF-8, |certains outils SDK peuvent générer une exception sun.io.MalformedInputException. Pour |savoir si votre système utilise un codage UTF-8, vérifiez si les variables d'environnement |spécifiques à l'environnement local, telles que LANG et LC_ALL se terminent par le suffixe ".UTF-8". Si l'exception |sun.io.MalformedInputException est générée, changez les caractères qui ne se trouvent pas |dans la plage des caractères ASCII sur 7 bits (0x00 - 0x7f) et qui ne sont pas |représentés comme littéraux de caractère Java Unicode (par exemple : '\u0080'). Vous |pouvez également résoudre cet incident en supprimant le suffixe ".UTF-8" des variables |d'environnement spécifiques à l'environnement local (par exemple, si l'environnement |local par défaut de votre machine est "en_US.UTF-8", affectez la valeur "en_US" à la |variable LANG. | |
  Remarque :
  |
  Certaines distributions |de RedHat, y compris Redhat9 et RHEL3, utilisent le codage UTF-8 par défaut.
  |
  |
- |Si vous utilisez AMI et xcin dans un environnement multiplateforme (par |exemple, si vous essayez d'exporter l'affichage entre un système 32 bits et un système 64 |bits ou entre un système big-endian et un système little-endian), certains incidents |peuvent survenir. Dans ce cas, adressez-vous à votre distributeur Linux. |
  |
- |Sur Redhat Enterprise Linux 3.0, les caractères chinois risquent de |ne pas s'afficher dans les composants de texte AWT, excepté pour les caractères GB2312 |de l'environnement local chinois GB18030. |
  |

## Limitations de Linux IA 32 bits

- Le plug-in Java ne prend pas en charge la fonction d'impression avec cette édition de SDK.
- La version coréenne de SLES 8 risque de ne pas afficher les caractères coréens. Pour résoudre cela, installez le package rpm "baekmuk-ttf", puis exécutez `SUSEconfig` :

        # touch /usr/X11R6/lib/X11/fonts/truetype/fonts.scale.baekmuk
        # SUSEconfig

- Pour les utilisateurs de texte arabe, si Linux est utilisé avec une carte vidéo Matrox et que l'accélération est activée, les caractères sont déformés à l'écran lorsque drawString est utilisé pour afficher de grandes polices. Cet incident provient du pilote de ces cartes. La solution recommandée consiste à désactiver l'accélération pour la carte.

## Limitations de Linux PPC 32 bits et 64 bits

- Si le code Java utilise des appels JNI et qu'un de ces appels contient plus de huit paramètres float ou double, le code C doit être compilé à l'aide du GNU C Compiler (GCC) gcc-2.95.3 niveau Free Software Foundation (FSF).
- Si vous utilisez XFree86 version 3.x, vous recevrez peut-être une erreur SIGSEGV. Nous vous conseillons donc d'utiliser XFree86 version 4.x.
- Si la date définie est antérieure à 1970, vous recevez une erreur de type exception lorsque vous tentez de démarrer Java. Pour éliminer ce problème, mettez le poste à la date du jour manuellement :

## Limitations de Linux PPC 32 bits

- Les CD d'installation de SLES 8.0 pour PowerPC n'incluent pas de polices chinoises TrueType adéquates pour que Java puisse afficher correctement les caractères chinois. Installez le package ttf-hanyi-20021016-0.noarch.rpm à partir d'United Linux 1.0 pour améliorer l'affichage des polices chinoises.

## Limitations de Linux zSeries 64 bits

Les limitations suivantes s'appliquent aux utilisateurs des versions chinoises, taïwanaises et coréennes sur Linux zSeries 64 bits :

- Les serveurs IMS (input method server) chinois et taïwanais (xcin) n'ont pas été testés avec la version 1.4.2.
- Dans la version en chinois simplifié, certains caractères chinois risquent de ne pas s'afficher. Pour éviter cet incident, téléchargez la police TrueType suivante dans SLES8 pour votre système zSeries 64 bits :
  - ttf-hanyi-20021016-0
  Cette police est disponible sur le site Web de SUSE, à l'adresse suivante : http://www.suse.com/index_us.html.
- Dans la version en chinois traditionnel, certains caractères chinois risquent de ne pas s'afficher. Pour éviter cet incident, téléchargez les polices TrueType suivantes dans SLES8, qui sert de client graphique :
  - ttf-arphic-bkai00mp-20001125-103
  - ttf-arphic-gbsn00lp-20001125-103
  - ttf-arphic-gkai00mp-20001125-103
  - ttf-arphic-bsmi00lp-20001125-103
  - ttf-arphic-20001125-323
  Les polices sont disponibles sur le site Web de SUSE, à l'adresse suivante : http://www.suse.com/index_us.html.

## Limitations de Linux zSeries 32 bits et 64 bits

- Si vous utilisez des composants audio sur une machine sans carte son, il est possible qu'un message d'erreur s'affiche pour signaler que la mémoire est insuffisante lorsque Java tente de diffuser un son. Ce message s'affiche dans la console mais il n'a pas d'incidence sur l'application Java.
- Bien que le noyau Linux fourni dans les distributions Linux courantes prenne en charge le protocole Internet version 6 (IP6), il se peut que vous ayez des difficultés à l'utiliser. Le support d'IP6 à partir de Java est inclus dans cette version, mais il est conseillé de le désactiver à l'aide de l'option -Djava.net.preferIPv4Stack=true de la commande Java. Si vous installez un noyau assurant le support intégral d'IP6, vous n'avez pas besoin de cette option.

# Commentaires sur ce guide utilisateur

Si vous avez des commentaires, sur l'utilité de ce guide, ou toute autre remarque ou suggestion, n'hésitez pas à nous en faire part en nous les envoyant aux coordonnées indiquées plus bas. Vous pouvez nous envoyer vos questions "non techniques" ou tout commentaire relatif à notre documentation. Veuillez nous envoyer vos commentaires :

- Par courrier électronique à idrcf@hursley.ibm.com.
- Par télécopie :
  - Depuis le Royaume-Uni : 01962 842327
  - Depuis les autres pays :<code international>44 1962 842327
- Par la poste à :
  IBM United Kingdom Ltd
  User Technologies,
  Mail Point 095
  Hursley Park
  Winchester
  Hampshire
  SO21 2JN United Kingdom

Mention en petits caractères. Tout commentaire ou document envoyé à IBM, tels que les questions, les commentaires, les suggestions ou ce qui est relatif au contenu de tels documents, sera considéré comme non confidentiel. IBM n'est assujettie à aucune sorte d'obligation relative à de telles informations et a le droit de reproduire, utiliser, divulguer, transformer ou créer des produits dérivés sans restriction. En outre, IBM a le droit d'utiliser les idées, concepts, savoir-faire ou techniques contenus dans de tels documents dans un but quelconque, y compris le développement, la fabrication et la commercialisation des produits.

# Remarques

Le présent document peut contenir des informations ou des références concernant certains produits, logiciels ou services IBM non annoncés dans ce pays. Pour plus de détails, référez-vous aux documents d'annonce disponibles dans votre pays, ou adressez-vous à votre partenaire commercial IBM. Toute référence à un produit, logiciel ou service IBM n'implique pas que seul ce produit, logiciel ou service puisse être utilisé. Tout autre élément fonctionnellement équivalent peut être utilisé, s'il n'enfreint aucun droit d'IBM. Il est de la responsabilité de l'utilisateur d'évaluer et de vérifier lui-même les installations et applications réalisées avec des produits, logiciels ou services non expressément référencés par IBM.

IBM peut détenir des brevets ou des demandes de brevet couvrant les produits mentionnés dans le présent document. La remise de ce document ne vous donne aucun droit de licence sur ces brevets ou demandes de brevet. Vous pouvez envoyer, par écrit, vos demandes de renseignements relatives aux licences au :

- IBM EMEA Director of Licensing
  IBM Europe Middle-East Africa
  Tour Descartes
  92066 Paris-La Défense Cedex 50 France. Pour le Canada, veuillez adresser votre courrier à : IBM Director of Commercial Relations IBM Canada Ltd 3600 Steeles Avenue East Markham, Ontario L3R 9Z7 Canada

Les informations sur les licences concernant les produits utilisant un jeu de caractères double octet peuvent être obtenues par écrit à l'adresse suivante :

- IBM World Trade Asia Corporation Licensing
  2-31 Roppongi 3-chome, Minato-ku
  Tokyo 106-0032, Japon

Le paragraphe suivant ne s'applique ni au Royaume-Uni, ni dans aucun autre pays dans lequel il serait contraire aux lois locales.

LE PRESENT DOCUMENT EST LIVRE EN L'ETAT. IBM DECLINE TOUTE RESPONSABILITE, EXPLICITE OU IMPLICITE, RELATIVE AUX INFORMATIONS QUI Y SONT CONTENUES, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES DE VALEUR MARCHANDE OU D'ADAPTATION A VOS BESOINS. Certaines juridictions n'autorisent pas l'exclusion des garanties implicites, auquel cas l'exclusion ci-dessus ne vous sera pas applicable.

Le présent document peut contenir des inexactitudes ou des coquilles. Il est mis à jour périodiquement. Chaque nouvelle édition inclut les mises à jour. IBM peut modifier sans préavis les programmes et les logiciels qu'il décrit.

Les références à des sites Web non IBM sont fournies à titre d'information uniquement et n'impliquent en aucun cas une adhésion aux données qu'ils contiennent. Les éléments figurant sur ces sites Web ne font pas partie des éléments du présent produit IBM et l'utilisation de ces sites relève de votre seule responsabilité.

IBM pourra utiliser ou diffuser, de toute manière qu'elle jugera appropriée et sans aucune obligation de sa part, tout ou partie des informations qui lui seront fournies.

Les licenciés souhaitant obtenir des informations permettant : (i) l'échange des données entre des logiciels créés de façon indépendante et d'autres logiciels (dont celui-ci), et (ii) l'utilisation mutuelle des données ainsi échangées, doivent adresser leur demande à :

- JIMMAIL@uk.ibm.com
  [Hursley Java Technology Center (JTC) contact]

Ces informations peuvent être soumises à des conditions particulières, prévoyant notamment le paiement d'une redevance.

Le logiciel sous licence décrit dans ce document et tous les éléments sous licence disponibles s'y rapportant sont fournis par IBM conformément aux termes du Contrat sur les produits et services IBM, des Conditions internationales d'utilisation des logiciels IBM ou de tout autre accord équivalent.

Les données de performance indiquées dans ce document ont été déterminées dans un environnement contrôlé. Par conséquent, les résultats peuvent varier de manière significative selon l'environnement d'exploitation utilisé. Certaines mesures évaluées sur des systèmes en cours de développement ne sont pas garanties sur tous les systèmes disponibles. En outre, elles peuvent résulter d'extrapolations. Les résultats peuvent donc varier. Il incombe aux utilisateurs de ce document de vérifier si ces données sont applicables à leur environnement d'exploitation.

Les informations concernant des produits non IBM ont été obtenues auprès des fournisseurs de ces produits, par l'intermédiaire d'annonces publiques ou via d'autres sources disponibles. IBM n'a pas testé ces produits et ne peut confirmer l'exactitude de leurs performances ni leur compatibilité. Elle ne peut recevoir aucune réclamation concernant des produits non IBM. Toute question concernant les performances de produits non IBM doit être adressée aux fournisseurs de ces produits.

## Marques

IBM est une marque d'International Business Machines Corporation aux Etats-Unis et/ou dans certains autres pays.

IBM, iSeries, pSeries et zSeries sont des marques ou des marques déposées d'International Business Machines Corporation aux Etats-Unis et/ou dans certains autres pays.

Java, ainsi que tous les marques et logos incluant Java, sont des marques de Sun Microsystems, Inc. aux Etats-Unis et/ou dans certains autres pays.

Intel, les logos Intel Inside, MMX et Pentium sont des marques d'Intel Corporation aux Etats-Unis et/ou dans certains autres pays.

D'autres sociétés sont propriétaires des autres marques, noms de produits ou logos qui pourraient apparaître dans ce document.

Le présent produit comprend des logiciels développés par la société Apache Software Foundation (http://www.apache.org/).