<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-FR" xml:lang="fr-fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="dc.language" scheme="rfc1766" content="fr-fr" />
<meta name="dc.date" scheme="iso8601" content="2005-10-13" />
<meta name="copyright" content="(C) Copyright IBM Corp. 2005" />
<meta name="security" content="" />
<meta name="Robots" content="index,follow"/>
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<title>IBM 32-bit SDK et Runtime Environment pour Windows, Java 2 Technology Edition, Version 5.0</title>
<link rel="stylesheet" type="text/css" href="../ibmidwb.css" />
<link rel="stylesheet" type="text/css" href="../ait.css" />
</head>
<body class="revised">
<a id="Top_Of_Page" name="Top_Of_Page"></a>
<h1>IBM 32-bit SDK et Runtime Environment pour Windows, Java 2 Technology Edition, Version 5.0</h1>
<h1>Guide d'utilisation</h1>
<br />
<a name="wq1"></a>
<h1 id="wq1"><a href="#ToC_1">Notice de copyright</a></h1>
<p><strong>Remarque</strong>&nbsp;: Avant d'utiliser le pr&eacute;sent
document et le produit associ&eacute;, prenez connaissance des informations
g&eacute;n&eacute;rales figurant &agrave; la section <a href="#notices">Remarques</a>.</p>
<p>Cette &eacute;dition du guide utilisateur s'applique &agrave;
 IBM 32-bit SDK et Runtime Environment pour Windows, Java 2 Technology Edition, Version 5.0 et &agrave; toutes les versions, modifications et actualisations de service
suivantes, sauf indication contraire dans les nouvelles &eacute;ditions.</p>
<p>(c) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo
Alto, CA 94303 USA. Tous droits r&eacute;serv&eacute;s.</p>
<p>(c) Copyright International Business Machines Corporation, 1999, 2005.
Tous droits r&eacute;serv&eacute;s.</p>
<p>U.S. Government Users Restricted Rights - Use, duplication or disclosure
restricted by GSA ADP Schedule Contract with IBM Corp.</p>
<a name="wq2"></a>
<h1 id="wq2"><a href="#ToC_2">Pr&eacute;face</a></h1>
<p>Ce guide utilisateur fournit des informations g&eacute;n&eacute;rales sur
IBM 32-bit SDK et Runtime Environment pour Windows, Java 2 Technology Edition, Version 5.0 et d'autres sp&eacute;cifiques sur les diff&eacute;rences entre les
impl&eacute;mentations IBM et Sun. Consultez-le en compl&eacute;ment de la
documentation plus d&eacute;taill&eacute;e disponible sur le site Web de Sun&nbsp;: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<p>Le document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>
fournit des informations d&eacute;taill&eacute;es sur IBM Virtual Machine for Java.</p>
<p>Les modifications techniques apport&eacute;es &agrave; ce guide pour Version 5.0,
autres que les changements mineurs ou importants tels que la mise
&agrave; jour de "1.4.2" &agrave; "5.0", sont signal&eacute;es en rouge au format HTML ou
dans une impression en couleur et par des barres verticales &agrave; leur
gauche.</p>
<p>Les termes "Runtime Environment" et "machine virtuelle Java"
sont utilis&eacute;s indiff&eacute;remment dans ce guide.</p>
<a name="wq3"></a>
<div id="wq3">
<h1>Table des mati&egrave;res</h1>
<div class="head1"><a id="ToC_1" name="ToC_1" href="#wq1" class="toclink">Notice de copyright</a></div>
<div class="head1"><a id="ToC_2" name="ToC_2" href="#wq2" class="toclink">Pr&eacute;face</a></div>
<div class="head1"><a id="ToC_3" name="ToC_3" href="#wq4" class="toclink">G&eacute;n&eacute;ralit&eacute;s</a></div>
<div class="head2"><a id="ToC_4" name="ToC_4" href="#wq5" class="toclink">Compatibilit&eacute; des versions</a></div>
<div class="head2"><a id="ToC_5" name="ToC_5" href="#upgrading" class="toclink">Mise &agrave; niveau du SDK</a></div>
<div class="head2"><a id="ToC_6" name="ToC_6" href="#wq6" class="toclink">Migration &agrave; partir d'autres machines JVM IBM</a></div>
<div class="head1"><a id="ToC_7" name="ToC_7" href="#wq7" class="toclink">Sommaire du SDK et de Runtime Environment</a></div>
<div class="head2"><a id="ToC_8" name="ToC_8" href="#wq8" class="toclink">Outils d'environnement d'ex&eacute;cution</a></div>
<div class="head2"><a id="ToC_9" name="ToC_9" href="#sdktools" class="toclink">Outils SDK</a></div>
<div class="head1"><a id="ToC_10" name="ToC_10" href="#wq10" class="toclink">Installation et configuration de SDK et Runtime Environment</a></div>
<div class="head2"><a id="ToC_11" name="ToC_11" href="#wq11" class="toclink">Avant l'installation</a></div>
<div class="head2"><a id="ToC_12" name="ToC_12" href="#attended_installation" class="toclink">Installation sous surveillance (interactive)</a></div>
<div class="head3"><a id="ToC_13" name="ToC_13" href="#wq13" class="toclink">Installation des packages</a></div>
<div class="head3"><a id="ToC_14" name="ToC_14" href="#wq15" class="toclink">Installation de Runtime Environment comme machine virtuelle Java syst&egrave;me</a></div>
<div class="head2"><a id="ToC_15" name="ToC_15" href="#wq17" class="toclink">Installation automatis&eacute;e</a></div>
<div class="head2"><a id="ToC_16" name="ToC_16" href="#pathcons" class="toclink">D&eacute;finition du PATH</a></div>
<div class="head2"><a id="ToC_17" name="ToC_17" href="#wq21" class="toclink">D&eacute;finition du CLASSPATH</a></div>
<div class="head1"><a id="ToC_18" name="ToC_18" href="#invint" class="toclink">Utilisation du Runtime Environment</a></div>
<div class="head2"><a id="ToC_19" name="ToC_19" href="#wq22" class="toclink">Options</a></div>
<div class="head3"><a id="ToC_20" name="ToC_20" href="#wq23" class="toclink">Indication des options Java et des propri&eacute;t&eacute;s syst&egrave;me</a></div>
<div class="head3"><a id="ToC_21" name="ToC_21" href="#wq25" class="toclink">Options standard</a></div>
<div class="head3"><a id="ToC_22" name="ToC_22" href="#xoptions" class="toclink">Options non standard</a></div>
<div class="head2"><a id="ToC_23" name="ToC_23" href="#wq26" class="toclink">Obtention du num&eacute;ro de compilation et de version IBM</a></div>
<div class="head2"><a id="ToC_24" name="ToC_24" href="#wq27" class="toclink">Globalisation de la commande java</a></div>
<div class="head2"><a id="ToC_25" name="ToC_25" href="#jit" class="toclink">Compilateur JIT (Just-In-Time)</a></div>
<div class="head3"><a id="ToC_26" name="ToC_26" href="#disjit" class="toclink">D&eacute;sactivation du JIT</a></div>
<div class="head3"><a id="ToC_27" name="ToC_27" href="#enajit" class="toclink">Activation du JIT</a></div>
<div class="head3"><a id="ToC_28" name="ToC_28" href="#detjit" class="toclink">D&eacute;terminer si le JIT est activ&eacute;</a></div>
<div class="head2"><a id="ToC_29" name="ToC_29" href="#garbage" class="toclink">D&eacute;finition des r&egrave;gles de r&eacute;cup&eacute;ration de place</a></div>
<div class="head3"><a id="ToC_30" name="ToC_30" href="#wq29" class="toclink">Options de r&eacute;cup&eacute;ration de place</a></div>
<div class="head3"><a id="ToC_31" name="ToC_31" href="#wq30" class="toclink">D&eacute;lai d'interruption</a></div>
<div class="head3"><a id="ToC_32" name="ToC_32" href="#pausetimereduction" class="toclink">R&eacute;duction du d&eacute;lai d'interruption</a></div>
<div class="head3"><a id="ToC_33" name="ToC_33" href="#wq31" class="toclink">Environnements &agrave; segments tr&egrave;s satur&eacute;s</a></div>
<div class="head2"><a id="ToC_34" name="ToC_34" href="#wq32" class="toclink">Traitement des signaux par la JVM</a></div>
<div class="head3"><a id="ToC_35" name="ToC_35" href="#sighand" class="toclink">Signaux utilis&eacute;s par la JVM</a></div>
<div class="head3"><a id="ToC_36" name="ToC_36" href="#wq38" class="toclink">Cr&eacute;ation d'un lien entre un pilote de code natif et une biblioth&egrave;que de cha&icirc;nage de signaux</a></div>
<div class="head2"><a id="ToC_37" name="ToC_37" href="#wq39" class="toclink">Transformation de documents XML</a></div>
<div class="head3"><a id="ToC_38" name="ToC_38" href="#wq41" class="toclink">Utilisation d'une ancienne version de Xerces ou Xalan</a></div>
<div class="head1"><a id="ToC_39" name="ToC_39" href="#wq42" class="toclink">Utilisation de SDK pour d&eacute;velopper des applications Java</a></div>
<div class="head2"><a id="ToC_40" name="ToC_40" href="#debugger" class="toclink">D&eacute;bogage des applications Java</a></div>
<div class="head3"><a id="ToC_41" name="ToC_41" href="#jdb" class="toclink">D&eacute;bogueur Java (JDB)</a></div>
<div class="head2"><a id="ToC_42" name="ToC_42" href="#wq46" class="toclink">D&eacute;termination si votre application s'ex&eacute;cute sur une machine virtuelle Java 32 bit ou 64 bit</a></div>
<div class="head2"><a id="ToC_43" name="ToC_43" href="#wq47" class="toclink">Ecriture d'applications JNI</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_44" name="ToC_44" href="#wq49" class="toclink">Prise en charge de la restauration de connecteurs bloqu&eacute;s au niveau de l'unit&eacute; d'ex&eacute;cution</a></div>
<div class="head2"><a id="ToC_45" name="ToC_45" href="#wq50" class="toclink">Utilisation d'applets</a></div>
<div class="head3"><a id="ToC_46" name="ToC_46" href="#wq51" class="toclink">Ex&eacute;cution d'applets &agrave; l'aide d'Applet Viewer</a></div>
<div class="head3"><a id="ToC_47" name="ToC_47" href="#wq52" class="toclink">D&eacute;bogage d'applets &agrave; l'aide d'Applet Viewer</a></div>
<div class="head2"><a id="ToC_48" name="ToC_48" href="#wq53" class="toclink">Prise en charge de CORBA</a></div>
<div class="head3"><a id="ToC_49" name="ToC_49" href="#wq54" class="toclink">Prise en charge de GIOP 1.2</a></div>
<div class="head3"><a id="ToC_50" name="ToC_50" href="#wq55" class="toclink">Prise en charge des intercepteurs portables</a></div>
<div class="head3"><a id="ToC_51" name="ToC_51" href="#wq56" class="toclink">Prise en charge d'INS (Interoperable Naming Service)</a></div>
<div class="head3"><a id="ToC_52" name="ToC_52" href="#wq57" class="toclink">Propri&eacute;t&eacute;s syst&egrave;me de tra&ccedil;age de l'ORB</a></div>
<div class="head3"><a id="ToC_53" name="ToC_53" href="#wq58" class="toclink">Propri&eacute;t&eacute;s syst&egrave;me d'optimisation de l'ORB</a></div>
<div class="head3"><a id="ToC_54" name="ToC_54" href="#wq59" class="toclink">Droits de s&eacute;curit&eacute; Java 2 pour l'ORB</a></div>
<div class="head3"><a id="ToC_55" name="ToC_55" href="#wq63" class="toclink">Classes d'impl&eacute;mentation ORB</a></div>
<div class="head2"><a id="ToC_56" name="ToC_56" href="#rmi-iiop" class="toclink">RMI sur IIOP</a></div>
<div class="head2"><a id="ToC_57" name="ToC_57" href="#rmi" class="toclink">Impl&eacute;mentation du pool de gestionnaires de connexion pour RMI</a></div>
<div class="head2"><a id="ToC_58" name="ToC_58" href="#wq64" class="toclink">Prise en charge bidirectionnelle am&eacute;lior&eacute;e</a></div>
<div class="head2"><a id="ToC_59" name="ToC_59" href="#bigd" class="toclink">Big Decimal am&eacute;lior&eacute;</a></div>
<div class="head2"><a id="ToC_60" name="ToC_60" href="#wq65" class="toclink">Prise en charge du symbole Euro</a></div>
<div class="head1"><a id="ToC_61" name="ToC_61" href="#jcommchapter" class="toclink">Utilisation de l'API Java Communications (JavaComm)</a></div>
<div class="head2"><a id="ToC_62" name="ToC_62" href="#fileloc" class="toclink">Emplacement des fichiers de l'API Java Communications</a></div>
<div class="head2"><a id="ToC_63" name="ToC_63" href="#wq66" class="toclink">Configuration de l'API Java Communications</a></div>
<div class="head2"><a id="ToC_64" name="ToC_64" href="#wq67" class="toclink">Limitation d'impression avec l'API Java Communications</a></div>
<div class="head2"><a id="ToC_65" name="ToC_65" href="#wq68" class="toclink">Documentation de l'API Java Communications</a></div>
<div class="head1"><a id="ToC_66" name="ToC_66" href="#wq69" class="toclink">D&eacute;ploiement des applications Java</a></div>
<div class="head2"><a id="ToC_67" name="ToC_67" href="#wq70" class="toclink">Utilisation du plug-in Java</a></div>
<div class="head3"><a id="ToC_68" name="ToC_68" href="#suppbrowse" class="toclink">Navigateurs pris en charge</a></div>
<div class="head3"><a id="ToC_69" name="ToC_69" href="#wq71" class="toclink">Prise en charge du mod&egrave;le DOM (Document Object Model) commun</a></div>
<div class="head3"><a id="ToC_70" name="ToC_70" href="#wq72" class="toclink">Utilisation des param&egrave;tres DBCS</a></div>
<div class="head2"><a id="ToC_71" name="ToC_71" href="#wq73" class="toclink"> Utilisation de Java Web Start</a></div>
<div class="head3"><a id="ToC_72" name="ToC_72" href="#installing_webstart" class="toclink">Ex&eacute;cution de Web Start</a></div>
<div class="head2"><a id="ToC_73" name="ToC_73" href="#wq75" class="toclink">Livraison d'applications Java</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head1"><a id="ToC_74" name="ToC_74" href="#classdatasharing" class="toclink">Partage de donn&eacute;es de classes entre JVM</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_75" name="ToC_75" href="#wq76" class="toclink">Pr&eacute;sentation du partage de classes</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_76" name="ToC_76" href="#wq77" class="toclink">Contenu du cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_77" name="ToC_77" href="#wq78" class="toclink">Mise &agrave; jour dynamique du cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_78" name="ToC_78" href="#wq79" class="toclink">Activation du partage de classes</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_79" name="ToC_79" href="#wq80" class="toclink">S&eacute;curit&eacute; du cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_80" name="ToC_80" href="#wq81" class="toclink">Dur&eacute;e de vie du cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_81" name="ToC_81" href="#wq82" class="toclink">Utilitaires du cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_82" name="ToC_82" href="#sharedclassesxoptions" class="toclink">Utilisation d'options de ligne de commande pour le partage de classes</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_83" name="ToC_83" href="#wq83" class="toclink">Cr&eacute;ation, remplissage, contr&ocirc;le et suppression d'un cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_84" name="ToC_84" href="#wq84" class="toclink">Performances et sollicitation de la m&eacute;moire</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_85" name="ToC_85" href="#wq85" class="toclink">Limitations et consid&eacute;rations concernant l'utilisation du partage des classes</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_86" name="ToC_86" href="#cachesizelimits" class="toclink">Limites de la taille du cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_87" name="ToC_87" href="#runtimebytecode" class="toclink">Modification du code interm&eacute;diaire d'ex&eacute;cution</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_88" name="ToC_88" href="#wq86" class="toclink">Limitations du syst&egrave;me d'exploitation</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_89" name="ToC_89" href="#usingsharedclasspermissions" class="toclink">Utilisation de SharedClassPermissions</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_90" name="ToC_90" href="#adaptingclassloaders" class="toclink">Adaptation de chargeurs de classes personnalis&eacute;s pour partager des classes</a></div>
<div class="head1"><a id="ToC_91" name="ToC_91" href="#wq87" class="toclink">Service et prise en charge pour des &eacute;diteurs de logiciels ind&eacute;pendants</a></div>
<div class="head1"><a id="ToC_92" name="ToC_92" href="#wq88" class="toclink">Accessibilit&eacute;</a></div>
<div class="head2"><a id="ToC_93" name="ToC_93" href="#ikeycmd" class="toclink">Accessibilit&eacute; iKeyman</a></div>
<div class="head2"><a id="ToC_94" name="ToC_94" href="#wq90" class="toclink">Passage clavier des composants JComboBox dans Swing</a></div>
<div class="head2"><a id="ToC_95" name="ToC_95" href="#wq91" class="toclink">Accessibilit&eacute; de Web Start</a></div>
<div class="head1"><a id="ToC_96" name="ToC_96" href="#wq92" class="toclink">Remarque g&eacute;n&eacute;rale sur la s&eacute;curit&eacute;</a></div>
<div class="head1"><a id="ToC_97" name="ToC_97" href="#wq93" class="toclink">Restrictions connues</a></div>
<div class="head1"><a id="ToC_98" name="ToC_98" href="#rcf" class="toclink">Commentaires sur le guide utilisateur</a></div>
<div class="head1"><a id="ToC_99" name="ToC_99" href="#notices" class="toclink">Remarques</a></div>
<div class="head2"><a id="ToC_100" name="ToC_100" href="#wq94" class="toclink">Marques</a></div>
</div>
<a name="wq4"></a>
<h1 id="wq4"><a href="#ToC_3">G&eacute;n&eacute;ralit&eacute;s</a></h1>
<p>Le SDK IBM est un environnement de d&eacute;veloppement permettant d'&eacute;crire et d'ex&eacute;cuter des applets et des applications conformes &agrave; l'API IBM Java 5.0 Core Application Program
Interface.</p>
<p>Il inclut Runtime Environment for Windows, qui permet d'ex&eacute;cuter uniquement des applications Java. Si vous avez install&eacute; SDK, IBM
Runtime Environment est inclus.</p>
<p>L'environnement d'ex&eacute;cution contient la machine virtuelle Java ainsi que les fichiers de prise en charge incluant les fichiers de classe. L'environnement d'ex&eacute;cution contient seulement un sous-ensemble des classes se trouvant dans le SDK. Il permet de prendre en charge un programme Java lors de l'ex&eacute;cution mais ne permet pas de
compiler les programmes Java. Runtime Environment for Windows n'inclut aucun des outils de
d&eacute;veloppement, tels que <strong>appletviewer</strong> ou le compilateur Java (<strong>javac</strong>), ni les classes destin&eacute;es aux syst&egrave;mes de d&eacute;veloppement uniquement.</p>
<p>En outre, le module de l'API Java Communications est fourni pour une utilisation avec Runtime Environment for Windows. Vous pouvez
trouver des informations &agrave; ce sujet dans <a href="#jcommchapter">Utilisation de l'API Java Communications (JavaComm)</a>.</p>
<a name="wq5"></a>
<h2 id="wq5"><a href="#ToC_4">Compatibilit&eacute; des versions</a></h2>
<p>En g&eacute;n&eacute;ral, toute applet ou application ayant d&eacute;j&agrave; &eacute;t&eacute; ex&eacute;cut&eacute;e avec une version ant&eacute;rieure du SDK doit fonctionner correctement avec IBM 32-bit SDK pour Windows, v5.0.
Il n'est pas garanti que les classes compil&eacute;es avec cette version fonctionnent sur des versions ant&eacute;rieures.</p>
<p>Pour en savoir plus sur la compatibilit&eacute;, consultez la documentation de Sun sur le site Web <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="upgrading"></a>
<h2 id="upgrading"><a href="#ToC_5">Mise &agrave; niveau du SDK</a></h2>
<p>Si vous effectuez une mise &agrave; niveau du SDK &agrave; partir d'une version pr&eacute;c&eacute;dente, sauvegardez
tous les fichiers de configuration
et ceux de r&egrave;gles de s&eacute;curit&eacute; avant de proc&eacute;der.</p>
<p>Une fois la mise &agrave; niveau effectu&eacute;e, il peut &ecirc;tre n&eacute;cessaire de restaurer
ou de reconfigurer ces fichiers car ils peuvent avoir &eacute;t&eacute; modifi&eacute;s lors du processus
de mise &agrave; niveau. V&eacute;rifiez la syntaxe des nouveaux fichiers avant de restaurer les fichiers
d'origine car le format ou les options des fichiers peuvent avoir &eacute;t&eacute; modifi&eacute;s.</p>
<a name="wq6"></a>
<h2 id="wq6"><a href="#ToC_6">Migration &agrave; partir d'autres machines JVM IBM</a></h2>
<p>Pour la Version , IBM Runtime Environment for Windows contient les nouvelles versions de
d'IBM Java Virtual Machine et du compilateur JIT (Just-In-Time). Si vous effectuez une migration
&agrave; partir d'une version d'IBM Runtime Environment plus ancienne, notez que&nbsp;: </p>
<ul>
<li>La  biblioth&egrave;que partag&eacute;e libjvm.so de la machine virtuelle JVM est install&eacute;e dans le r&eacute;pertoirejre/bin/j9vm. Ceci n'est pas le cas, par exemple,
pour Runtime Environment for Windows pour la Version , o&ugrave; elle est install&eacute;e dans jre/bin/classic. Les applications natives qui utilisent l'interface JNI
peuvent n&eacute;cessiter l'ajout du nouveau chemin d'acc&egrave;s au r&eacute;pertoire &agrave; leurs variables d'environnement afin de pouvoir localiser la biblioth&egrave;que DLL JVM.</li>
<br />
<li><font color="red"><span id="changed">|</span>L'interface JVMMI (JVM Monitoring Interface) n'est plus disponible.
<span id="changed">|</span>Vous devez r&eacute;crire les applications qui utilisent cette API. Il est
<span id="changed">|</span>conseill&eacute; d'utiliser l'interface JVMTI (JVM Tool Interface) &agrave; la place. JVMTI n'est pas l'&eacute;quivalent de JVMMI du point de vue de la fonctionnalit&eacute;. Pour plus d'informations sur JVMTI, consultez le site Web <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/">http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/</a> et le document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>La nouvelle mise en oeuvre de JNI est conforme &agrave; la sp&eacute;cification JNI,
<span id="changed">|</span>mais diff&egrave;re de l'ancienne mise en oeuvre. Elle renvoie des copies des objets au lieu de les
<span id="changed">|</span>r&eacute;server.  Cette diff&eacute;rence peut exposer des erreurs dans le code d'application
<span id="changed">|</span>JNI. Pour plus d'informations sur le d&eacute;bogage du code JNI, voir <strong>-Xcheck:jni</strong> dans <a href="#xoptions">Options non standard</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>Le format et le contenu des journaux prolixes de r&eacute;cup&eacute;ration de place obtenus &agrave; l'aide la commande <strong>-verbose:gc</strong> ont chang&eacute;. Les donn&eacute;es sont &agrave; pr&eacute;sent fournies au format XML. Le contenu des donn&eacute;es refl&egrave;te les modifications apport&eacute;es &agrave; la mise en oeuvre de la r&eacute;cup&eacute;ration de place dans la machine JVM et la plupart des statistiques en sortie ont chang&eacute;.
<span id="changed">|</span>Vous devez modifier tous les programmes qui traitent la sortie prolixe de r&eacute;cup&eacute;ration de place afin qu'ils puissent fonctionner avec le nouveau format et les nouvelles donn&eacute;es. Pour obtenir un exemple des nouvelles donn&eacute;es prolixes de r&eacute;cup&eacute;ration de place, voir document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</font></li>
<br />
<li>Les versions pr&eacute;c&eacute;dentes du JRE IBM incluaient un fichier appel&eacute; rt.jar situ&eacute; dans le r&eacute;pertoire
jre/lib. Depuis Java version 1.4, ce fichier est remplac&eacute; par plusieurs
fichiers JAR r&eacute;sidant dans le r&eacute;pertoire jre/lib.</li>
<br />
<li><font color="red"><span id="changed">|</span>Pour obtenir plus d'informations sur la compatibilit&eacute; et les API d&eacute;conseill&eacute;es, voir <a href="http://java.sun.com/j2se/5.0/compatibility.html">Sun's Java 5 Compatibility Documentation</a> et <a href="http://java.sun.com/j2se/1.5.0/docs/api/deprecated-list.html">Sun's Java 5 Depreciated API List</a></font></li>
<br /></ul>
<a name="wq7"></a>
<h1 id="wq7"><a href="#ToC_7">Sommaire du SDK et de Runtime Environment</a></h1>
<p>Le SDK contient plusieurs outils de d&eacute;veloppement et un Java Runtime Environment
(JRE). Cette section d&eacute;crit le contenu des outils du SDK et de l'environnement d'ex&eacute;cution.</p>
<p>Les applications enti&egrave;rement &eacute;crites en Java ne doivent <strong>pas</strong> du tout
&ecirc;tre d&eacute;pendantes de l'arborescence des r&eacute;pertoires du SDK IBM (ou des fichiers contenus dans ces r&eacute;pertoires).  Toute
d&eacute;pendance de cette arborescence (ou de ces fichiers) peut compromettre la portabilit&eacute; de l'application. </p>
<a name="wq8"></a>
<h2 id="wq8"><a href="#ToC_8">Outils d'environnement d'ex&eacute;cution</a></h2>
<ul>
<li>Classes Core -- Il s'agit des fichiers de classes compil&eacute;s pour la plateforme&nbsp;; ils doivent rester zipp&eacute;s pour que le compilateur et l'interpr&eacute;teur puisse y acc&eacute;der. Ne modifiez pas
ces classes. Au lieu de cela, cr&eacute;ez des sous-classes et effectuez un remplacement lorsque c'est
n&eacute;cessaire. 
<br /></li>
<li>Outils JRE -- Les outils suivants font partie du Runtime Environment et se trouvent dans
le r&eacute;pertoire  sauf
indications contraires.
<ul>
<li> java (interpr&eacute;teur Java) 
<ul class="simple">
<li>Ex&eacute;cute les classes Java. L'interpr&eacute;teur Java ex&eacute;cute les programmes &eacute;crits avec le
langage de programmation Java.</li></ul>
<br /></li>
<li>javaw (interpr&eacute;teur Java)
<ul class="simple">
<li>Ex&eacute;cute les classes Java de la m&ecirc;me fa&ccedil;on que la commande <strong>java</strong>
mais n'utilise pas de fen&ecirc;tre de console.</li></ul>
<br /></li>
<li>keytool (outil de gestion des cl&eacute;s et des certificats)
<ul class="simple">
<li>G&egrave;re un magasin (une base de donn&eacute;es) des cl&eacute;s priv&eacute;es et des cha&icirc;nes de certificats X.509
associ&eacute;s qui authentifient les cl&eacute;s publiques correspondantes.</li></ul>
<br /></li>
<li>policytool (outil de cr&eacute;ation et de gestion de fichiers de r&egrave;gles)
<ul class="simple">
<li>Cr&eacute;e et modifie les fichiers de configuration de r&egrave;gles externes qui d&eacute;finissent
la r&egrave;gle de s&eacute;curit&eacute; Java de votre installation.</li></ul>
<br /></li>
<li>rmid (d&eacute;mon syst&egrave;me d'activation RMI)
<ul class="simple">
<li>D&eacute;marre le d&eacute;mon syst&egrave;me d'activation de fa&ccedil;on &agrave; pouvoir enregistrer et
activer les objets dans une machine virtuelle Java.</li></ul>
<br /></li>
<li>tnameserv (service annuaire CORBA)
<ul class="simple">
<li>D&eacute;marre le service annuaire transitoire CORBA.</li></ul>
<br /></li>
<li>rmiregistry (registre d'objets distants Java)
<ul class="simple">
<li>Cr&eacute;e et d&eacute;marre un registre d'objets distant sur le port indiqu&eacute; de l'h&ocirc;te
actuel.</li></ul>
<br /></li>
<li>ikeyman (utilitaire d'interface graphique iKeyman)
<ul class="simple">
<li>Permet de g&eacute;rer les cl&eacute;s, certificats et demandes de certificats. Pour plus d'informations,
reportez-vous au document <em>Security Guide</em> et au site <a href="http://www.ibm.com/developerworks/java/jdk/security">http://www.ibm.com/developerworks/java/jdk/security</a>. Le SDK fournit &eacute;galement
une version en ligne de commande de cet utilitaire. Pour plus d'informations, voir <a href="#ikeycmd">Accessibilit&eacute; iKeyman</a></li></ul>
<br /></li>
<li>jextract (extracteur)
<ul class="simple">
<li>Convertit un vidage syst&egrave;me en un format commun pouvant &ecirc;tre utilis&eacute;
par <a href="#jformat">jdmpview</a>. Pour plus d'informations, voir document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>javaws (Java
Web Start)
<ul class="simple">
<li>Permet le d&eacute;ploiement et la maintenance automatique des applications Java.</li></ul>
<br /></li></ul></li></ul>
<a name="sdktools"></a>
<h2 id="sdktools"><a href="#ToC_9">Outils SDK</a></h2>
<ul>
<li>Les outils suivants font partie du SDK et sont situ&eacute;s dans le r&eacute;pertoire C:\Program Files\IBM\Java50\bin &nbsp;:
<ul>
<li>javac (compilateur Java)
<ul class="simple">
<li>Compile les programmes &eacute;crits avec le langage de programmation Java en code interm&eacute;diaire (code Java compil&eacute;).</li></ul>
<br /></li>
<li>appletviewer (Applet Viewer Java)
<ul class="simple">
<li>Teste et ex&eacute;cute les applets en dehors d'un navigateur Web.</li></ul>
<br /></li>
<li>jdb (d&eacute;bogueur Java)
<ul class="simple">
<li>Aide de d&eacute;bogage des programmes Java.</li></ul>
<br /></li>
<li>javap (d&eacute;sassembleur de fichier classe)
<ul class="simple">
<li>D&eacute;sassemble les fichiers compil&eacute;s et peut imprimer une repr&eacute;sentation du code interm&eacute;diaire.</li></ul>
<br /></li>
<li>javadoc (g&eacute;n&eacute;rateur de documentation Java)
<ul class="simple">
<li>G&eacute;n&egrave;re les pages HTML de la documentation d'API &agrave; partir des fichiers source Java.</li></ul>
<br /></li>
<li>javah (g&eacute;n&eacute;rateur d'en-t&ecirc;te C et de fichier de raccord)
<ul class="simple">
<li>Permet d'associer les m&eacute;thodes natives au code Java.</li></ul>
<br /></li>
<li>jar (outil d'archivage Java)
<ul class="simple">
<li>Combine plusieurs fichiers en un seul fichier d'archive Java (JAR).</li></ul>
<br /></li>
<li>jarsigner (outil de signature et de v&eacute;rification JAR)
<ul class="simple">
<li>G&eacute;n&egrave;re des signatures pour les fichiers JAR et v&eacute;rifie les signatures des fichiers JAR sign&eacute;s.</li></ul>
<br /></li>
<li>jconsole (JConsole Monitoring and Management
Tool - exp&eacute;rimental)
<ul class="simple">
<li>Outil graphique compatible JMX exp&eacute;rimental (non pris en charge) pour le contr&ocirc;le des
machines JVM locales et distantes.</li></ul>
<br /></li>
<li>native2ascii (convertisseur natif-ASCII)
<ul class="simple">
<li>Convertit les fichiers &agrave; encodage natif en fichier ASCII contenant des caract&egrave;res
Latin-1 et/ou Unicode.</li></ul>
<br /></li>
<li>rmic (convertisseur de talon RMI Java)
<ul class="simple">
<li>G&eacute;n&egrave;re des talons, des squelettes et des liens pour les objets distants. Prend en charge RMI-IIOP.</li></ul>
<br /></li>
<li>java-rmi.cgi (outil de transmission de demande HTTP vers CGI)
<ul class="simple">
<li>Accepte les demandes RMI via HTTP et les transmet &agrave; un serveur RMI &agrave; l'&eacute;coute sur un port.</li></ul>
<br /></li>
<li>idlj (compilateur IDL vers Java)
<ul class="simple">
<li>G&eacute;n&egrave;re des liaisons Java &agrave; partir d'un fichier IDL donn&eacute;.</li></ul>
<br /></li>
<li>serialver (commande de version de s&eacute;rie)
<ul class="simple">
<li>Renvoie l'UID de version de s&eacute;rie d'une ou plusieurs classes dans un format
appropri&eacute; pour la copie dans une classe &eacute;volutive.</li></ul>
<br /></li>
<li>extcheck (utilitaire Extcheck)
<ul class="simple">
<li>D&eacute;tecte les conflits de version entre un fichier jar cible et les fichiers jar d'extension d&eacute;j&agrave;
install&eacute;s.</li></ul>
<br /></li>
<li id="jformat">
<a name="jformat"></a>jdmpview (composant de formatage de vidage multiplateformes)
<ul class="simple">
<li>Un outil permettant d'analyser les vidages. Pour plus d'informations, voir document
 <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>htmlconverter (convertisseur HTML pour Java Plug-in)
<ul class="simple">
<li>Convertit les pages HTML contenant des applets en un format pouvant &ecirc;tre utilis&eacute; par le
Java Plug-in.</li></ul>
<br /></li></ul>
<br /></li>
<li>FICHIERS INCLUS
<ul class="simple">
<li>En-t&ecirc;tes C pour programmes JNI.
<br /></li></ul>
<br /></li>
<li>DEMOS 
<ul class="simple">
<li>Le r&eacute;pertoire demo contient plusieurs sous-r&eacute;pertoires contenant des exemples de code
source, de d&eacute;monstrations, d'applications et d'applets que vous pouvez utiliser. </li></ul>
<br /></li>
<li>DROITS D'AUTEUR
<ul class="simple">
<li>Mention de droits d'auteur pour le logiciel SDK for Windows.</li></ul>
<br /></li>
<li>LICENCE
<ul class="simple">
<li>Le fichier de LICENCE, C:\Program Files\IBM\Java50\docs/&lt;locale>/license_&lt;locale>.html, contient le contrat de licence du logiciel SDK pour Windows (o&ugrave; &lt;locale> correspond au nom de votre environnement local, par exemple
Fr_FR). Pour afficher ou imprimer le contrat de licence, ouvrez le fichier dans un navigateur Web.</li></ul>
<br /></li></ul>
<div>
<p><strong>Remarque&nbsp;:</strong> les guides utilisateur, la documentation
utilisateur ainsi que la licence, les fichiers de droit d'auteur et le r&eacute;pertoire
demo qui les accompagnent constituent la seule documentation comprise dans ce
SDK pour Windows. Vous pouvez consulter ou t&eacute;l&eacute;charger la documentation
 des logiciels Sun sur le site Web de Sun &agrave; l'adresse <a href="http://java.sun.com">http://java.sun.com</a>.</p></div>
<a name="wq10"></a>
<h1 id="wq10"><a href="#ToC_10">Installation et configuration de SDK et Runtime Environment</a></h1>
<a name="wq11"></a>
<h2 id="wq11"><a href="#ToC_11">Avant l'installation</a></h2>
<p>Pour installer SDK ou Runtime Environment, t&eacute;l&eacute;chargez le package
d'installation correspondant. Veillez bien &agrave; t&eacute;l&eacute;charger
tous les packages dans le m&ecirc;me r&eacute;pertoire.
Les packages et les noms de fichiers sont r&eacute;pertori&eacute;s dans
<a href="#attended_installation">Installation sous surveillance (interactive)</a>&nbsp;; ne les modifiez pas. </p>
<p>Avant d'entamer l'installation, assurez-vous que l'espace est
suffisant dans le r&eacute;pertoire C:\WINDOWS\TEMP. La quantit&eacute; d'espace
temporaire dans le r&eacute;pertoire TEMP doit &ecirc;tre comme suit&nbsp;:  </p>
<ul>
<li>Package d'installation de SDK&nbsp;: 130 Mo</li>
<li>Package d'installation de Runtime Environment&nbsp;: 85 Mo </li></ul><p class="indatacontent">Si vous n'avez pas assez d'espace temporaire, le programme
d'installation &eacute;met une erreur et interrompt l'installation. Si
l'espace temporaire est suffisant mais qu'un message d'erreur est
&eacute;mis, v&eacute;rifiez que les packages ont &eacute;t&eacute; totalement t&eacute;l&eacute;charg&eacute;s. Pour
ce faire, comparez les tailles des fichiers de vos packages &agrave;
celles affich&eacute;es dans les pages Web d'o&ugrave; vous les avez t&eacute;l&eacute;charg&eacute;s.</p>
<a name="attended_installation"></a>
<h2 id="attended_installation"><a href="#ToC_12">Installation sous surveillance (interactive)</a></h2>
<div>
<p>Les packages installables sont&nbsp;:</p>
<ul>
<li>Package d'installation de SDK&nbsp;: ibm-java2-sdk-50-win-i386.exe</li>
<li>Package d'installation de Runtime Environment&nbsp;: ibm-java2-jre-50-win-i386.exe</li></ul>
<p>Autres packages fournis dans des fichiers zip&nbsp;:</p>
<ul>
<li>Package de Runtime Environment&nbsp;: ibm-java2-jre-50-win-i386.zip</li>
<li>Package de SDK &nbsp;: ibm-java2-sdk-50-win-i386.zip</li>
<li>Package de documentation&nbsp;: ibm-java2-docs-50-win-i386.zip</li>
<li>Package de d&eacute;mos&nbsp;: ibm-java2-demos-50-win-i386.zip</li></ul></div>
<a name="wq13"></a>
<h3 id="wq13"><a href="#ToC_13">Installation des packages</a></h3>
<p></p>
<ol type="1">
<li>Lancez ibm-java2-sdk-50-win-i386.exe (pour SDK) ou
ibm-java2-jre-50-win-i386.exe (pour Runtime Environment uniquement).</li>
<li>Suivez les instructions dans l'assistant d'installation.</li></ol><p class="indatacontent">Runtime Environment est install&eacute; par d&eacute;faut dans le r&eacute;pertoire C:\Program Files\IBM\Java50\jre.</p>
<p>Si vous avez t&eacute;l&eacute;charg&eacute; le package d'installation de SDK,
vous pouvez choisir d'installer ce qui suit&nbsp;:</p>
<ul>
<li>les outils de d&eacute;veloppement SDK (par exemple, le compilateur Java),</li>
<li>l'environnement d'ex&eacute;cution,</li>
<li>le code source pour les biblioth&egrave;ques de classe Sun employ&eacute;es
par certains outils pour d&eacute;boguer des applications.</li></ul><p class="indatacontent">Vous pouvez installer les composants de fa&ccedil;on individuelle ou
combin&eacute;e.</p>
<p>Dans l'assistant d'installation, vous disposez des options
suivantes&nbsp;:</p>
<ul>
<li><strong>Standard</strong> - cette option installe les trois
composants.</li>
<li><strong>Compact</strong> - cette option installe
uniquement Runtime Environment.</li>
<li><strong>Personnalis&eacute;</strong> - cette option vous permet
de choisir les composants &agrave; installer.</li></ul>
<a name="wq15"></a>
<h3 id="wq15"><a href="#ToC_14">Installation de Runtime Environment comme machine
virtuelle Java syst&egrave;me</a></h3>
<p>Lorsque vous installez Runtime Environment (comme &eacute;l&eacute;ment du
package d'installation de SDK ou &agrave; partir d'un package
d'installation propre), vous devez pr&eacute;ciser s'il doit &ecirc;tre install&eacute;
comme machine virtuelle Java syst&egrave;me. Dans l'affirmative, le
programme d'installation copie les fichiers java.exe et javaw.exe
dans le r&eacute;pertoire syst&egrave;me Windows.
Si une version de java.exe ou javaw.exe existe d&eacute;j&agrave; dans le
r&eacute;pertoire syst&egrave;me Windows, vous devez l'&eacute;craser avec celle en cours. L'installation
de ces fichiers dans le r&eacute;pertoire syst&egrave;me Windows fait de Runtime
Environment la machine virtuelle Java par d&eacute;faut pour le syst&egrave;me. Par
ailleurs, la cl&eacute; de registre "Version" est d&eacute;finie de fa&ccedil;on &agrave;
correspondre &agrave; cette installation. </p>
<a name="wq16"></a>
<div class="notetitle" id="wq16">Remarque :</div>
<div class="notebody">L'installation de Runtime Environment comme machine
virtuelle Java syst&egrave;me copie uniquement java.exe et javaw.exe dans le
r&eacute;pertoire syst&egrave;me Windows. Aucun autre ex&eacute;cutable (tel que javac.exe
ou appletviewer.exe) n'est copi&eacute;.</div>
<a name="wq17"></a>
<h2 id="wq17"><a href="#ToC_15">Installation automatis&eacute;e</a></h2>
<p>Pour une installation automatis&eacute;e, vous devez d'abord effectuer
une installation sous surveillance et cr&eacute;er un fichier de r&eacute;ponses
(setup.iss) enregistrant les choix r&eacute;alis&eacute;s. Ce fichier de r&eacute;ponses
doit &ecirc;tre adapt&eacute; aux ordinateurs sur lesquels vous pensez
l'utiliser. Si besoin est, cr&eacute;ez plusieurs fichiers de r&eacute;ponses
pour installer les packages sur des ordinateurs de configuration
distincte.</p>
<p>Pour cr&eacute;er un fichier de r&eacute;ponses pendant l'installation, entrez
&agrave; une invite de commande&nbsp;:</p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /r</pre><p class="indatacontent">ou</p>
<pre class="xmp">ibm-java2-jre-50-win-i386 /r</pre>
<p>En fonction du produit Windows, un fichier de r&eacute;ponses (setup.iss)
est cr&eacute;&eacute; dans le r&eacute;pertoire C:\Windows ou C:\Winnt, o&ugrave; C: correspond
&agrave; l'unit&eacute; d'amor&ccedil;age.</p>
<p>Le message suivant peut appara&icirc;tre lors d'une
installation interactive&nbsp;:</p>
<p></p>
<pre class="xmp">Another Java Runtime Environment is currently
installed as the System JVM. Select Yes to
overwrite this version or No to exit this
installation.</pre>
<p>Si ce message s'affiche, cliquez sur <strong>No</strong> et
quittez l'installation. Acc&eacute;dez au r&eacute;pertoire syst&egrave;me Windows et
supprimez les deux fichiers suivants&nbsp;:</p>
<ul>
<li>java.exe</li>
<li>javaw.exe</li></ul>
<p>Apr&egrave;s cela, relancez l'installation interactive &agrave; l'aide de la
commande indiqu&eacute;e en d&eacute;but de section.</p>
<p>Sur le syst&egrave;me o&ugrave; vous effectuerez l'installation automatis&eacute;e,
copiez le fichier de r&eacute;ponses setup.iss dans le r&eacute;pertoire C:\Windows. Apr&egrave;s
la copie, entrez &agrave; une invite de commande&nbsp;:</p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /s /f1c:\Windows\setup.iss /f2c:\setup.log
ibm-java2-jre-50-win-i386 /s /f1c:\Windows\setup.iss /f2c:\setup.log</pre>
<a name="wq18"></a>
<div class="notelisttitle" id="wq18">Remarques :</div>
<ol type="1">
<li>Il n'y a pas d'espace apr&egrave;s <tt>/f1</tt> et <tt>/f2</tt>.</li>
<li>L'indicateur <tt>/f1</tt> d&eacute;signe le nom et
l'emplacement du fichier de r&eacute;ponses. L'indicateur
<tt>/f2</tt> d&eacute;signe le nom et l'emplacement du
fichier journal.</li>
</ol>
<p>Si l'installation aboutit, le fichier journal contient la cha&icirc;ne
<tt>ResultCode=0</tt>.</p>
<a name="pathcons"></a>
<h2 id="pathcons"><a href="#ToC_16">D&eacute;finition du PATH</a></h2>
<p>Si vous modifiez la variable d'environnement PATH de la fa&ccedil;on d&eacute;crite ci-dessous, cela remplacera tous les fichiers ex&eacute;cutables Java pr&eacute;sents dans le chemin.</p>
<p>Apr&egrave;s avoir install&eacute; le SDK, vous pouvez ex&eacute;cuter un outil en entrant son nom &agrave; l'invite shell avec un nom de fichier comme argument.</p>
<p>Vous pouvez d&eacute;finir le chemin d'acc&egrave;s &agrave; un outil en l'entrant &agrave; chaque fois avant le nom de l'outil. Par exemple, si le SDK pour Windows est install&eacute; dans C:\Program Files\IBM\Java50\bin, vous pouvez compiler un fichier nomm&eacute; myfile.java
en entrant la commande suivante &agrave; l'invite shell&nbsp;:</p>
<pre class="xmp">  C:\Program Files\IBM\Java50\bin/javac monfichier.java</pre>
<p>Pour modifier la variable d'environnement <strong>PATH</strong>&nbsp;:</p>
<ol type="1">
<li>Editez le fichier de d&eacute;marrage shell dans votre r&eacute;pertoire initial (habituellement .bashrc, en fonction du shell utilis&eacute;) et ajoutez les chemins absolus &agrave; la variable d'environnement <strong>PATH</strong>. Par exemple&nbsp;: 
<pre class="xmp">export PATH=C:\Program Files\IBM\Java50\bin:C:\Program Files\IBM\Java50\jre/bin:$PATH</pre>
<br /></li>
<li>Connectez-vous de nouveau ou ex&eacute;cutez le script de shell mis &agrave; jour pour activer le nouveau param&egrave;tre <strong>PATH</strong>.</li></ol>
<a name="wq21"></a>
<h2 id="wq21"><a href="#ToC_17">D&eacute;finition du CLASSPATH</a></h2>
<p>Le <strong>CLASSPATH</strong> indique aux outils SDK, tels que <strong>java</strong>, <strong>javac</strong> et <strong>javadoc</strong>, l'emplacement des biblioth&egrave;ques de classes Java.</p>
<p>Vous ne devez d&eacute;finir le <strong>CLASSPATH</strong> de mani&egrave;re explicite que
dans les cas suivants&nbsp;:</p>
<ul>
<li>Vous avez besoin d'une biblioth&egrave;que ou d'un fichier de classes diff&eacute;rent, que vous pouvez d&eacute;velopper par exemple,
et elle/il ne se trouve pas dans le r&eacute;pertoire de travail.
<br /></li>
<li>Vous changez l'emplacement des r&eacute;pertoires <strong>bin</strong> et <strong>lib</strong> et ils n'ont plus le m&ecirc;me r&eacute;pertoire parent commun.
<br /></li>
<li>Vous pr&eacute;voyez de d&eacute;velopper ou d'ex&eacute;cuter des applications qui utilisent diff&eacute;rents environnements
d'ex&eacute;cution sur le m&ecirc;me syst&egrave;me.
<br /></li></ul>
<p>Pour afficher la valeur actuelle du <strong>CLASSPATH</strong>, entrez ce qui suit &agrave; l'invite shell&nbsp;:</p>
<pre class="xmp">  echo $CLASSPATH</pre>
<p>Si vous pr&eacute;voyez de d&eacute;velopper et d'ex&eacute;cuter des applications qui utilisent diff&eacute;rents
environnements d'ex&eacute;cution, y compris d'autres versions que vous avez install&eacute;es s&eacute;par&eacute;ment,
vous devez d&eacute;finir le <strong>CLASSPATH</strong> (et <strong>PATH</strong>) explicitement pour chaque application. Si vous pr&eacute;voyez d'ex&eacute;cuter plusieurs applications
simultan&eacute;ment et d'utiliser des environnements d'ex&eacute;cution diff&eacute;rents, chaque application doit &ecirc;tre ex&eacute;cut&eacute;e dans le shell qui lui est propre.</p>
<p>Si vous souhaitez ex&eacute;cuter une seule version de Java &agrave; la fois, vous pouvez utiliser un script shell pour passer d'un environnement d'ex&eacute;cution &agrave; l'autre.</p>
<br />
<a name="invint"></a>
<h1 id="invint"><a href="#ToC_18">Utilisation du Runtime Environment</a></h1>
<p>L'outil <strong>java</strong> lance une application Java en
d&eacute;marrant Java Runtime Environment et en chargeant une classe
d&eacute;termin&eacute;e.</p>
<p>La machine virtuelle recherche la classe initiale (et d'autres
classes utilis&eacute;es) &agrave; trois emplacements&nbsp;: le chemin d'acc&egrave;s &agrave; la
classe d'amorce, les extensions install&eacute;es et le chemin d'acc&egrave;s &agrave; la
classe utilisateur. Les arguments ajout&eacute;s apr&egrave;s le nom de la classe
ou du fichier JAR sont transmis &agrave; la fonction main.</p>
<p>La commande <strong>javaw</strong> est
identique &agrave; <strong>java</strong>,
sauf qu'elle n'est associ&eacute;e &agrave; aucune fen&ecirc;tre de console. Utilisez la commande <strong>javaw</strong> lorsque vous ne souhaitez
pas qu'une fen&ecirc;tre d'invite s'affiche. Si le lancement &eacute;choue, le programme de lancement de
<strong>javaw</strong> affiche une bo&icirc;te de dialogue contenant
un message d'erreur. </p>
<p>Les commandes <strong>java</strong> et
<strong>javaw</strong> ob&eacute;issent &agrave; la syntaxe suivante&nbsp;:</p>
<pre class="xmp">java [ options ] <em>class</em> [ arguments ... ]
java [ options ] -jar <em>file.jar</em> [ arguments ... ]
javaw [ options ] <em>class</em> [ arguments ... ]
javaw [ options ] -jar <em>file.jar</em> [ arguments ... ]
</pre><p class="indatacontent">Les &eacute;l&eacute;ments plac&eacute;s entre crochets sont facultatifs.</p>
<p></p>
<dl class="parml">
<dt class="bold">options</dt>
<dd>Options de ligne de commande.
</dd>
<dt class="bold">class</dt>
<dd>Nom de la classe &agrave; appeler.
</dd>
<dt class="bold">file.jar</dt>
<dd>Nom du fichier jar &agrave; appeler. Il est uniquement employ&eacute; avec <strong>-jar</strong>.
</dd>
<dt class="bold">arguments</dt>
<dd>Arguments transmis &agrave; la fonction <strong>main</strong>.
</dd>
</dl>
<p>Si l'option <strong>-jar</strong> est indiqu&eacute;e, le
fichier JAR nomm&eacute; contient des fichiers de classes et de ressources
pour l'application, la classe d'amorce &eacute;tant signal&eacute;e par
l'en-t&ecirc;te de manifeste de classe principale.  </p>
<a name="wq22"></a>
<h2 id="wq22"><a href="#ToC_19">Options</a></h2>
<p>Le programme de lancement contient un jeu d'options standard qui
sont prises en charge dans l'environnement d'ex&eacute;cution courant et qui
le seront &eacute;galement dans les prochaines &eacute;ditions. Il contient &eacute;galement un jeu
d'options non standard. Les options par d&eacute;faut ont &eacute;t&eacute; choisies pour une utilisation
d'ordre g&eacute;n&eacute;ral optimale. Vous devez &ecirc;tre vigilant lorsque vous d&eacute;cidez d'apporter des modifications
&agrave; ces options.</p>
<a name="wq23"></a>
<h3 id="wq23"><a href="#ToC_20">Indication des options Java et des propri&eacute;t&eacute;s syst&egrave;me</a></h3>
<p>Vous pouvez indiquer des options Java et des propri&eacute;t&eacute;s syst&egrave;mes de trois
diff&eacute;rentes mani&egrave;res&nbsp;:
Voici ces diff&eacute;rents m&eacute;thodes class&eacute;es par ordre de pr&eacute;f&eacute;rence&nbsp;:</p>
<ol type="1">
<li>En indiquant l'option ou la propri&eacute;t&eacute; sur la ligne de commande, par exemple<tt class="xph">java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump MyJavaClass</tt>.</li>
<li>En cr&eacute;ant un fichier qui contient les options et en indiquant ce fichier sur la ligne de commande
de la mani&egrave;re suivante <strong>-Xoptionsfile=<em>&lt;nomfichier></em></strong>.</li>
<li>En cr&eacute;ant une variable d'environnement appel&eacute;e <strong>IBM_JAVA_OPTIONS</strong> contenant les options, par exemple <tt class="xph">export IBM_JAVA_OPTIONS=&quot;-Dmysysprop1=tcpip -Dmysysprop2=wait
-Xdisablejavadump&quot;</tt>.</li></ol>
<p>Les options les plus &agrave; droite &agrave; la ligne de commande ont
priorit&eacute; sur celles &agrave; gauche&nbsp;: par exemple, si vous entrez les
options <tt class="xph">-Xint -Xjit myClass</tt>, <strong>-Xjit</strong> est prioritaire.</p>
<a name="wq25"></a>
<h3 id="wq25"><a href="#ToC_21">Options standard</a></h3>
<ul class="simple">
<li>
<span class="term"><strong>-D</strong>&lt;<em>nom_propri&eacute;t&eacute;</em>>=&lt;<em>valeur</em>></span>
<ul class="simple">
<li>D&eacute;finit une propri&eacute;t&eacute; syst&egrave;me. </li></ul></li>
<li><strong>-assert</strong>
<ul class="simple">
<li>Affiche l'aide sur des options d'assertion.</li></ul></li>
<li><strong>-cp</strong> ou <strong>-classpath</strong> &lt;<em>r&eacute;pertoires et fichiers
ZIP ou JAR s&eacute;par&eacute;s par un point-virgule (:)></em>
<ul class="simple">
<li>D&eacute;finit le chemin de recherche pour les classes et ressources
de l'application. Si <strong>-classpath</strong> et
<strong>-cp </strong> ne sont pas utilis&eacute;es et que la variable
<strong>CLASSPATH</strong> n'est pas d&eacute;finie, le chemin d'acc&egrave;s
aux classes de l'utilisateur correspond par d&eacute;faut au r&eacute;pertoire en
cours (.).</li></ul></li>
<li><strong>-help</strong> ou <strong>-?</strong>
<ul class="simple">
<li>Affiche un message d'aide.</li></ul></li>
<li><strong>-showversion</strong>
<ul class="simple">
<li>Affiche la version du produit et continue la proc&eacute;dure.</li></ul></li>
<li><strong>-verbose</strong>:[<em>class</em>,<em>gcterse</em>,<em>gc</em>,<em>dynload</em>,<em>stackwalk</em>,<em>sizes</em>,<em>stack</em>,<em>debug</em>,<em>jni</em>]
<ul class="simple">
<li>Active le mode prolixe.</li></ul></li>
<li><strong>-version</strong>
<ul class="simple">
<li>Affiche la version du produit.</li></ul></li>
<li><strong>-version:</strong><em>&lt;valeur></em>
<ul class="simple">
<li>Requiert l'ex&eacute;cution de la version indiqu&eacute;e.</li></ul></li>
<li><strong>-jre-restrict-search</strong>
<ul class="simple">
<li>Inclue des JRE priv&eacute;s de l'utilisateur dans la recherche de version</li></ul></li>
<li><strong>-no-jre-restrict-search</strong>
<ul class="simple">
<li>Exclut les JRE priv&eacute;s de l'utilisateur de la recherche de version</li></ul></li>
<li><strong>-agentlib:</strong>&lt;<em>nombiblioth&egrave;que</em>>[=&lt;<em>options</em>>]
<ul class="simple">
<li>load native agent library &lt;libname>, par exemple <strong>-agentlib:hprof</strong>.  Pour plus d'informations, indiquez <strong>-agentlib:jdwp=help</strong> et <strong>-agentlib:hprof=help</strong> sur la ligne de commande.</li></ul></li>
<li><strong>-agentpath:</strong><em>nombiblioth&egrave;que</em>[=&lt;<em>options</em>>]
<ul class="simple">
<li>Charge la biblioth&egrave;que agent native en utilisant le chemin complet</li></ul></li>
<li><strong>-javaagent:</strong>&lt;<em>cheminjar</em>>[=&lt;<em>options</em>>]
<ul class="simple">
<li>Charge l'agent de langage de programmation Java. Pour plus d'informations, reportez-vous &agrave; la documentation
de l'API java.lang.instrument.</li></ul></li>
<li><strong>-X</strong>
<ul class="simple">
<li>Affiche l'aide concernant les options non standard.</li></ul></li></ul>
<a name="xoptions"></a>
<h3 id="xoptions"><a href="#ToC_22">Options non standard</a></h3>
<p>Les options <strong>-X</strong> ci-apr&egrave;s ne sont pas
standard et peuvent &ecirc;tre modifi&eacute;es sans pr&eacute;avis. </p>
<p>Pour celles employant le param&egrave;tre <em>&lt;taille></em>, vous devez
ajouter "k" ou "K" au nombre pour indiquer qu'il s'agit de kilo-octets, "m" ou "M"
de m&eacute;gaoctets ou bien "g" ou "G" de gigaoctets.</p>
<ul class="simple">
<li><strong>-Xargencoding</strong>
<ul class="simple">
<li>Vous permet d'int&eacute;grer des s&eacute;quences d'&eacute;chappement Unicode &agrave; la
liste d'arguments. Cette option est par d&eacute;faut d&eacute;sactiv&eacute;e.</li></ul></li>
<li><strong>-Xbootclasspath:</strong>&lt;<em>r&eacute;pertoires
et fichiers ZIP ou JAR s&eacute;par&eacute;s par un point-virgule (;)</em>>
<ul class="simple">
<li>D&eacute;finit le chemin de recherche pour les classes et ressources
d'amorce. Par d&eacute;faut,
les classes et ressources d'amorce sont recherch&eacute;es dans les fichiers
.jar et les r&eacute;pertoires internes de la machine virtuelle.</li></ul></li>
<li><strong>-Xbootclasspath/a:</strong>&lt;<em>r&eacute;pertoires
et fichiers ZIP ou JAR s&eacute;par&eacute;s par un point-virgule (;)</em>>
<ul class="simple">
<li>Ajoute les r&eacute;pertoires, zip ou fichiers jar indiqu&eacute;s &agrave; la
fin du chemin d'acc&egrave;s aux classes d'amorce. Par d&eacute;faut,
les classes et ressources d'amorce sont recherch&eacute;es dans les fichiers
.jar et les r&eacute;pertoires internes de la machine virtuelle.</li></ul></li>
<li><strong>-Xbootclasspath/p:</strong>&lt;<em>r&eacute;pertoires
et fichiers ZIP ou JAR s&eacute;par&eacute;s par un point-virgule (;)</em>>
<ul class="simple">
<li>Place les r&eacute;pertoires, zip ou fichiers jar indiqu&eacute;s au d&eacute;but du
chemin d'acc&egrave;s aux classes d'amorce. Ne d&eacute;ployez pas des applications
utilisant l'option <strong>-Xbootclasspath:</strong> ou
<strong>-Xbootclasspath/p:</strong> pour remplacer une classe
dans l'API standard&nbsp;; en effet, ce d&eacute;ploiement va &agrave; l'encontre de la
licence du code binaire de Java 2 Runtime Environment. Par d&eacute;faut,
les classes et ressources d'amorce sont recherch&eacute;es dans les fichiers
.jar et les r&eacute;pertoires internes de la machine virtuelle.</li></ul></li>
<li id="xcheckjni">
<a name="xcheckjni"></a><strong>-Xcheck:jni</strong>
<ul class="simple">
<li>Effectue des v&eacute;rifications compl&eacute;mentaires pour les fonctions
JNI. Vous pouvez &eacute;galement utiliser
<a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a>. Par
d&eacute;faut, aucune v&eacute;rification n'est r&eacute;alis&eacute;e.</li></ul></li>
<li><strong>-Xcheck:nabounds</strong>
<ul class="simple">
<li>Effectue des v&eacute;rifications compl&eacute;mentaires pour les op&eacute;rations de
tableau JNI.  Vous pouvez &eacute;galement utiliser
<a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a>. Par
d&eacute;faut, aucune v&eacute;rification n'est r&eacute;alis&eacute;e.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xclassgc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option active la collection d'objets de classes &agrave; chaque
<span id="changed">|</span>r&eacute;cup&eacute;ration de place.
<span id="changed">|</span>Par d&eacute;faut, elle est activ&eacute;e.</li></ul></font></li>
<li id="compactexplicitgc">
<a name="compactexplicitgc"></a><strong>-Xcompactexplicitgc</strong>
<ul class="simple">
<li>Effectue une compression &agrave; chaque appel de <tt class="xph">System.gc()</tt>. Voir
aussi <a href="#nocompactexplicitgc"><strong>-Xnocompactexplicitgc</strong></a>. Par d&eacute;faut, la compression se
produit uniquement si elle est d&eacute;clench&eacute;e en interne.</li></ul></li>
<li id="compactgc">
<a name="compactgc"></a><strong>-Xcompactgc</strong>
<ul class="simple">
<li>Effectue une compression de chaque cycle du r&eacute;cup&eacute;rateur de
place. Voir aussi <a href="#nocompactgc"><strong>-Xnocompactgc</strong></a>. Par d&eacute;faut, la compression se
produit uniquement si elle est d&eacute;clench&eacute;e en interne.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentbackground</strong> <em>&lt;nombre></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option indique le nombre de threads
<span id="changed">|</span>d'arri&egrave;re-plan de faible priorit&eacute; qui sont associ&eacute;s pour assister
<span id="changed">|</span>les threads de mutation lors du marquage concurrent.  La valeur par
<span id="changed">|</span>d&eacute;faut est 1.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentlevel</strong> <em>&lt;nombre></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option indique le taux de "taxe" d'attribution.  Elle
<span id="changed">|</span>indique le rapport entre la quantit&eacute; de segments de m&eacute;moire allou&eacute;s
<span id="changed">|</span>et celle de segments marqu&eacute;s.  La valeur par d&eacute;faut est 8.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconmeter:&lt;soa | loa |
<span id="changed">|</span>dynamic></strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option d&eacute;termine l'usage de la zone (LOA ou SOA) qui est
<span id="changed">|</span>mesur&eacute; et donc les attributions tax&eacute;es lors du marquage
<span id="changed">|</span>concurrent. <strong>-Xconmeter:soa</strong> applique la
<span id="changed">|</span>taxe aux attributions &agrave; partir la zone de petits objets (SOA),
<span id="changed">|</span><strong>-Xconmeter:loa</strong> &agrave; la zone d'objets
<span id="changed">|</span>volumineux (LOA). Si vous entrez
<span id="changed">|</span><strong>-Xconmeter:dynamic</strong>, le collecteur identifie
<span id="changed">|</span>de fa&ccedil;on dynamique la zone &agrave; mesurer en fonction de celle
<span id="changed">|</span>s'&eacute;puisant en premier (SOA ou LOA). Par d&eacute;faut, cette option a la valeur <strong>-Xconmeter:soa</strong>.</li></ul></font></li>
<li id="xdbg">
<a name="xdbg"></a><strong>-Xdbg:</strong>&lt;<em>options</em>>
<ul class="simple">
<li>Charge les biblioth&egrave;ques de d&eacute;bogage pour prendre en charge les
applications de d&eacute;bogage &eacute;loign&eacute;es.
Identique &agrave; <a href="#runjdwp"><strong>-Xrunjdwp</strong></a>.
Par d&eacute;faut, les biblioth&egrave;ques de d&eacute;bogage ne sont pas charg&eacute;es et
l'instance de la machine virtuelle ne peut proc&eacute;der au d&eacute;bogage.</li></ul></li>
<li><strong>-Xdbginfo:</strong>&lt;<em>chemin
d'acc&egrave;s au fichier de symboles</em>>
<ul class="simple">
<li>Charge et transmet des options au serveur d'informations de
d&eacute;bogage. Par d&eacute;faut, ce serveur est d&eacute;sactiv&eacute;.</li></ul></li>
<li><strong>-Xdebug</strong>
<ul class="simple">
<li>Lance la machine virtuelle avec le d&eacute;bogueur activ&eacute;. Par d&eacute;faut,
le d&eacute;bogueur est d&eacute;sactiv&eacute;.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xdisableexcessivegc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option d&eacute;sactive le lancement d'une exception OutOfMemory
<span id="changed">|</span>si la r&eacute;cup&eacute;ration de place prend trop de temps. Elle est par d&eacute;faut
<span id="changed">|</span>d&eacute;sactiv&eacute;e.</li></ul></font></li>
<li><strong>-Xdisableexplicitgc</strong>
<ul class="simple">
<li>Signale &agrave; la machine virtuelle que des appels de
<tt class="xph">System.gc()</tt> seront sans incidence. Par d&eacute;faut, des appels
de <tt class="xph">System.gc()</tt> d&eacute;clenchent une r&eacute;cup&eacute;ration de place.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xdisablestringconstantgc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option emp&ecirc;che la r&eacute;cup&eacute;ration de cha&icirc;nes dans la table
<span id="changed">|</span>interne de cha&icirc;nes.
<span id="changed">|</span>Par d&eacute;faut, elle est d&eacute;sactiv&eacute;e.</li></ul></font></li>
<li><strong>-Xdisablejavadump</strong>
<ul class="simple">
<li>D&eacute;sactive la g&eacute;n&eacute;ration javadump en cas d'erreurs et de
signaux. Par d&eacute;faut, la g&eacute;n&eacute;ration javadump est activ&eacute;e.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xenableexcessivegc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Si la r&eacute;cup&eacute;ration de place dure trop longtemps, cette option
<span id="changed">|</span>renvoie la valeur NULL pour une demande d'allocation et provoque le
<span id="changed">|</span>lancement d'une exception OutOfMemory.  Cette action se produit
<span id="changed">|</span>uniquement lorsque le segment de m&eacute;moire a &eacute;t&eacute; totalement &eacute;tendu
<span id="changed">|</span>et que le temps pass&eacute; repr&eacute;sente au moins 95 %. Il s'agit du
<span id="changed">|</span>comportement par d&eacute;faut.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xenablestringconstantgc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option active des cha&icirc;nes dans la table interne de
<span id="changed">|</span>cha&icirc;nes &agrave; r&eacute;cup&eacute;rer.
<span id="changed">|</span>Par d&eacute;faut, elle est activ&eacute;e.</li></ul></font></li>
<li><strong>-Xfuture</strong>
<ul class="simple">
<li>Active des v&eacute;rifications strictes de format de fichier de classe. Utilisez
cette option lors du d&eacute;veloppement de code car des v&eacute;rifications plus
strictes seront &agrave; l'avenir appliqu&eacute;es par d&eacute;faut.
Par d&eacute;faut, les
v&eacute;rifications strictes de format sont d&eacute;sactiv&eacute;es.</li></ul></li>
<li><strong>-Xgcpolicy:[optthruput]|[optavgpause]|[gencon]</strong>
<ul class="simple">
<li>Contr&ocirc;le le comportement du r&eacute;cup&eacute;rateur de place. L'option
<em>optthruput</em> est celle par d&eacute;faut&nbsp;: elle offre un
rendement tr&egrave;s &eacute;lev&eacute; aux applications, mais implique parfois des pauses. L'option <em>optavgpause</em> r&eacute;duit le temps pass&eacute;
aux pauses dans la r&eacute;cup&eacute;ration de place et limite l'effet d'une
taille accrue de segment de m&eacute;moire sur la longueur de ces pauses. Utilisez
cette option si votre configuration poss&egrave;de un segment de m&eacute;moire
tr&egrave;s important. L'option <em>gencon</em> demande
l'utilisation combin&eacute;e de r&eacute;cup&eacute;rations de place concurrentes et
g&eacute;n&eacute;rationnelles afin de r&eacute;duire le temps des pauses dans ce
processus.  Pour
en savoir plus, voir <a href="#garbage">D&eacute;finition des r&egrave;gles de
r&eacute;cup&eacute;ration de place</a>.</li></ul></li>
<li><strong>-Xgcthreads</strong>&lt;<em>nombre de threads</em>>
<ul class="simple">
<li>D&eacute;finit le nombre de threads auxiliaires employ&eacute;s
pour des op&eacute;rations en parall&egrave;le de la r&eacute;cup&eacute;ration de place. Par
d&eacute;faut, le nombre de threads &eacute;quivaut au nombre d'unit&eacute;s
centrales physiques -1, le minimum &eacute;tant 1.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xgcworkpackets</strong> <em>&lt;nombre></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option indique le nombre total de paquets de mots
<span id="changed">|</span>disponibles dans le collecteur. Si elle n'est pas indiqu&eacute;e, le
<span id="changed">|</span>collecteur attribue un nombre de paquets en fonction de la taille
<span id="changed">|</span>maximum du segment de m&eacute;moire.</li></ul></font></li>
<li><strong>-Xint</strong>
<ul class="simple">
<li>Fait que la machine virtuelle Java utilise uniquement l'interpr&eacute;teur, en d&eacute;sactivant le
compilateur JIT (Just-In-Time). Par
d&eacute;faut, le compilateur JIT est activ&eacute;.</li></ul></li>
<li><strong>-Xiss</strong><em>&lt;taille></em>
<ul class="simple">
<li>D&eacute;finit la taille initiale de la pile de threads Java. Par
d&eacute;faut, elle est de kilo-octets.</li></ul></li>
<li id="xjit">
<a name="xjit"></a><strong>-Xjit</strong>[:&lt;<em>sous-option</em>>,&lt;<em>sous-option</em>>,...]
<ul class="simple">
<li>Active le compilateur JIT. Pour en savoir plus sur les
sous-options, voir le document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>. Voir
aussi <a href="#xnojit"><strong>-Xnojit</strong></a>. Par
d&eacute;faut, il est activ&eacute;.</li></ul></li>
<li id="xlinenumbers">
<a name="xlinenumbers"></a><strong>-Xlinenumbers</strong>
<ul class="simple">
<li>Affiche les num&eacute;ros de lignes dans les traces de pile pour le
d&eacute;bogage. Voir aussi <a href="#xnolinenumbers"><strong>-Xnolinenumbers</strong></a>. Par
d&eacute;faut, les num&eacute;ros de lignes sont activ&eacute;s.</li></ul></li>
<li id="loa">
<a name="loa"></a><font color="red"><span id="changed">|</span><strong>-Xloa</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option attribue une zone d'objets volumineux, &eacute;galement appel&eacute;e zone LOA. Les objets
<span id="changed">|</span>seront allou&eacute;es dans cette zone et non dans la zone SOA. Par d&eacute;faut, la zone LOA
<span id="changed">|</span>est activ&eacute;e pour les toutes les r&egrave;gles de r&eacute;cup&eacute;ration de place, sauf pour le sous-pool dans lequel
<span id="changed">|</span>la zone LOA n'est pas disponible. Voir aussi <a href="#noloa"><strong>-Xnoloa</strong></a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloainitial</strong> <em>&lt;nombre></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;nombre> est compris entre 0
<span id="changed">|</span>et 0,95 et repr&eacute;sente le pourcentage initial de l'espace de
<span id="changed">|</span>conservation allou&eacute; &agrave; la zone d'objets volumineux (LOA). La valeur
<span id="changed">|</span>par d&eacute;faut est 0,05 ou 5 %. </li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloamaximum</strong> <em>&lt;nombre></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;nombre> est compris entre 0 et 0,95 et repr&eacute;sente le pourcentage maximal de l'espace de
<span id="changed">|</span>conservation allou&eacute; &agrave; la zone d'objets volumineux (LOA). La valeur
<span id="changed">|</span>par d&eacute;faut est 0,5 ou 50 %.</li></ul></font></li>
<li><strong>-Xmaxe</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la quantit&eacute; maximum d'augmentation du segment de
m&eacute;moire par le r&eacute;cup&eacute;rateur de place.
En g&eacute;n&eacute;ral, le
r&eacute;cup&eacute;rateur de place augmente le segment de m&eacute;moire lorsque la
quantit&eacute; d'espace libre est inf&eacute;rieure &agrave; 30 % (ou la quantit&eacute;
indiqu&eacute;e avec <strong>-Xminf</strong>). Cette augmentation est
la quantit&eacute; requise pour restaurer l'espace libre &agrave; 30 %. L'option <strong>-Xmaxe</strong> limite l'augmentation &agrave; la valeur
indiqu&eacute;e&nbsp;: par exemple <tt class="xph"> -Xmaxe10M</tt> la limite &agrave; 10 Mo. Par
d&eacute;faut, il n'existe pas de taille d'augmentation maximum.</li></ul></li>
<li><strong>-Xmaxf</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>Indique le pourcentage maximum de segment de m&eacute;moire devant &ecirc;tre
lib&eacute;r&eacute; apr&egrave;s une r&eacute;cup&eacute;ration de place.  Si cet espace d&eacute;passe cette
quantit&eacute;, la machine virtuelle Java tente de r&eacute;duire le segment de
m&eacute;moire. Indiquez la taille sous forme de valeur d&eacute;cimale
comprise entre 0 et 1&nbsp;: par exemple, <tt class="xph">-Xmaxf0.5</tt> d&eacute;finit
l'espace libre maximum &agrave; 50 %. La valeur par d&eacute;faut est 0,6 (60 %).</li></ul></li>
<li><strong>-Xmca</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit l'ampleur d'augmentation de la m&eacute;moire allou&eacute;e pour
stocker la partie RAM des classes charg&eacute;es. Chaque fois que plus de
m&eacute;moire est requise pour stocker des classes dans la m&eacute;moire RAM, la
m&eacute;moire allou&eacute;e est augment&eacute;e de cette quantit&eacute;. Par d&eacute;faut,
l'ampleur d'augmentation est de 32 ko.</li></ul></li>
<li><strong>-Xmco</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit l'ampleur d'augmentation de la m&eacute;moire allou&eacute;e pour
stocker la partie ROM des classes charg&eacute;es. Chaque fois que plus de
m&eacute;moire est requise pour stocker des classes dans la m&eacute;moire ROM, la
m&eacute;moire allou&eacute;e est augment&eacute;e de cette quantit&eacute;. Par d&eacute;faut,
l'ampleur d'augmentation est de 128 ko.</li></ul></li>
<li><strong>-Xmine</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la quantit&eacute; minimum d'augmentation du segment de
m&eacute;moire par le r&eacute;cup&eacute;rateur de place.
En g&eacute;n&eacute;ral, le r&eacute;cup&eacute;rateur de place augmente le segment de m&eacute;moire de la quantit&eacute; requise pour
restaurer l'espace libre &agrave; 30 % (ou la quantit&eacute; indiqu&eacute;e avec <strong>-Xminf</strong>). L'option
<strong>-Xmine</strong> d&eacute;finit l'augmentation moins &agrave; la valeur
indiqu&eacute;e&nbsp;: par exemple, <tt class="xph">-Xmine50M</tt> d&eacute;finit la taille
d'augmentation &agrave; un minimum de 50 Mo. Par d&eacute;faut, la taille
d'augmentation minimum est d'1 Mo.</li></ul></li>
<li><strong>-Xminf</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>Indique le pourcentage minimum de segment de m&eacute;moire devant &ecirc;tre
lib&eacute;r&eacute; apr&egrave;s une r&eacute;cup&eacute;ration de place.  Si cet espace est
inf&eacute;rieur &agrave; cette quantit&eacute;, la machine virtuelle Java tente
d'augmenter le segment de m&eacute;moire. Indiquez la taille sous forme de
valeur d&eacute;cimale comprise entre 0 et 1&nbsp;: par exemple, une valeur de
<tt class="xph">-Xminf0.3</tt> demande que l'espace libre minimum
repr&eacute;sente 30 % du segment de m&eacute;moire. Par d&eacute;faut, la valeur minimum
est de 0,3.</li></ul></li>
<li><strong>-Xmn</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille initiale et maximum du nouveau segment de
m&eacute;moire (nursery) &agrave; la valeur indiqu&eacute;e lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Revient &agrave; d&eacute;finir
<strong>-Xmns</strong> et <strong>-Xmnx</strong>.  <span><font color="red"><span id="changed">|</span>Si vous d&eacute;finissez <strong>-Xmns</strong> ou <strong>-Xmnx</strong>,
<span id="changed">|</span>vous ne pouvez pas d&eacute;finir <strong>-Xmn</strong>. Si vous tentez de d&eacute;finir
<span id="changed">|</span><strong>-Xmn</strong> avec <strong>-Xmns</strong> ou <strong>-Xmnx</strong>, la machine virtuelle ne
<span id="changed">|</span>d&eacute;marre pas et renvoie une erreur.</font></span> Par d&eacute;faut,
<strong>-Xmn</strong> est s&eacute;lectionn&eacute;e en interne selon la
fonction de votre syst&egrave;me. Vous
pouvez utiliser l'option <strong>-verbose:sizes</strong> pour
identifier les valeurs utilis&eacute;es par la machine virtuelle.</li></ul></li>
<li><strong>-Xmns</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille initiale du nouveau segment de
m&eacute;moire (nursery) &agrave; la valeur indiqu&eacute;e lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Par d&eacute;faut, cette option est
s&eacute;lectionn&eacute;e en interne selon la fonction de votre syst&egrave;me. <span><font color="red"><span id="changed">|</span>Cette
<span id="changed">|</span>option renvoie une erreur si vous tentez de l'utiliser avec
<span id="changed">|</span><strong>-Xmn</strong>.</font></span></li></ul></li>
<li><strong>-Xmnx</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille maximale du nouveau segment de
m&eacute;moire (nursery) &agrave; la valeur indiqu&eacute;e lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Par d&eacute;faut, cette option est
s&eacute;lectionn&eacute;e en interne selon la fonction de votre syst&egrave;me. <span><font color="red"><span id="changed">|</span>Cette
<span id="changed">|</span>option renvoie une erreur si vous tentez de l'utiliser avec
<span id="changed">|</span><strong>-Xmn</strong>.</font></span></li></ul></li>
<li id="xmo">
<a name="xmo"></a><strong>-Xmo</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille initiale et maximum de l'ancien segment de
m&eacute;moire (conservation) &agrave; la valeur indiqu&eacute;e lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Revient &agrave; d&eacute;finir
<strong>-Xmos</strong> et <strong>-Xmox</strong>. <span><font color="red"><span id="changed">|</span>Si
<span id="changed">|</span>vous d&eacute;finissez <strong>-Xmos</strong> ou <strong>-Xmox</strong>, vous ne pouvez
<span id="changed">|</span>pas d&eacute;finir <strong>-Xmo</strong>. Si vous tentez de d&eacute;finir
<span id="changed">|</span><strong>-Xmo</strong> avec <strong>-Xmos</strong> ou
<span id="changed">|</span><strong>-Xmox</strong>, la machine virtuelle ne d&eacute;marre pas et
<span id="changed">|</span>renvoie une erreur.</font></span> Par d&eacute;faut, <strong>-Xmo</strong> est
s&eacute;lectionn&eacute;e en interne selon la fonction de votre syst&egrave;me. Vous
pouvez utiliser l'option <strong>-verbose:sizes</strong> pour
identifier les valeurs utilis&eacute;es par la machine virtuelle.</li></ul></li>
<li><strong>-Xmos</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille initiale de l'ancien segment de
m&eacute;moire (conservation) &agrave; la valeur indiqu&eacute;e lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Par d&eacute;faut, cette option est
s&eacute;lectionn&eacute;e en interne selon la fonction de votre syst&egrave;me. <span><font color="red"><span id="changed">|</span>Cette option renvoie une erreur si vous tentez de
<span id="changed">|</span>l'utiliser avec <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmox</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille maximale de l'ancien segment de
m&eacute;moire (conservation) &agrave; la valeur indiqu&eacute;e lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Par d&eacute;faut, cette option est
s&eacute;lectionn&eacute;e en interne selon la fonction de votre syst&egrave;me. <span><font color="red"><span id="changed">|</span>Cette option renvoie une erreur si vous tentez de
<span id="changed">|</span>l'utiliser avec <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmoi</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la quantit&eacute; d'incr&eacute;ment du segment de m&eacute;moire Java lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. S'il
s'agit de z&eacute;ro, aucune augmentation n'est autoris&eacute;e. Par d&eacute;faut, la
taille d'incr&eacute;ment est calcul&eacute;e par rapport &agrave; celle d'augmentation,
<strong>-Xmine</strong> et <strong>-Xminf</strong>.</li></ul></li>
<li><strong>-Xmr</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille de l'ensemble de t&acirc;ches &agrave; faire pour la
r&eacute;cup&eacute;ration de place lors de l'utilisation de <strong>-Xgcpolicy:gencon</strong>. Il s'agit d'une liste d'objets dans l'ancien
segment de m&eacute;moire (conservation) ayant des r&eacute;f&eacute;rences &agrave; des
objets dans le nouveau segment de m&eacute;moire (nursery).
Par d&eacute;faut,
cette option est de 16 kilo-octets.</li></ul></li>
<li id="xms">
<a name="xms"></a><strong>-Xms</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille initiale du segment de m&eacute;moire Java.  Vous pouvez &eacute;galement utiliser
<a href="#xmo"><strong>-Xmo</strong></a>. La valeur par d&eacute;faut est d&eacute;finie en interne selon
la fonction de votre syst&egrave;me.</li></ul></li>
<li><strong>-Xmso</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille de la pile C pour les unit&eacute;s d'ex&eacute;cution Java cr&eacute;&eacute;es par fork. Par d&eacute;faut, cette option est d&eacute;finie &agrave; 32
kilo-octets, et &agrave; 256 kilo-octets sur des plateformes 64 bit.</li></ul></li>
<li><strong>-Xmx</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille maximum du segment de m&eacute;moire
Java. Par d&eacute;faut, cette option est d&eacute;finie en interne
selon la fonction de votre syst&egrave;me.</li></ul></li>
<li id="noclassgc">
<a name="noclassgc"></a><strong>-Xnoclassgc</strong>
<ul class="simple">
<li>D&eacute;sactive la r&eacute;cup&eacute;ration de place pour les classes. La
r&eacute;cup&eacute;ration de place est d&eacute;sactiv&eacute;e pour le stockage associ&eacute; aux
classes Java qui ne sont plus utilis&eacute;es par la machine virtuelle
Java. Le comportement par d&eacute;faut est <strong>-Xclassgc</strong>.</li></ul></li>
<li id="nocompactgc">
<a name="nocompactgc"></a><strong>-Xnocompactgc</strong>
<ul class="simple">
<li>D&eacute;sactive la compression pour le r&eacute;cup&eacute;rateur de place. Voir
aussi <a href="#compactgc"><strong>-Xcompactgc</strong></a>. Par
d&eacute;faut, la compression est activ&eacute;e.</li></ul></li>
<li id="nocompactexplicitgc">
<a name="nocompactexplicitgc"></a><strong>-Xnocompactexplicitgc</strong>
<ul class="simple">
<li>D&eacute;sactive la compression &agrave; un appel de <tt class="xph">System.gc()</tt>. Voir
aussi <a href="#compactexplicitgc"><strong>-Xcompactexplicitgc</strong></a>. Par
d&eacute;faut, la compression est activ&eacute;e lors d'appels de <tt class="xph">System.gc()</tt>.</li></ul></li>
<li id="xnojit">
<a name="xnojit"></a><strong>-Xnojit</strong>
<ul class="simple">
<li>D&eacute;sactive le compilateur JIT. Voir aussi <a href="#xjit"><strong>-Xjit</strong></a>. Par
d&eacute;faut, le compilateur JIT est activ&eacute;.</li></ul></li>
<li id="xnolinenumbers">
<a name="xnolinenumbers"></a><strong>-Xnolinenumbers</strong>
<ul class="simple">
<li>D&eacute;sactive les num&eacute;ros de lignes pour le d&eacute;bogage. Voir aussi <a href="#xlinenumbers"><strong>-Xlinenumbers</strong></a>. Par d&eacute;faut, les num&eacute;ros de
lignes sont activ&eacute;s.</li></ul></li>
<li id="noloa">
<a name="noloa"></a><font color="red"><span id="changed">|</span><strong>-Xnoloa</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option emp&ecirc;che l'attribution d'une zone d'objets
<span id="changed">|</span>volumineux. Tous les objets sont attribu&eacute;s dans la zone SOA. Par d&eacute;faut, la zone LOA
<span id="changed">|</span>est activ&eacute;e pour les toutes les r&egrave;gles de r&eacute;cup&eacute;ration de place, sauf pour le sous-pool dans lequel
<span id="changed">|</span>la zone LOA n'est pas disponible. Voir aussi <a href="#loa"><strong>-Xloa</strong></a>.</li></ul></font></li>
<li id="nopartialcompactgc">
<a name="nopartialcompactgc"></a><strong>-Xnopartialcompactgc</strong>
<ul class="simple">
<li>D&eacute;sactive la compression incr&eacute;mentielle. Voir aussi <a href="#partialcompactgc"><strong>-Xpartialcompactgc</strong></a>. Par d&eacute;faut, cette option
n'est pas d&eacute;finie et toutes les compressions sont compl&egrave;tes.</li></ul></li>
<li id="nosigcatch">
<a name="nosigcatch"></a><strong>-Xnosigcatch</strong>
<ul class="simple">
<li>D&eacute;sactive le code de gestion du signal de la machine
virtuelle Java. Voir aussi <a href="#sigcatch"><strong>-Xsigcatch</strong></a>. Par d&eacute;faut, la gestion du signal
est activ&eacute;e.</li></ul></li>
<li id="nosigchain">
<a name="nosigchain"></a><strong>-Xnosigchain</strong>
<ul class="simple">
<li>D&eacute;sactive le cha&icirc;nage du gestionnaire de signal. Voir aussi <a href="#sigchain"><strong>-Xsigchain</strong></a>. Par d&eacute;faut, le cha&icirc;nage du gestionnaire de
signal est activ&eacute;.</li></ul></li>
<li><strong>-Xoptionsfile</strong>=&lt;<em>fichier</em>>
<ul class="simple">
<li>Indique le fichier contenant les options de la machine
virtuelle Java et le d&eacute;finit. Par d&eacute;faut, aucun fichier d'options
n'est utilis&eacute;.</li></ul></li>
<li><strong>-Xoss</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille de la pile Java et la taille de la pile C pour les unit&eacute;s d'ex&eacute;cution. Cette action est fournie
pour la compatibilit&eacute; et &eacute;quivaut &agrave; attribuer la valeur indiqu&eacute;e &agrave; <strong>-Xss</strong> et &agrave; <strong>-Xmso</strong>.</li></ul></li>
<li id="partialcompactgc">
<a name="partialcompactgc"></a><strong>-Xpartialcompactgc</strong>
<ul class="simple">
<li>Active la compression partielle. Voir aussi <a href="#nopartialcompactgc"><strong>-Xnopartialcompactgc</strong></a>.</li></ul></li>
<li><strong>-Xquickstart</strong>
<ul class="simple">
<li>Am&eacute;liore le temps de d&eacute;marrage en retardant la compilation JIT et
les optimisations. Par d&eacute;faut, le d&eacute;marrage rapide est d&eacute;sactiv&eacute; et
la compilation JIT est imm&eacute;diate.</li></ul></li>
<li><strong>-Xrdbginfo:</strong><em>&lt;h&ocirc;te></em>:<em>&lt;port></em>
<ul class="simple">
<li>Charge et transmet des options au serveur d'informations de
d&eacute;bogage &eacute;loign&eacute;. Par d&eacute;faut, le serveur d'informations de d&eacute;bogage
&eacute;loign&eacute; est d&eacute;sactiv&eacute;.</li></ul></li>
<li><strong>-Xrs</strong>
<ul class="simple">
<li>R&eacute;duit l'utilisation des signaux du syst&egrave;me d'exploitation. Par
d&eacute;faut, la machine virtuelle utilise compl&egrave;tement les signaux du
syst&egrave;me d'exploitation&nbsp;; voir <a href="#sighand">Signaux utilis&eacute;s par la JVM</a>.</li></ul></li>
<li><strong>-Xrun</strong><em>&lt;nom
de biblioth&egrave;que></em>[:options]
<ul class="simple">
<li>Charge des biblioth&egrave;ques auxiliaires. Pour charger plusieurs
biblioth&egrave;ques, indiquez-les &agrave; la ligne de commande. Exemples de
biblioth&egrave;ques&nbsp;:
<ul>
<li><strong>-Xrunhprof</strong>[:help] | [:&lt;<em>option</em>>=&lt;<em>valeur</em>>, ...]
<ul class="simple">
<li>D&eacute;finit le profil du segment de m&eacute;moire, de l'unit&eacute;
centrale ou du moniteur. Pour en savoir plus, voir le document
<a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul></li>
<li id="runjdwp">
<a name="runjdwp"></a><strong>-Xrunjdwp</strong>[:help] | [:&lt;<em>option</em>>=&lt;<em>valeur</em>>, ...]
<ul class="simple">
<li>Charge les biblioth&egrave;ques de d&eacute;bogage pour prendre en charge les
applications de d&eacute;bogage &eacute;loign&eacute;es.
Identique &agrave; <a href="#xdbg"><strong>-Xdbg</strong></a>. Pour
en savoir plus, voir <a href="#debugger">D&eacute;bogage des applications Java</a>.</li></ul></li>
<li><a name="xrunjnichk"></a><strong id="xrunjnichk">-Xrunjnichk</strong>[:help] | [:&lt;<em>option</em>>=&lt;<em>valeur</em>>, ...]
<ul class="simple">
<li>Effectue d'autres v&eacute;rifications pour les fonctions JNI
afin d'assurer le suivi d'erreurs dans des programmes natifs
acc&eacute;dant &agrave; la machine virtuelle Java avec JNI. Pour en savoir plus,
voir le document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul></li></ul></li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xscmx</strong>&lt;<em>taille</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Pour en savoir plus sur <strong>-Xscmx</strong>, voir <a href="#sharedclassesxoptions">Utilisation d'options de ligne de commande pour le partage de
<span id="changed">|</span>classes</a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xshareclasses:</strong>&lt;<em>sous-options</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Pour en savoir plus sur les sous-options
<span id="changed">|</span><strong>-Xshareclasses</strong>, voir <a href="#sharedclassesxoptions">Utilisation d'options de ligne de commande pour le partage de
<span id="changed">|</span>classes</a>.</li></ul></font></li>
<li id="sigcatch">
<a name="sigcatch"></a><strong>-Xsigcatch</strong>
<ul class="simple">
<li>Active le code de gestion du signal de la machine
virtuelle. Voir aussi <a href="#nosigcatch"><strong>-Xnosigcatch</strong></a>. Par d&eacute;faut, la gestion du signal
est activ&eacute;e.</li></ul></li>
<li id="sigchain">
<a name="sigchain"></a><strong>-Xsigchain</strong>
<ul class="simple">
<li>Active le cha&icirc;nage du gestionnaire de signal. Voir aussi <a href="#nosigchain"><strong>-Xnosigchain</strong></a>. Par d&eacute;faut, le cha&icirc;nage du
gestionnaire de signal est activ&eacute;.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xsoftrefthreshold</strong>&lt;<em>nombre</em>> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option d&eacute;finit le nombre de r&eacute;cup&eacute;rations de place
<span id="changed">|</span>au terme desquelles une r&eacute;f&eacute;rence est effac&eacute;e si l'&eacute;l&eacute;ment
<span id="changed">|</span>concern&eacute; n'a pas &eacute;t&eacute; marqu&eacute;.  La valeur par d&eacute;faut est 3, ce qui
<span id="changed">|</span>signifie qu'&agrave; la troisi&egrave;me r&eacute;cup&eacute;ration de place sans marquage de
<span id="changed">|</span>l'&eacute;l&eacute;ment, une r&eacute;f&eacute;rence est supprim&eacute;e.</li></ul></font></li>
<li><strong>-Xss</strong>&lt;<em>taille</em>>
<ul class="simple">
<li>D&eacute;finit la taille de pile Java maximale pour les unit&eacute;s d'ex&eacute;cution.  Par d&eacute;faut, cette option a la valeur 256 Ko.</li></ul></li>
<li><strong>-Xthr:</strong>&lt;<em>options</em>>
<ul class="simple">
<li>D&eacute;finit les options de threads.</li></ul></li>
<li><strong>-Xverbosegclog</strong>:&lt;<em>chemin d'acc&egrave;s au fichier</em>>&lt;<em>nomfichier</em>>[X, Y]
<ul class="simple">
<li>Force l'&eacute;criture de la sortie verboseGC dans le fichier sp&eacute;cifi&eacute;. Si ce fichier existe, la sortie remplace son contenu. Si ce fichier existe mais qu'il ne peut pas &ecirc;tre ouvert ou s'il est impossible de cr&eacute;er un nouveau fichier, la sortie est redirig&eacute;e sur l'erreur standard. Si vous d&eacute;finissez les arguments entiers X et Y, la sortie verboseGC
est redirig&eacute;e vers un nombre X de fichiers, chaque fichier contenant
un nombre Y de cycles gc pouvant g&eacute;n&eacute;rer une sortie verboseGC. Ces fichiers sont nomm&eacute;s <em>nomfichier1,
nomfichier2</em>, etc. Par d&eacute;faut, aucune journalisation de la
r&eacute;cup&eacute;ration de place en mode prolixe n'a lieu.</li></ul></li>
<li><strong>-Xverify</strong>
<ul class="simple">
<li>Active la v&eacute;rification stricte de chaque classe charg&eacute;e. Par
d&eacute;faut, cette v&eacute;rification est d&eacute;sactiv&eacute;e.</li></ul></li>
<li><strong>-Xverify:none</strong>
<ul class="simple">
<li>D&eacute;sactive la v&eacute;rification stricte des classes. Par d&eacute;faut, cette
v&eacute;rification est d&eacute;sactiv&eacute;e.</li></ul></li></ul>
<a name="wq26"></a>
<h2 id="wq26"><a href="#ToC_23">Obtention du num&eacute;ro de compilation et de
version IBM</a></h2>
<p>Pour obtenir le num&eacute;ro de compilation et de version IBM, entrez la commande suivante &agrave; l'invite de &nbsp;:</p>
<pre class="xmp">java -version</pre>
<a name="wq27"></a>
<h2 id="wq27"><a href="#ToC_24">Globalisation de la commande java</a></h2>
<p>La commande <strong>java</strong> et les autres commandes du
programme de lancement java (telles que <strong>javaw</strong>)
permettent d'indiquer un nom de classe avec n'importe quel caract&egrave;re
contenu dans le jeu de caract&egrave;res de l'environnement local
courant. </p>
<p>Vous pouvez &eacute;galement utiliser des s&eacute;quences d'&eacute;chappement Java pour
sp&eacute;cifier n'importe quel caract&egrave;re Unicode dans le nom de classe et
les arguments. Pour ce faire, vous devez entrer <strong>-Xargencoding</strong>. Pour indiquer un caract&egrave;re
Unicode, utilisez les s&eacute;quences d'&eacute;chappement au format <tt>\u####</tt>, o&ugrave; # est un
caract&egrave;re hexad&eacute;cimal (de 0 &agrave; 9, de A &agrave; F).  </p>
<p>De la m&ecirc;me fa&ccedil;on, pour indiquer que le nom de classe et les
arguments de la commande sont de codage UTF8, voir
<strong>-Xargencoding:utf8</strong>&nbsp;; s'ils sont de codage
ISO8859_1, voir <strong>-Xargencoding:latin</strong>.</p>
<p>Par exemple, pour indiquer une classe nomm&eacute;e "HelloWorld" en
codage Unicode pour les deux majuscules, utilisez cette commande&nbsp;:</p>
<pre class="xmp">java -Xargencoding '\u0048ello\u0057orld'</pre>
<p>Les commandes <strong>java</strong> et
<strong>javaw</strong> offrent des messages de sortie traduits. Ces
messages varient selon l'environnement local dans lequel s'ex&eacute;cute
Java.  Les descriptions d&eacute;taill&eacute;es des erreurs et autres informations
de d&eacute;bogage renvoy&eacute;es par <strong>java</strong> sont en
anglais.</p>
<a name="jit"></a>
<h2 id="jit"><a href="#ToC_25">Compilateur JIT (Just-In-Time)</a></h2>
<p>Le compilateur IBM JIT (Just-In-Time) g&eacute;n&egrave;re dynamiquement le code machine pour les s&eacute;quences de code
interm&eacute;diaire fr&eacute;quemment utilis&eacute;es dans les applications Java et les applets en phase d'ex&eacute;cution.<span><font color="red"><span id="changed">|</span> Le compilateur
<span id="changed">|</span>JIT V5.0 propose de nouvelles optimisations suite &agrave; la recherche du compilateur, am&eacute;liore les optimisations
<span id="changed">|</span>impl&eacute;ment&eacute;es dans les versions pr&eacute;c&eacute;dentes du compilateur JIT et fournit une meilleure exploitation mat&eacute;rielle.</font></span></p>
<p>IBM SDK et Runtime Environment incluent le JIT, qui est activ&eacute; par d&eacute;faut dans les applications
utilisateur ainsi que les outils SDK. Il n'est g&eacute;n&eacute;ralement pas n&eacute;cessaire d'appeler explicitement le compilateur
JIT. La compilation du code interm&eacute;diaire Java en code machine se produit de mani&egrave;re transparente. Toutefois, si un incident survient
dans l'environnement d'ex&eacute;cution lors de l'ex&eacute;cution d'une application Java ou d'une applet, vous pouvez d&eacute;sactiver le
compilateur JIT afin d'isoler plus facilement l'incident. La d&eacute;sactivation du compilateur JIT doit &ecirc;tre uniquement une mesure temporaire, sa pr&eacute;sence &eacute;tant requise pour des performances appropri&eacute;es.</p>
<a name="disjit"></a>
<h3 id="disjit"><a href="#ToC_26">D&eacute;sactivation du JIT</a></h3>
<p>Il existe trois m&eacute;thodes de d&eacute;sactivation du compilateur JIT&nbsp;: </p>
<ul>
<li>Attribuez la valeur "NONE" ou une cha&icirc;ne vide &agrave; la variable d'environnement <strong>JAVA_COMPILER</strong> avant l'ex&eacute;cution de l'application Java.
<p>A l'invite de commande, entrez ce qui suit&nbsp;: </p>
<ol type="1">
<li><strong>Pour l'interpr&eacute;teur de commandes Korn&nbsp;:</strong>
<ul class="simple">
<li>
<pre class="xmp">export JAVA_COMPILER=NONE</pre>
<p>(Les commandes d'interpr&eacute;teur Korn sont utilis&eacute;es
dans tout le reste de ce guide utilisateur.)</p></li></ul></li>
<li><strong>Pour l'interpr&eacute;teur de commandes Bourne&nbsp;:</strong>
<ul class="simple">
<li>
<pre class="xmp">JAVA_COMPILER=NONE</pre></li>
<li>
<pre class="xmp">export JAVA_COMPILER</pre></li></ul></li>
<li><strong>Pour l'interpr&eacute;teur de commandes C&nbsp;:</strong>
<ul class="simple">
<li>
<pre class="xmp">setenv JAVA_COMPILER NONE</pre></li></ul></li></ol></li>
<li>Utilisez l'option <strong>-D</strong> sur la ligne de commande de la JVL afin d'attribuer
la valeur "NONE" ou une cha&icirc;ne vide &agrave; la propri&eacute;t&eacute; <strong>java.compiler</strong>&nbsp;: 
<pre class="xmp">java -Djava.compiler=NONE MyApp</pre></li>
<li>Utilisez l'option <strong>-Xint</strong> sur la ligne de commande de la JVM. Par exemple&nbsp;:
<pre class="xmp">java -Xint MonApp</pre></li></ul>
<p>Les options de ligne de commande remplacent la variable d'environnement <strong>JAVA_COMPILER</strong>.</p>
<a name="enajit"></a>
<h3 id="enajit"><a href="#ToC_27">Activation du JIT</a></h3>
<p>Pour activer le JIT de mani&egrave;re exemplaire, attribuez la valeur "jitc" &agrave; la variable
d'environnement <strong>JAVA_COMPILER</strong> ou utilisez l'option <strong>-D</strong> pour
attribuer la valeur "jitc" &agrave; la propri&eacute;t&eacute; <strong>java.compiler</strong>. Vous pouvez &eacute;galement
utiliser l'option <strong>-Xjit</strong> (et omettre l'option <strong>-Xint</strong>) sur la ligne
de commande de la JVM pour activer le JIT.</p>
<p>Si la valeur "" (cha&icirc;ne vide) est attribu&eacute;e &agrave; la variable d'environnement <strong>JAVA_COMPILER</strong> ou
&agrave; la propri&eacute;t&eacute; <strong>java.compiler</strong>, le JIT reste d&eacute;sactiv&eacute;. Pour annuler la d&eacute;finition de la variable
d'environnement correctement, entrez  entrez <tt class="xph">unset JAVA_COMPILER</tt> au niveau de l'invite shell. </p>
<a name="detjit"></a>
<h3 id="detjit"><a href="#ToC_28">D&eacute;terminer si le JIT est activ&eacute;</a></h3>
<p>Pour savoir si le JIT est activ&eacute;, entrez la commande
suivante&nbsp;: </p>
<pre class="xmp">java -version</pre>
<p>Si le compilateur JIT est inactif, le message qui s'affiche contient ce qui suit&nbsp;: </p>
<pre class="xmp">(JIT disabled)</pre>
<p>Si le compilateur JIT est actif, le message qui s'affiche contient ce qui suit&nbsp;:</p>
<pre class="xmp">(JIT enabled)</pre><p class="indatacontent"> </p>
<p>Pour plus d'informations sur le JIT, voir document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="garbage"></a>
<h2 id="garbage"><a href="#ToC_29">D&eacute;finition des r&egrave;gles de
r&eacute;cup&eacute;ration de place</a></h2>
<p>Le r&eacute;cup&eacute;rateur de place g&egrave;re la m&eacute;moire utilis&eacute;e par Java et par les applications
ex&eacute;cut&eacute;es dans la machine virtuelle.</p>
<p>Lorsque le r&eacute;cup&eacute;rateur de place re&ccedil;oit une demande de stockage, la m&eacute;moire inutilis&eacute;e
dans le segment de m&eacute;moire est mise de c&ocirc;t&eacute; (on parle alors d'"allocation").  Le r&eacute;cup&eacute;rateur de place v&eacute;rifie &eacute;galement les zones de m&eacute;moire qui ne sont plus utilis&eacute;es et les lib&egrave;re pour qu'elles puissent &ecirc;tre r&eacute;utilis&eacute;es (il s'agit de la "r&eacute;cup&eacute;ration").</p>
<p>La phase de r&eacute;cup&eacute;ration peut &ecirc;tre d&eacute;clench&eacute;e par un d&eacute;faut d'allocation de m&eacute;moire, ce qui peut se produire lorsqu'il ne reste plus d'espace pour une demande de stockage ou par un appel System.gc() explicite.</p>
<p>La r&eacute;cup&eacute;ration de place peut avoir un impact consid&eacute;rable sur les performances des applications. Pour cette raison,
la machine virtuelle IBM fournit diff&eacute;rentes m&eacute;thodes d'optimisation de la fa&ccedil;on dont cette r&eacute;cup&eacute;ration est effectu&eacute;e afin de limiter l'incidence sur votre application.</p>
<p>Pour plus d'informations sur la r&eacute;cup&eacute;ration de place, voir document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html"></a>.</p>
<a name="wq29"></a>
<h3 id="wq29"><a href="#ToC_30">Options de r&eacute;cup&eacute;ration de place</a></h3>
<p>L'option <strong>-Xgcpolicy</strong> indique les r&egrave;gle de r&eacute;cup&eacute;ration de place. </p>
<p><strong>-Xgcpolicy</strong> accepte les valeurs <strong>optthruput</strong> (valeur par d&eacute;faut et recommand&eacute;e), <strong>optavgpause</strong> ou <strong>gencon</strong>. Cette option contr&ocirc;le le comportement
du r&eacute;cup&eacute;rateur en &eacute;tablissant des compromis entre le d&eacute;bit de
l'application et l'ensemble du syst&egrave;me et les d&eacute;lais d'interruption
n&eacute;cessit&eacute;s par la r&eacute;cup&eacute;ration de place.</p>
<p>Le format et les valeurs de cette option sont les suivants&nbsp;: </p><blockquote><strong>-Xgcpolicy:optthruput</strong></blockquote>
<p></p><blockquote><strong>-Xgcpolicy:optavgpause</strong></blockquote>
<p></p><blockquote><strong>-Xgcpolicy:gencon</strong></blockquote>
<a name="wq30"></a>
<h3 id="wq30"><a href="#ToC_31">D&eacute;lai d'interruption</a></h3>
<p>Lorsque l'espace disponible dans le segment ne permet pas &agrave; une
application de cr&eacute;er un objet, la fonction de r&eacute;cup&eacute;ration de place
identifie les objets non r&eacute;f&eacute;renc&eacute;s et les supprime, ce qui r&eacute;tablit
l'&eacute;tat du segment et permet de r&eacute;pondre rapidement aux demandes
d'affectation de ressources actuelles et ult&eacute;rieures.  Des cycles de
r&eacute;cup&eacute;ration de place de ce type g&eacute;n&egrave;rent parfois des interruptions
inattendues dans l'ex&eacute;cution du code d'application.  A mesure que la
taille et la complexit&eacute; des applications augmentent, la taille des
segments s'accro&icirc;t et les interruptions caus&eacute;es par le processus de
r&eacute;cup&eacute;ration de place deviennent plus longues et plus g&ecirc;nantes.  La
valeur de r&eacute;cup&eacute;ration de place par d&eacute;faut, <strong>-Xgcpolicy:optthruput</strong>,
offre un d&eacute;bit tr&egrave;s &eacute;lev&eacute; aux applications, au prix d'interruptions fr&eacute;quentes, d'une dur&eacute;e
comprise entre quelques millisecondes et plusieurs secondes, selon la taille du segment et la quantit&eacute; de place &agrave; r&eacute;cup&eacute;rer. </p>
<a name="pausetimereduction"></a>
<h3 id="pausetimereduction"><a href="#ToC_32">R&eacute;duction du d&eacute;lai d'interruption</a></h3>
<p>La machine virtuelle Java utilise les deux techniques suivantes pour r&eacute;duire le d&eacute;lai d'interruption&nbsp;:</p>
<ul>
<li>R&eacute;cup&eacute;ration de place simultan&eacute;e</li>
<li>R&eacute;cup&eacute;ration de place de g&eacute;n&eacute;ration</li></ul>
<p>L'option de ligne de commande <strong>-Xgcpolicy:optavgpause</strong> sp&eacute;cifie l'utilisation
d'une r&eacute;cup&eacute;ration de place simultan&eacute;e pour r&eacute;duire de fa&ccedil;on significative le temps pass&eacute; &agrave; la r&eacute;cup&eacute;ration de place. La r&eacute;cup&eacute;ration de place simultan&eacute;e r&eacute;duit les d&eacute;lais d'interruption en effectuant des op&eacute;rations de r&eacute;cup&eacute;ration simultan&eacute;ment avec l'ex&eacute;cution normale du programme afin de minimiser les perturbations provoqu&eacute;es par la collecte du segment de m&eacute;moire.  L'option <strong>-Xgcpolicy:optavgpause</strong> r&eacute;duit &eacute;galement l'impact de l'augmentation de la taille du segment sur la dur&eacute;e des interruptions pour r&eacute;cup&eacute;ration de place. L'option <strong>-Xgcpolicy:optavgpause</strong> est particuli&egrave;rement
utile pour les configurations pr&eacute;sentant de grandes tailles de segment. Ainsi, vous noterez une certaine baisse du d&eacute;bit de vos applications.</p>
<p>Lors de la r&eacute;cup&eacute;ration de place simultan&eacute;e, un laps de temps consid&eacute;rable est
perdu &agrave; identifier les objets relativement longs qui ne peuvent alors pas &ecirc;tre r&eacute;cup&eacute;r&eacute;s.
 Si la fonction de r&eacute;cup&eacute;ration de place se concentre uniquement sur les objets susceptibles d'&ecirc;tre
recyclables, vous pouvez r&eacute;duire encore davantage les d&eacute;lais d'interruption de
certaines applications. La r&eacute;cup&eacute;ration de place de g&eacute;n&eacute;ration parvient &agrave; cela
en divisant le segment en deux "g&eacute;n&eacute;rations", les zones "nursery" (nouvelle g&eacute;n&eacute;ration) et
"tenure" (g&eacute;n&eacute;ration titulaire). Les objets sont plac&eacute;s dans l'une ou l'autre de ces
zones suivant leur anciennet&eacute;. La zone "nursery" est la plus petite des deux et contient
les objets les plus r&eacute;cents alors que la zone "tenure" est plus importante et contient les objets
plus anciens. Les objets sont d'abord allou&eacute;s &agrave; la zone "nursery". S'ils survivent
assez longtemps, ils finissent par passer dans la zone "tenure". </p>
<p>La r&eacute;cup&eacute;ration de place de g&eacute;n&eacute;ration d&eacute;pend d'une courte dur&eacute;e de la plupart des objets. Cette technique r&eacute;duit les d&eacute;lais d'interruption en s'effor&ccedil;ant de r&eacute;cup&eacute;rer en priorit&eacute; de l'espace disque dans la zone "nursery" car c'est dans cette derni&egrave;re que l'espace est le plus facilement recyclable. Alors que la r&eacute;cup&eacute;ration int&eacute;grale du segment est plus occasionnelle mais plus lente, la r&eacute;cup&eacute;ration des &eacute;l&eacute;ments de la zone "nursery" est plus fr&eacute;quente et, si la taille de cette zone est assez petite, les d&eacute;lais d'interruption sont comparativement plus courts. Il existe toutefois un inconv&eacute;nient &agrave; cette technique qui est, qu'avec le temps, la zone  "tenure" peut &ecirc;tre satur&eacute;e si trop d'objets durent trop longtemps.  Pour minimiser le d&eacute;lai d'interruption lorsque ce cas survient, ayez recours &agrave; une combinaison des deux techniques. L'option <strong>-Xgcpolicy:gencon</strong> sp&eacute;cifie l'utilisation combin&eacute;e de la r&eacute;cup&eacute;ration de place simultan&eacute;e et de la r&eacute;cup&eacute;ration de place de g&eacute;n&eacute;ration pour limiter au minimum les temps d'interruption pour r&eacute;cup&eacute;ration de place.</p>
<a name="wq31"></a>
<h3 id="wq31"><a href="#ToC_33">Environnements &agrave; segments tr&egrave;s
satur&eacute;s</a></h3>
<p>Si le segment Java est proche de la saturation et que la place &agrave;
r&eacute;cup&eacute;rer est tr&egrave;s limit&eacute;e, les demandes de nouveaux objets ne sont
pas satisfaites rapidement car aucun espace n'est disponible
imm&eacute;diatement.  Si le segment est utilis&eacute; au maximum de sa capacit&eacute; ou
presque, une baisse de performances se produit au niveau des
applications, ind&eacute;pendamment du r&eacute;glage des options d&eacute;finies
ci-dessus. Si des demandes d'espace suppl&eacute;mentaire sont effectu&eacute;es,
l'application re&ccedil;oit une exception OutofMemory qui entra&icirc;ne l'arr&ecirc;t
de la JVM si cette derni&egrave;re n'est pas intercept&eacute;e et trait&eacute;e. A ce stade, la machine JVM g&eacute;n&egrave;re un fichier de diagnostic "javadump". Dans ces cas de figure, il est recommand&eacute; d'augmenter la taille du segment
&agrave; l'aide de l'option <strong>-Xmx</strong> ou de r&eacute;duire le
nombre d'objets d'application utilis&eacute;s. Pour plus d'informations, voir document
 <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="wq32"></a>
<h2 id="wq32"><a href="#ToC_34">Traitement des signaux par la JVM</a></h2>
<p>En cas de signal pertinent pour la JVM, un gestionnaire de signaux est appel&eacute;. Il d&eacute;termine s'il a &eacute;t&eacute; appel&eacute; pour une unit&eacute; d'ex&eacute;cution Java ou non Java. </p>
<p>Si le signal concerne une unit&eacute; d'ex&eacute;cution Java, la JVM prend le contr&ocirc;le du traitement du signal. Si un gestionnaire d'application pour ce signal est install&eacute; et que vous ne d&eacute;finissez pas l'option de ligne de commande <strong>-Xnosigchain</strong>, une fois que la machine JVM a termin&eacute; le traitement, le gestionnaire d'application pour ce signal est appel&eacute;. </p>
<p>Si le signal concerne une unit&eacute; d'ex&eacute;cution non Java et que l'application qui a install&eacute;
la JVM a d&eacute;j&agrave; install&eacute; un gestionnaire sp&eacute;cifique pour ce signal, le contr&ocirc;le est
pass&eacute; &agrave; ce gestionnaire. Sinon, si le signal est demand&eacute; par la machine JVM ou
l'application Java, il est ignor&eacute; ou l'action par d&eacute;faut est effectu&eacute;e. </p>
<p>En cas de signaux d'exception ou d'erreur, la JVM effectue l'une des op&eacute;rations suivantes&nbsp;: </p>
<ul>
<li>elle g&egrave;re la condition et r&eacute;sout l'erreur&nbsp;;</li>
<li>elle d&eacute;marre une s&eacute;quence d'arr&ecirc;t contr&ocirc;l&eacute; avec les actions suivantes&nbsp;: 
<ol type="1">
<li>elle g&eacute;n&egrave;re un vidage Javadump pour d&eacute;crire l'&eacute;tat de la JVM au point de d&eacute;faillance&nbsp;;</li>
<li>elle appelle le gestionnaire de signaux de votre application pour le signal en question&nbsp;; </li>
<li>elle appelle un point d'abandon install&eacute; par l'application&nbsp;;  </li>
<li>elle effectue le nettoyage n&eacute;cessaire afin que la proc&eacute;dure d'arr&ecirc;t s'effectue correctement.</li></ol></li></ul>Pour plus d'informations sur l'&eacute;criture d'un programme de lancement sp&eacute;cifiant les points d'ancrage cit&eacute;s pr&eacute;c&eacute;demment, voir <a href="http://www.ibm.com/developerworks/java/library/i-signalhandling/">http://www-106.ibm.com/developerworks/java/library/i-signalhandling/</a>. Ce document a &eacute;t&eacute; &eacute;crit pour Java Version 1.3.1, mais il s'applique &eacute;galement aux versions ult&eacute;rieures.
<p>En cas de signaux d'interruption, la JVM d&eacute;marre &eacute;galement une s&eacute;quence d'arr&ecirc;t contr&ocirc;l&eacute;, mais cette fois, elle l'ex&eacute;cute comme un arr&ecirc;t normal&nbsp;: </p>
<ul>
<li>elle appelle le gestionnaire de signaux de votre application pour le signal en question&nbsp;; </li>
<li>elle appelle tous les points d'arr&ecirc;t de l'application&nbsp;;  </li>
<li>elle appelle un point de sortie install&eacute; par l'application&nbsp;;  </li>
<li>elle effectue le nettoyage n&eacute;cessaire.</li></ul>
<p>La proc&eacute;dure de fermeture est identique &agrave; celle d&eacute;marr&eacute;e par un appel de la m&eacute;thode Java
<tt class="xph">System.exit()</tt>. </p>
<p>D'autres signaux utilis&eacute;s par la JVM sont r&eacute;serv&eacute;s &agrave; des fins de contr&ocirc;le interne et ne provoquent pas
l'arr&ecirc;t de la JVM. Le seul signal de contr&ocirc;le int&eacute;ressant est SIGQUIT qui entra&icirc;ne un vidage Javadump. </p>
<a name="sighand"></a>
<h3 id="sighand"><a href="#ToC_35">Signaux utilis&eacute;s par la JVM</a></h3>
<p>Le tableau <a href="#sig_table">tableau 1</a> ci-dessous indique les signaux utilis&eacute;s par la JVM.
Ces signaux sont regroup&eacute;s par type ou par utilisation, de la fa&ccedil;on suivante&nbsp;:</p>
<ul>
<li><strong>Exceptions&nbsp;:</strong> Le syst&egrave;me d'exploitation d&eacute;clenche de fa&ccedil;on synchrone une signal d'exception appropri&eacute; en cas de condition d'erreur fatale. </li>
<li><strong>Erreurs&nbsp;:</strong> La JVM d&eacute;clenche un signal SIGABRT si elle d&eacute;tecte une condition &agrave; partir de laquelle aucune r&eacute;cup&eacute;ration n'est possible.</li>
<li><strong>Interruptions&nbsp;:</strong> Les signaux d'interruption sont d&eacute;clench&eacute;s de fa&ccedil;on asynchrone, en dehors d'un processus JVM, et visent &agrave; demander l'arr&ecirc;t. </li>
<li><strong>Contr&ocirc;les&nbsp;:</strong> D'autres signaux sont utilis&eacute;s par la JVM &agrave; des fins de contr&ocirc;le. </li></ul>
<a name="sig_table"></a>
<table id="sig_table" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tableau 1. Signaux utilis&eacute;s par la JVM</caption>
<thead valign="bottom">
<tr>
<th id="wq34" width="25%" align="left">Nom du signal</th>
<th id="wq35" width="25%" align="left">Type de signal</th>
<th id="wq36" width="25%" align="left">Description</th>
<th id="wq37" width="25%" align="left">D&eacute;sactiv&eacute; par -Xrs</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq34"><strong>SIGBUS</strong></td>
<td headers="wq35">Exception</td>
<td headers="wq36">Acc&egrave;s incorrect &agrave; la m&eacute;moire (donn&eacute;es non align&eacute;es)</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGSEGV</strong></td>
<td headers="wq35">Exception</td>
<td headers="wq36">Acc&egrave;s incorrect &agrave; la m&eacute;moire (&eacute;criture dans une m&eacute;moire inaccessible)</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGILL</strong></td>
<td headers="wq35">Exception</td>
<td headers="wq36">Instruction non conforme (tentative d'appel d'une instruction machine inconnue)</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGFPE</strong></td>
<td headers="wq35">Exception</td>
<td headers="wq36">Exception en virgule flottante (division par z&eacute;ro)</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGABRT</strong></td>
<td headers="wq35">Erreur</td>
<td headers="wq36">Arr&ecirc;t anormal. La JVM d&eacute;clenche ce signal si elle d&eacute;tecte un incident JVM.</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGINT</strong></td>
<td headers="wq35">Interruption</td>
<td headers="wq36">Attention interactive (Ctrl-C). JVM s'arr&ecirc;te normalement.</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGTERM</strong></td>
<td headers="wq35">Interruption</td>
<td headers="wq36">Demande d'arr&ecirc;t. JVM s'arr&ecirc;te normalement.</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGHUP</strong></td>
<td headers="wq35">Interruption</td>
<td headers="wq36">Arr&ecirc;t de l'ex&eacute;cution. JVM s'arr&ecirc;te normalement.</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><strong>SIGQUIT</strong></td>
<td headers="wq35">Contr&ocirc;le</td>
<td headers="wq36">Utilis&eacute; par la machine JVM pour les
vidages Java.</td>
<td align="center" headers="wq37">Oui</td>
</tr>
<tr>
<td headers="wq34"><font color="red"><span id="changed">|</span><strong>SIGRECONFIG (58)</strong></font></td>
<td headers="wq35"><font color="red"><span id="changed">|</span>Contr&ocirc;le</font></td>
<td headers="wq36"><font color="red"><span id="changed">|</span>R&eacute;serv&eacute; &agrave; la d&eacute;tection des modifications apport&eacute;es au nombre d'UC, &agrave; la capacit&eacute; de traitement
<span id="changed">|</span>ou &agrave; la m&eacute;moire physique.</font></td>
<td align="center" headers="wq37"><font color="red"><span id="changed">|</span>Oui</font></td>
</tr>
<tr>
<td headers="wq34"><font color="red"><span id="changed">|</span><strong>SIGTRAP (5)</strong></font></td>
<td headers="wq35"><font color="red"><span id="changed">|</span>Contr&ocirc;le</font></td>
<td headers="wq36"><font color="red"><span id="changed">|</span>Utilis&eacute; par le JIT.</font></td>
<td align="center" headers="wq37"><font color="red"><span id="changed">|</span>Oui</font></td>
</tr>
<tr>
<td headers="wq34"><font color="red"><span id="changed">|</span><strong>SIGCHLD</strong></font></td>
<td headers="wq35"><font color="red"><span id="changed">|</span>Contr&ocirc;le</font></td>
<td headers="wq36"><font color="red"><span id="changed">|</span>Utilis&eacute; par le SDK pour le contr&ocirc;le interne.</font></td>
<td align="center" headers="wq37"><font color="red"><span id="changed">|</span>Non</font></td>
</tr>
</tbody>
</table>
<p>Utilisez l'option <strong>-Xrs</strong> (r&eacute;duction de l'utilisation des
signaux) pour emp&ecirc;cher la JVM de traiter la plupart des signaux. Pour plus d'informations, reportez-vous &agrave; la page du programme de lancement
d'applications Java, &agrave; l'adresse <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html">http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html</a>.</p>
<p>Les signaux <tt class="xph">1 (SIGHUP)</tt>, <tt class="xph">2 (SIGINT)</tt>, <tt class="xph">4 (SIGILL)</tt>, <tt class="xph">7 (SIGBUS)</tt>, <tt class="xph">8 (SIGFPE)</tt>, <tt class="xph">11 (SIGSEGV)</tt> et <tt class="xph">15 (SIGTERM)</tt> sur unit&eacute;s d'ex&eacute;cution JVM provoquent l'arr&ecirc;t de la machine JVM. Par cons&eacute;quent,
le gestionnaire de signaux d'application ne doit tenter aucune r&eacute;cup&eacute;ration &agrave; partir de ces signaux &agrave;
moins qu'il n'ait plus besoin de la JVM.</p>
<a name="wq38"></a>
<h3 id="wq38"><a href="#ToC_36">Cr&eacute;ation d'un lien entre un pilote de code natif et une biblioth&egrave;que de cha&icirc;nage de signaux</a></h3>
<p>L'environnement d'ex&eacute;cution dispose d'une fonction de cha&icirc;nage de signaux. Cette fonction permet &agrave; la JVM d'interagir plus efficacement avec du code natif qui installe ses propres gestionnaires de signaux.</p>
<p>Le cha&icirc;nage de signaux permet &agrave; une application de cr&eacute;er un lien vers la biblioth&egrave;que partag&eacute;e libjsig et de la charger avant les
biblioth&egrave;ques syst&egrave;me. La biblioth&egrave;que   garantit l'interception des appels &agrave; <tt class="xph">signal()</tt>,
<tt class="xph">sigset()</tt> et <tt class="xph">sigaction()</tt>, 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&icirc;nent" &agrave; la suite des gestionnaires qui sont install&eacute;s par la JVM. Par la suite, lorsque l'un de ces signaux est d&eacute;clench&eacute; ou qu'il s'av&egrave;re qu'il ne s'adresse pas &agrave; la JVM, les gestionnaires pr&eacute;install&eacute;s sont appel&eacute;s.</p>
<p>Si vous installez des gestionnaires de signaux qui utilisent
<tt class="xph">sigaction()</tt>, certains indicateurs <strong>sa_flags</strong> ne sont pas respect&eacute;s lorsque la JVM utilise ce signal. Ces indicateurs sont les suivants&nbsp;:</p>
<ul>
<li>SA_NOCLDSTOP - Toujours d&eacute;sactiv&eacute;. </li>
<li>SA_NOCLDWAIT - Toujours d&eacute;sactiv&eacute;. </li>
<li>SA_RESTART - Toujours activ&eacute;.</li></ul><p class="indatacontent">La biblioth&egrave;que libjsig.so masque
&eacute;galement les gestionnaires de signaux JVM vis &agrave; vis de l'application. Ainsi, les appels tels que <tt class="xph">signal()</tt>, <tt class="xph">sigset()</tt> et <tt class="xph">sigaction()</tt> qui sont effectu&eacute;s apr&egrave;s le d&eacute;marrage de la JVM ne renvoient plus de r&eacute;f&eacute;rence au gestionnaire de signaux de la JVM mais &agrave; n'importe quel gestionnaire d&eacute;j&agrave; install&eacute; avant le d&eacute;marrage de la JVM.</p>
<a name="wq39"></a>
<h2 id="wq39"><a href="#ToC_37">Transformation de documents XML</a></h2>
<p>IBM SDK contient le processeur XSLT4J et l'analyseur XML4J
respectant la <a href="http://java.sun.com/xml/jaxp/">sp&eacute;cification JAXP 1.3</a>. Ces
outils vous permettent d'analyser et de transformer des documents
XML ind&eacute;pendamment de toute impl&eacute;mentation de traitement XML
donn&eacute;e.   Gr&acirc;ce aux localisateurs de fabrique
recherchant les impl&eacute;mentations SAXParserFactory,
DocumentBuilderFactory et TransformerFactory, votre application peut
passer de l'une &agrave; l'autre sans devoir modifier le code.</p>
<p><font color="red"><span id="changed">|</span>La technologie XML incluse avec le SDK IBM est similaire &agrave;
<span id="changed">|</span>Apache Xerces Java et Apache Xalan Java. Pour plus d'informations, voir <a href="http://xml.apache.org/xerces2-j/">http://xml.apache.org/xerces2-j/</a> et <a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/</a>.</font></p>
<p>Le processeur XSLT4J vous permet de choisir entre le processeur
d'interpr&eacute;tation XSLT d'origine ou le nouveau processeur de
compilation XSLT. Le processeur d'interpr&eacute;tation est con&ccedil;u pour
manipuler et d&eacute;boguer des environnements. Il prend en charge
les fonctions d'extension XSLT non prises en charge par le processeur
de compilation XSLT. Ce dernier est con&ccedil;u pour des environnements
d'ex&eacute;cution hautes performances&nbsp;; il g&eacute;n&egrave;re un moteur de
transformation, ou <em>translet</em>, &agrave; partir d'une
feuille de style XSL. Cette approche distingue l'interpr&eacute;tation des
instructions de la feuille de style de leur application &agrave; des
donn&eacute;es XML.  </p>
<p>Le processeur d'interpr&eacute;tation XSLT est le processeur par d&eacute;faut. Pour
s&eacute;lectionner le processeur de compilation XSLT, vous pouvez&nbsp;: </p>
<ul>
<li>changer l'entr&eacute;e dans le fichier jaxp.properties
(dans C:\Program Files\IBM\Java50\jre/lib), ou  </li>
<li>d&eacute;finir la propri&eacute;t&eacute;s syst&egrave;me pour la cl&eacute; javax.xml.transform.TransformerFactory
en org.apache.xalan.xsltc.trax.TransformerFactoryImpl.</li></ul><p class="indatacontent">  </p>
<p>Pour impl&eacute;menter des propri&eacute;t&eacute;s dans le fichier jaxp.properties
file, copiez jaxp.properties.sample dans jaxp.properties, dans
C:\Program Files\IBM\Java50\. Ce fichier contient
&eacute;galement tous les d&eacute;tails sur la proc&eacute;dure &agrave; suivre pour
identifier les impl&eacute;mentations &agrave; utiliser pour TransformerFactory,
SAXParserFactory et DocumentBuilderFactory.</p>
<p>Pour am&eacute;liorer les performances lorsque vous
transformez un objet StreamSource &agrave; l'aide du processeur de
compilation XSLT, indiquez la classe
com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager comme fournisseur du
service org.apache.xalan.xsltc.dom.XSLTCDTMManager.
 Pour identifier
le fournisseur de services, essayez chaque &eacute;tape jusqu'&agrave;
org.apache.xalan.xsltc.dom.XSLTCDTMManager&nbsp;:</p>
<ol type="1">
<li>V&eacute;rifiez le param&egrave;tre de la propri&eacute;t&eacute; syst&egrave;me org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li>
<li>V&eacute;rifiez la valeur de la propri&eacute;t&eacute;
org.apache.xalan.xsltc.dom.XSLTCDTMManager dans le fichier C:\Program Files\IBM\Java50\lib/xalan.properties.</li>
<li>V&eacute;rifiez le contenu du fichier META-INF/services/org.apache.xalan.xsltc.dom.XSLTCDTMManager
pour un nom de classe.</li>
<li>Utilisez la fournisseur de services par d&eacute;faut org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li></ol><p class="indatacontent">Le processeur de compilation XSLT d&eacute;tecte le fournisseur de
services pour le service org.apache.xalan.xsltc.dom.XSLTCDTMManager
lorsqu'un objet javax.xml.transform.TransformerFactory est cr&eacute;&eacute;. 
Les
objets javax.xml.transform.Transformer et
javax.xml.transform.sax.TransformerHandler cr&eacute;&eacute;s &agrave; l'aide de l'objet
TransformerFactory utilisent le m&ecirc;me fournisseur de services.  Vous
pouvez uniquement changer le fournisseur de services en modifiant
l'un des param&egrave;tres d&eacute;crits ci-dessus et en cr&eacute;ant un nouvel objet
TransformerFactory.</p>
<a name="wq41"></a>
<h3 id="wq41"><a href="#ToC_38">Utilisation d'une ancienne version de Xerces ou Xalan</a></h3>
<p>Si vous utilisez une ancienne version de Tomcat, cette limitation peut vous concerner.</p>
<p>Si vous utilisez une ancienne version de Xerces (ant&eacute;rieure &agrave; 2.0) ou de Xalan (ant&eacute;rieure &agrave; 2.3) dans la substitution approuv&eacute;e, il se peut qu'une exception de pointeur nul soit &eacute;mise lorsque vous lancez votre application. Cette exception se produit car les anciennes versions ne g&egrave;rent pas le fichier
jaxp.properties correctement.  </p>
<p>Pour &eacute;viter cette situation, utilisez l'une des solutions suivantes&nbsp;:</p>
<ul>
<li>Effectuez une mise &agrave; niveau vers une nouvelle version de l'application qui mette en oeuvre la sp&eacute;cification JAXP (Java API for XML Programming) la plus r&eacute;cente (http://java.sun.com/xml/jaxp/index.html).
<br /></li>
<li>Supprimez le fichier jaxp.properties de C:\Program Files\IBM\Java50\jre/lib.
<br /></li>
<li>Supprimer la mise en commentaire des entr&eacute;es du fichier jaxp.properties dansC:\Program Files\IBM\Java50\jre/lib.
<br /></li>
<li>D&eacute;finissez de fa&ccedil;on explicite la fabrique d'analyseur SAX, la fabrique DocumentBuilder ou Transformer
&agrave; l'aide de la variable d'environnement <strong>IBM_JAVA_OPTIONS</strong>. Par exemple&nbsp;:
<pre class="xmp">export IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
  org.apache.xerces.jaxp.SAXParserFactoryImpl </pre>ou
<pre class="xmp">export IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</pre>ou 
<pre class="xmp">export IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
  org.apache.xalan.processor.TransformerFactoryImpl  </pre>
<br /></li>
<li>D&eacute;finissez la propri&eacute;t&eacute; syst&egrave;me pour <strong>javax.xml.parsers.SAXParserFactory</strong>, <strong>javax.xml.parsers.DocumentBuilderFactory</strong> ou <strong>javax.xml.transform.TransformerFactory</strong> &agrave; partir du code de votre application. Pour obtenir un exemple, voir sp&eacute;cification JAXP 1.3.
<br /></li></ul>
<a name="wq42"></a>
<h1 id="wq42"><a href="#ToC_39">Utilisation de SDK pour d&eacute;velopper des applications Java</a></h1>
<p>Les sections qui suivent offrent des informations sur
l'utilisation de SDK for Windows pour d&eacute;velopper des applications Java. Voir
<a href="#sdktools">Outils SDK</a> pour en savoir plus sur les outils
disponibles.</p>
<a name="debugger"></a>
<h2 id="debugger"><a href="#ToC_40">D&eacute;bogage des applications Java</a></h2>
<p>Pour d&eacute;boguer les programmes Java, vous devez utiliser l'application Java Debugger (JDB) ou d'autres d&eacute;bogueurs communiquant &agrave; l'aide de l'architecture JPDA (Java Platform Debugger Architecture) fournie par le
SDK pour Windows.</p>
<a name="jdb"></a>
<h3 id="jdb"><a href="#ToC_41">D&eacute;bogueur Java (JDB)</a></h3>
<p>Le d&eacute;bogueur Java (JDB) est inclus dans le SDK de Windows. Il est appel&eacute;
par la commande <strong>jdb</strong> et s'"attache" &agrave; la machine virtuelle
Java &agrave; l'aide de JPDA. Pour d&eacute;boguer une application Java, proc&eacute;dez comme suit&nbsp;:</p>
<ol type="1">
<li>D&eacute;marrez la machine virtuelle Java avec les options suivantes&nbsp;:
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<em>&lt;port></em> 
     MonApp <em>&lt;MonApp args></em></pre></li>
<li>La machine JVM d&eacute;marre mais interrompt l'ex&eacute;cution avant de d&eacute;marrer l'application Java.
Dans une session distincte, vous pouvez rattacher le d&eacute;bogueur &agrave; la machine JVM avec la commande suivante&nbsp;:
<pre class="xmp">jdb -attach <em>&lt;num&eacute;ro de port></em></pre>Le d&eacute;bogueur se rattache &agrave; la machine
JVM, ce qui vous permet &agrave; pr&eacute;sent d'&eacute;mettre une s&eacute;rie de commandes pour examiner et contr&ocirc;ler l'
application Java. Par exemple, entrez <tt class="xph">run</tt> pour permettre l'ex&eacute;cution de l'application
Java.</li></ol>
<p>Pour obtenir des informations sur les options JDB, entrez&nbsp;:</p>
<pre class="xmp">jdb -help</pre><p class="indatacontent">Pour obtenir des
informations sur les commandes JDB&nbsp;:</p>
<ol type="1">
<li>Entrez <tt class="xph">jdb</tt></li>
<li>A l'invite jdb, entrez <tt class="xph">help</tt></li></ol><p class="indatacontent"> </p>
<p>Vous pouvez &eacute;galement utiliser JDB pour d&eacute;boguer les applications Java en cours d'ex&eacute;cution sur les machines distantes
JPDA utilise une socket TCP/IP pour la connexion &agrave; la machine JVM distante.</p>
<ol type="1">
<li>D&eacute;marrez la machine virtuelle Java comme pr&eacute;c&eacute;demment.</li>
<li>Rattachez le d&eacute;bogueur &agrave; la machine distante&nbsp;:
<pre class="xmp">jdb -attach <em>&lt;nom de machine ou adresse ip></em>:<em>&lt;num&eacute;ro de port></em></pre></li></ol>
<p>Lorsque vous lancez une session de d&eacute;bogage &agrave; l'aide du transport dt_socket, assurez-vous que
les ports indiqu&eacute;s sont libres.</p>
<p><font color="red"><span id="changed">|</span>Cette version ne prend <em>pas</em> en charge l'interface JVMDI (Java Virtual Machine Debugging Interface). Elle a &eacute;t&eacute;
<span id="changed">|</span>remplac&eacute;e par l'interface JVMTI (Java Virtual Machine Tool Interface).</font></p>
<p>Pour plus d'informations sur l'utilisation de JDB et JPDA, consultez les sites Web suivants&nbsp;: </p>
<ul>
<li><a href="http://java.sun.com/products/jpda/">http://java.sun.com/products/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html</a></li></ul>
<br />
<a name="wq46"></a>
<h2 id="wq46"><a href="#ToC_42">D&eacute;termination si votre application s'ex&eacute;cute sur une machine
virtuelle Java 32 bit ou 64 bit</a></h2>
<p>Certaines applications Java doivent pouvoir d&eacute;terminer si elles
s'ex&eacute;cutent sur une machine virtuelle Java 32 bit ou 64 bit. Par
exemple, si votre application poss&egrave;de une biblioth&egrave;que de code
native, celle-ci doit &ecirc;tre compil&eacute;e s&eacute;par&eacute;ment en 32 et 64 bit pour des plateformes prenant en charge ces deux modes d'op&eacute;ration 32 et 64 bit. Dans ce
cas, votre application doit charger la biblioth&egrave;que correcte
lors de l'ex&eacute;cution car il est impossible de m&eacute;langer du code 32 et 64 bit.</p>
<p>La propri&eacute;t&eacute; syst&egrave;me <strong>com.ibm.vm.bitmode</strong>
permet aux applications d'identifier le mode dans lequel votre
machine virtuelle Java fonctionne. Elle renvoie les valeurs suivantes&nbsp;: </p>
<ul>
<li>32 - la machine virtuelle Java s'ex&eacute;cute en mode 32 bit</li>
<li>64 - la machine virtuelle Java s'ex&eacute;cute en mode 64 bit.</li></ul><p class="indatacontent">Vous pouvez observez la propri&eacute;t&eacute;
<strong>com.ibm.vm.bitmode</strong> depuis le code
de votre application &agrave; l'aide de l'appel&nbsp;:</p>
<pre class="xmp">System.getProperty("com.ibm.vm.bitmode");</pre>
<a name="wq47"></a>
<h2 id="wq47"><a href="#ToC_43">Ecriture d'applications JNI</a></h2>
<p>Les num&eacute;ros de versions JNI que des programmes natifs peuvent
indiquer dans l'appel de l'API JNI_CreateJavaVM() sont&nbsp;:</p>
<ul>
<li>JNI_VERSION_1_2(0x00010002)</li>
<li>JNI_VERSION_1_4(0x00010004)</li></ul><p class="indatacontent">Le num&eacute;ro de version d&eacute;termine uniquement le niveau de
l'interface native JNI &agrave; utiliser. Le niveau de la machine virtuelle
cr&eacute;&eacute;e est pr&eacute;cis&eacute; par les biblioth&egrave;ques J2SE (&agrave; savoir, 5.0). L'API
de l'interface JNI n'affecte <em>pas</em> la
sp&eacute;cification de langue impl&eacute;ment&eacute;e avec la machine virtuelle, les
API de biblioth&egrave;que de classe ou tout autre aspect du comportement
de la machine virtuelle. Pour plus d'informations, voir
<a href="http://java.sun.com/j2se/1.5.0/docs/guide/jni">http://java.sun.com/j2se/1.5.0/docs/guide/jni</a>.</p>
<p>Si votre application a besoin de
deux biblioth&egrave;ques JNI, l'une pour 32 bit et l'autre pour 64 bit,
employez la propri&eacute;t&eacute; syst&egrave;me
<strong>com.ibm.vm.bitmode</strong> afin de d&eacute;terminer si vous
travaillez avec une machine virtuelle 32 ou 64 bit et choisissez la
biblioth&egrave;que en cons&eacute;quence.</p>
<a name="wq48"></a>
<div class="notetitle" id="wq48">Remarque :</div>
<div class="notebody">La version 1.1 de l'interface JNI (Java Native
Interface) n'est pas prise en charge.</div><font color="red"><span id="changed">|</span>
<span id="changed">|</span><a name="wq49"></a>
<span id="changed">|</span><h2 id="wq49"><a href="#ToC_44">Prise en charge de la restauration de connecteurs bloqu&eacute;s au niveau de l'unit&eacute; d'ex&eacute;cution</a></h2>
<span id="changed">|</span><p>Quatre nouvelles classes SDK propres &agrave; IBM ont &eacute;t&eacute; ajout&eacute;es au module com.ibm.jvm pour assurer la prise en charge de la restauration au niveau de l'unit&eacute; d'ex&eacute;cution en cas de connecteur bloqu&eacute;. Ces nouvelles classes
<span id="changed">|</span>sont regroup&eacute;es dans le fichier core.jar.</p>
<span id="changed">|</span><p>Elles permettent de d&eacute;bloquer les unit&eacute;s d'ex&eacute;cution bloqu&eacute;es sur des appels
<span id="changed">|</span>r&eacute;seau ou de synchronisation. Lorsqu'une application n'utilise pas ces
<span id="changed">|</span>classes, elle doit mettre fin &agrave; l'ensemble du processus au lieu d'interrompre une seule
<span id="changed">|</span>unit&eacute; d'ex&eacute;cution bloqu&eacute;e.</p>
<span id="changed">|</span><p>Ces classes sont les suivantes&nbsp;:</p>
<span id="changed">|</span><dl>
<span id="changed">|</span><dt class="bold">public Interface InterruptibleContext()</dt>
<span id="changed">|</span><dd>D&eacute;finit deux m&eacute;thodes, isblocked() et unblock(). Les trois autres classes
<span id="changed">|</span>mettent en oeuvre InterruptibleContext.
<span id="changed">|</span></dd>
<span id="changed">|</span><dt class="bold">public class InterruptibleLockContext()</dt>
<span id="changed">|</span><dd>Classe utilitaire pour l'interruption des appels de synchronisation.
<span id="changed">|</span></dd>
<span id="changed">|</span><dt class="bold">public class InterruptibleIOContext()</dt>
<span id="changed">|</span><dd>Classe utilitaire pour l'interruption des appels r&eacute;seau.
<span id="changed">|</span></dd>
<span id="changed">|</span><dt class="bold">public class InterruptibleThread()</dt>
<span id="changed">|</span><dd>Classe utilitaire qui &eacute;tend java.lang.Thread pour permettre l'encapsulage
<span id="changed">|</span>des m&eacute;thodes ex&eacute;cutables interruptibles. Elle utilise des instances de InterruptibleLockContext
<span id="changed">|</span>et InterruptibleIOContext pour ex&eacute;cuter les m&eacute;thodes isblocked() et unblock()
<span id="changed">|</span>requises suivant que l'unit&eacute; d'ex&eacute;cution est bloqu&eacute;e par une op&eacute;ration de synchronisation ou de r&eacute;seau.
<span id="changed">|</span></dd>
<span id="changed">|</span></dl>
<span id="changed">|</span><p>Les instances InterruptibleLockContext et InterruptibleIOContext fonctionnent toutes les deux en faisant r&eacute;f&eacute;rence &agrave; l'unit&eacute; d'ex&eacute;cution actuelle. Par cons&eacute;quent, si vous n'utilisez pas InterruptibleThread, vous devez fournir votre
<span id="changed">|</span>propre classe d'extension de java.lang.Thread pour utiliser ces nouvelles classes.</p>
<span id="changed">|</span><p>La documentation Java de ces classes est fournie avec le kit SDK dans le fichier docs/apidoc.zip.</p></font>
<a name="wq50"></a>
<h2 id="wq50"><a href="#ToC_45">Utilisation d'applets</a></h2>
<p>Applet Viewer vous permet d'ex&eacute;cuter une ou plusieurs applets appel&eacute;es
par r&eacute;f&eacute;rence dans une page Web (fichier HTML) &agrave; l'aide de la balise APPLET.
Il d&eacute;tecte les balises APPLET dans le fichier HTML et ex&eacute;cute les applets
dans des fen&ecirc;tres s&eacute;par&eacute;es, comme indiqu&eacute; par les balises.</p>
<p>Applet Viewer &eacute;tant r&eacute;serv&eacute;
&agrave; l'affichage d'applets, il ne peut pas afficher la totalit&eacute; d'une page Web contenant de nombreuses balises
HTML. En effet, il analyse uniquement les balises APPLET et non les autres balises HTML pr&eacute;sentes sur la page.</p>
<a name="wq51"></a>
<h3 id="wq51"><a href="#ToC_46">Ex&eacute;cution d'applets &agrave; l'aide d'Applet Viewer</a></h3>
<p>Pour ex&eacute;cuter une applet &agrave; l'aide d'Applet Viewer, entrez la commande suivante &agrave; l'invite &nbsp;:</p>
<pre class="xmp">   appletviewer <em>nom</em></pre>
<p>o&ugrave; <em>nom</em> correspond &agrave; l'un des &eacute;l&eacute;ments suivants&nbsp;:</p>
<ul>
<li>Nom d'un fichier HTML qui appelle une applet</li>
<li>URL d'une page Web qui appelle une applet</li></ul>
<p>Par exemple, pour appeler Applet Viewer sur un fichier HTML qui appelle une
applet, entrez la commande suivante &agrave; l'invite &nbsp;:</p>
<p></p>
<pre class="xmp">  appletviewer $HOME/<em>nomfichier</em>.html</pre><p class="indatacontent"> o&ugrave; <em>nomfichier</em> correspond au nom du
fichier HTML. </p>
<p>Par exemple, <tt>http://java.sun.com/applets/NervousText/example1.html</tt> est l'URL d'une page Web qui appelle une applet. Pour appeler Applet
Viewer sur cette page Web, entrez la commande suivante &agrave; l'invite shell&nbsp;:</p>
<p></p>
<pre class="xmp">appletviewer http://java.sun.com/applets/NervousText/exemple1.html</pre><p class="indatacontent"> </p>
<p>Applet Viewer ne reconna&icirc;t pas l'option <strong>charset</strong>
de la balise &lt;META>. Si le fichier charg&eacute; par appletviewer n'est pas encod&eacute;
comme valeur par d&eacute;faut du syst&egrave;me, une exception E-S peut se produire. Pour &eacute;viter cette exception,
utilisez l'option <strong>-encoding</strong> lorsque vous ex&eacute;cutez appletviewer.
 Par exemple&nbsp;: </p>
<pre class="xmp">appletviewer -encoding JISAutoDetect sample.html</pre>
<a name="wq52"></a>
<h3 id="wq52"><a href="#ToC_47">D&eacute;bogage d'applets &agrave; l'aide d'Applet Viewer</a></h3>
<p>L'option <strong>-debug</strong> d'Applet Viewer permet de d&eacute;boguer les applets. Lors du d&eacute;bogage d'applets, il est conseill&eacute; d'appeler Applet Viewer &agrave; partir du r&eacute;pertoire contenant le fichier HTML qui appelle l'applet. Par exemple&nbsp;:</p>
<p></p>
<pre class="xmp">cd demo/applets/TicTacToe
../../bin/appletviewer -debug exemple1.html</pre>
<p>Vous trouverez de la documentation sur le d&eacute;bogage d'applets &agrave; l'aide d'Applet
Viewer sur le site Web de Sun &agrave; l'adresse <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq53"></a>
<h2 id="wq53"><a href="#ToC_48">Prise en charge de CORBA</a></h2>
<p>Java 2 Platform, Standard Edition (J2SE) prend au minimum en charge
les sp&eacute;cifications d&eacute;finies dans les <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/doc-files/compliance.html">sp&eacute;cifications
officielles de prise en charge de CORBA dans J2SE (V1.5)</a>. Dans certains cas, la fonction ORB J2SE IBM prend en charge des versions plus r&eacute;centes des
sp&eacute;cifications.</p>
<a name="wq54"></a>
<h3 id="wq54"><a href="#ToC_49">Prise en charge de GIOP 1.2</a></h3>
<p>Ce SDK prend en charge toutes les versions de GIOP, telles qu'elles sont d&eacute;finies dans les chapitres 13 et 15 de la sp&eacute;cification CORBA 2.3.1, document <em>formal/99-10-07
du groupe OMG</em>, accessible sur le site Web suivant&nbsp;:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?formal/99-10-07">http://www.omg.org/cgi-bin/doc?formal/99-10-07</a></p>
<p>Le protocole GIOP bidirectionnel n'est pas pris en charge.</p>
<a name="wq55"></a>
<h3 id="wq55"><a href="#ToC_50">Prise en charge des intercepteurs portables</a></h3>
<p>Ce SDK prend en charge les intercepteurs portables, tels que d&eacute;finis par le groupe MG dans le
document <em>ptc/01-03-04</em>, accessible sur le site Web suivant&nbsp;:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/01-03-04">http://www.omg.org/cgi-bin/doc?ptc/01-03-04</a></p>
<p>Les intercepteurs portables sont des points d'ancrage dans la fonction ORB par le biais desquels les services ORB  peuvent intercepter le flux normal d'ex&eacute;cution de l'ORB.</p>
<a name="wq56"></a>
<h3 id="wq56"><a href="#ToC_51">Prise en charge d'INS (Interoperable Naming Service)</a></h3>
<p>Ce SDK prend en charge INS (Interoperable Naming Service), tel que d&eacute;fini par le groupe
OMG dans le document <em>ptc/00-08-07</em>, accessible sur le site Web suivant&nbsp;:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/00-08-07">http://www.omg.org/cgi-bin/doc?ptc/00-08-07</a></p>
<p>Le port par d&eacute;faut utilis&eacute; par le service annuaire transitoire (commande <tt>tnameserv</tt>), lorsqu'aucun param&egrave;tre <strong>ORBInitialPort</strong> n'est fourni, est pass&eacute; de <em>900</em> &agrave; <em>2809</em>, c'est-&agrave;-dire au num&eacute;ro de port enregistr&eacute; aupr&egrave;s de l'IANA (Internet Assigned Number Authority) pour un service annuaire CORBA. Les programmes qui d&eacute;pendent de cette valeur par d&eacute;faut peuvent n&eacute;cessiter une mise &agrave; jour pour fonctionner avec cette version.</p>
<p>Le contexte initial renvoy&eacute; par le serveur de noms transitoire est &agrave; pr&eacute;sent un
 <tt>org.omg.CosNaming.NamingContextExt</tt>. Les programmes existants qui
r&eacute;duisent la r&eacute;f&eacute;rence &agrave; un contexte <tt>org.omg.CosNaming.NamingContext</tt> fonctionnent toujours et n'ont pas besoin d'&ecirc;tre recompil&eacute;s.</p>
<p>La fonction ORB prend en charge les param&egrave;tres <strong>-ORBInitRef</strong> et <strong>-ORBDefaultInitRef</strong> d&eacute;finis par la sp&eacute;cification INS et l'op&eacute;ration ORB::string_to_object prend d&eacute;sormais en charge les formats de cha&icirc;ne ObjectURL (corbaloc: et corbaname:) d&eacute;finis par la sp&eacute;cification INS.</p>
<p>La fonction OMG d&eacute;finit une m&eacute;thode ORB::register_initial_reference pour enregistrer un
service aupr&egrave;s de l'INS. Toutefois, cette m&eacute;thode n'est pas disponible dans l'API Sun Java centrale Version 5.0. Les programmes ayant besoin d'enregistrer un service dans la version actuelle doivent appeler cette m&eacute;thode sur la classe d'impl&eacute;mentation ORB interne IBM. Par exemple, pour enregistrer un service "MonService"&nbsp;:</p>
<p></p>
<pre class="xmp">((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MonService",
serviceRef); </pre>
<p>o&ugrave; <tt>orb</tt> correspond &agrave; une instance d'<tt>org.omg.CORBA.ORB</tt>, renvoy&eacute;e par <tt>ORB.init()</tt>, et <tt>serviceRef</tt> correspond &agrave; un objet CORBA, connect&eacute;
&agrave; la fonction ORB. Ce m&eacute;canisme est temporaire et n'est pas compatible avec les future versions, ni portable sur les ORB non IBM.</p>
<a name="wq57"></a>
<h3 id="wq57"><a href="#ToC_52">Propri&eacute;t&eacute;s syst&egrave;me de tra&ccedil;age de l'ORB</a></h3>
<p>Une fonction de d&eacute;bogage d'ex&eacute;cution am&eacute;liore la maintenabilit&eacute;. Elle peut &ecirc;tre utile pour la proc&eacute;dure de diagnostic ou &ecirc;tre demand&eacute;e par le service de maintenance IBM.
Le tra&ccedil;age est g&eacute;r&eacute; &agrave; l'aide de trois propri&eacute;t&eacute;s syst&egrave;me.</p>
<ul>
<li>Pour activer le tra&ccedil;age, entrez <tt><strong>com.ibm.CORBA.Debug</strong>=true</tt>.</li>
<li>Pour mettre en forme et ajouter les messages GIOP de trace re&ccedil;us et envoy&eacute;s, entrez <tt><strong>com.ibm.CORBA.CommTrace</strong>=true</tt>.
Par d&eacute;faut, le tra&ccedil;age ORB se rend sur les fichiers dont le nom a la forme orbtrc.DDMMYYYY.HHmm.SS.txt.</li>
<li>Pour l'envoyer &agrave; un fichier diff&eacute;rent, entrez <tt><strong>com.ibm.CORBA.Debug.Output</strong>=&lt;nom_fichier></tt>. </li></ul><p class="indatacontent"> Par exemple, pour tracer les &eacute;v&eacute;nements et les messages GIOP mis en forme, entrez&nbsp;:</p>
<pre class="xmp"> java -Dcom.ibm.CORBA.Debug=true  
		-Dcom.ibm.CORBA.CommTrace=true monApp   </pre><p class="indatacontent"> </p>
<p>N'activez pas le tra&ccedil;age pour le fonctionnement normal car cela pourrait r&eacute;duire les performances. M&ecirc;me si vous avez d&eacute;sactiv&eacute; le tra&ccedil;age, l'outil de diagnostic de premier niveau fonctionne toujours, de sorte que seules les erreurs graves sont signal&eacute;es.
Si un fichier de sortie de d&eacute;bogage est g&eacute;n&eacute;r&eacute;, examinez-le pour identifier le probl&egrave;me. Par
exemple, il se peut que le serveur se soit arr&ecirc;t&eacute; sans effectuer de ORB.shutdown().</p>
<p>Le contenu et le format du fichier de sortie de trace varie d'une version &agrave; l'autre. </p>
<a name="wq58"></a>
<h3 id="wq58"><a href="#ToC_53">Propri&eacute;t&eacute;s syst&egrave;me d'optimisation de l'ORB</a></h3>
<p>Vous pouvez optimiser l'ORB &agrave; l'aide des propri&eacute;t&eacute;s suivantes&nbsp;:</p>
<ul>
<li>Pour contr&ocirc;ler la fragmentation GIOP 1.2, d&eacute;finissez la propri&eacute;t&eacute; syst&egrave;me <strong>com.ibm.CORBA.FragmentSize</strong>.
<p>Par exemple, pour d&eacute;finir une taille de fragment
de 4096 octets&nbsp;:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.FragmentSize=4096 monApp
</pre>
<p>La taille de fragment par d&eacute;faut est de 1024 octets. Vous pouvez d&eacute;sactiver la fragmentation
en d&eacute;finissant une taille de fragment &eacute;gale &agrave; 0.</p> </li>
<li>Dans les r&eacute;seaux h&eacute;t&eacute;rog&egrave;nes, la r&eacute;ponse &agrave; une demande CORBA peut &ecirc;tre diff&eacute;r&eacute;e ou perdue. Pour limiter ce probl&egrave;me, vous pouvez d&eacute;finir une dur&eacute;e d'attente maximum &agrave; l'aide de la propri&eacute;t&eacute; syst&egrave;me <strong>com.ibm.CORBA.RequestTimeout</strong>. Vous pouvez &eacute;galement utiliser <strong>com.ibm.CORBA.LocateRequestTimeout</strong> pour contr&ocirc;ler le d&eacute;lai d'attente des demandes de recherche.
Par exemple, pour r&eacute;duire les deux d&eacute;lais &agrave; 30 secondes, entrez
<pre class="xmp">java -Dcom.ibm.CORBA.RequestTimeout=30 
     -Dcom.ibm.CORBA.LocateRequestTimeout=30 monApp</pre>
<p>Par d&eacute;faut,
l'ORB attend une r&eacute;ponse ind&eacute;finiment. Ne d&eacute;finissez pas un d&eacute;lai d'attente trop court pour ne pas
risquer de mettre fin aux connexions inutilement.</p></li>
<li>Si votre programme fournit un service dans le r&eacute;seau, vous devrez peut-&ecirc;tre attribuer une valeur connue au
num&eacute;ro du port &agrave; partir duquel l'ORB lit les demandes entrantes. Pour ce faire, utilisez la propri&eacute;t&eacute; syst&egrave;me <strong>com.ibm.CORBA.ListenerPort</strong>.
<p> Par exemple, pour forcer l'ORB &agrave; utiliser le port
1050, entrez&nbsp;:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.ListenerPort=1050 monApp</pre>
<p>Si cette propri&eacute;t&eacute; est d&eacute;finie, l'ORB se met en mode &eacute;coute d&egrave;s qu'il est initialis&eacute;.
Sinon, il commence l'&eacute;coute seulement lorsque cela est requis.</p></li></ul>
<a name="wq59"></a>
<h3 id="wq59"><a href="#ToC_54">Droits de s&eacute;curit&eacute; Java 2 pour l'ORB</a></h3>
<p>Lors de l'ex&eacute;cution avec un gestionnaire de s&eacute;curit&eacute; Java 2, l'appel de certaines m&eacute;thodes
des classes API CORBA peut donner lieu &agrave; des v&eacute;rifications de droits et, par cons&eacute;quent,
g&eacute;n&eacute;rer une exception de s&eacute;curit&eacute;. Les m&eacute;thodes concern&eacute;es sont les suivantes&nbsp;: </p>
<p></p>
<a name="corbatable"></a>
<table id="corbatable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tableau 2. Les m&eacute;thodes concern&eacute;es lors de l'ex&eacute;cution avec Java 2 SecurityManager</caption>
<thead valign="bottom">
<tr>
<th id="wq60" width="32%" align="left">Classe/Interface</th>
<th id="wq61" width="32%" align="left">M&eacute;thode </th>
<th id="wq62" width="34%" align="left">Droit requis</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq61">
<p>init</p></td>
<td headers="wq62">
<p>java.net.SocketPermission resolve</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq61">
<p>connect</p></td>
<td headers="wq62">
<p>java.net.SocketPermission listen</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq61">
<p>resolve_initial_references</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq61">
<p>_is_a</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq61">
<p>_non_existent</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq61">
<p>OutputStream _request (cha&icirc;ne, bool&eacute;en)</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq61">
<p>_get_interface_def</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq61">
<p>invoke</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq61">
<p>send_deferred</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq61">
<p>send_oneway</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq60">
<div class="lines">javax.rmi.<br />
PortableRemoteObject<br />
</div></td>
<td headers="wq61">
<p>narrow</p></td>
<td headers="wq62">
<p>java.net.SocketPermission connect</p></td>
</tr>
</tbody>
</table>
<p>Si votre programme utilise l'une de ces m&eacute;thodes, assurez-vous qu'il b&eacute;n&eacute;ficie des droits
n&eacute;cessaires.</p>
<a name="wq63"></a>
<h3 id="wq63"><a href="#ToC_55">Classes d'impl&eacute;mentation ORB</a></h3>
<p>Les classes d'impl&eacute;mentation ORB de cette version sont les suivantes&nbsp;:</p>
<ul class="simple">
<li>org.omg.CORBA.ORBClass=com.ibm.CORBA.iiop.ORB</li>
<li>org.omg.CORBA.ORBSingletonClass=com.ibm.rmi.corba.ORBSingleton</li>
<li>javax.rmi.CORBA.UtilClass=com.ibm.CORBA.iiop.UtilDelegateImpl</li>
<li>javax.rmi.CORBA.StubClass=com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl</li>
<li>javax.rmi.CORBA.PortableRemoteObjectClass=  com.ibm.rmi.javax.rmi.PortableRemoteObject</li></ul>
<p>Ces valeurs sont celles d&eacute;finies par d&eacute;faut. Il est conseill&eacute; de ne pas d&eacute;finir ces propri&eacute;t&eacute;s, ni de faire directement r&eacute;f&eacute;rence aux classes d'impl&eacute;mentation.  Pour garantir la portabilit&eacute; de l'application, faites uniquement r&eacute;f&eacute;rence
aux classes de l'API CORBA et non &agrave; l'impl&eacute;mentation. Il se peut que ces valeurs soient modifi&eacute;es dans des versions futures. </p>
<a name="rmi-iiop"></a>
<h2 id="rmi-iiop"><a href="#ToC_56">RMI sur IIOP</a></h2>
<p>L'invocation RMI Java fournit un m&eacute;canisme simple de programmation
Java distribu&eacute;e. RMI sur IIOP (RMI-IIOP) utilise le protocole IIOP (Internet Inter-ORB Protocol) standard CORBA (Common Object Request Broker Architecture) pour &eacute;tendre le RMI Java de base pour la communication. Une interaction directe est ainsi permise avec tout autre ORB CORBA, qu'il soit mise en oeuvre en Java ou dans un autre langage de programmation.</p>
<p>La documentation suivante est disponible&nbsp;:</p>
<ul>
<li>Le guide <a href="http://www.ibm.com/developerworks/java/rmi-iiop">RMI-IIOP Programmer's Guide</a> constitue une
introduction &agrave; l'&eacute;criture de programmes RMI-IIOP. Ce guide est install&eacute; en m&ecirc;me temps que
cette documentation.
<br /></li>
<li>Le r&eacute;pertoire demo  contient les &eacute;l&eacute;ments suivants&nbsp;:
<ul>
<li>Un exemple "Hello World" illustrant le basculement entre les protocoles JRMP (Java Remote Method
Protocol) et IIOP demo/rmi-iiop/hello)
<br /></li>
<li>Un exemple "Hello World" interagissant avec un programme IDL standard (demo/rmi-iiop/idl)
<br /></li></ul></li>
<li>Le document <em>Java Language to IDL Mapping</em> est une
sp&eacute;cification technique d&eacute;taill&eacute;e de RMI-IIOP. Il est accessible sur le site Web &agrave; l'adresse
<br /><a href="http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf">http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf </a></li></ul>
<a name="rmi"></a>
<h2 id="rmi"><a href="#ToC_57">Impl&eacute;mentation du pool de gestionnaires de connexion pour RMI</a></h2>
<p>Le regroupement d'unit&eacute;s d'ex&eacute;cution pour les gestionnaires de connexions RMI <em>n'est pas</em> activ&eacute; par d&eacute;faut.</p>
<p>Pour activer le regroupement de connexions impl&eacute;ment&eacute; au niveau du transport TCP du
RMI, d&eacute;finissez l'option </p>
<pre class="xmp">-Dsun.rmi.transport.tcp.connectionPool=true (ou toute valeur non NULL) </pre>
<p>Cette version de Runtime Environment ne contient pas de param&egrave;tre permettant de
restreindre le nombre d'unit&eacute;s d'ex&eacute;cution du pool de connexions.</p>
<p>Pour plus d'informations, reportez-vous au site de Sun Java, &agrave; l'adresse suivante&nbsp;: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq64"></a>
<h2 id="wq64"><a href="#ToC_58">Prise en charge bidirectionnelle am&eacute;lior&eacute;e</a></h2>
<p>Le SDK IBM inclut une meilleure prise en charge des donn&eacute;es bidirectionnelles. Pour plus d'informations,
consultez le site <a href="http://www.ibm.com/developerworks/java/jdk/bidirectional/index.html">http://www-106.ibm.com/developerworks/java/jdk/bidirectional/index.html</a>. La documentation Java du package bidirectionnel est fournie avec le kit SDK dans le fichier docs/apidoc.zip.</p>
<a name="bigd"></a>
<h2 id="bigd"><a href="#ToC_59">Big Decimal am&eacute;lior&eacute;</a></h2><font color="red"><span id="changed">|</span>
<span id="changed">|</span><p>Depuis Java 5.0, la classe Big Decimal IBM est adopt&eacute;e par Sun en tant que java.math.BigDecimal.
<span id="changed">|</span> IBM n'assure plus la gestion de com.ibm.math.BigDecimal, d&eacute;sormais obsol&egrave;te.
<span id="changed">|</span> Il est recommand&eacute; de migrer le code Java existant pour utiliser java.math.BigDecimal.</p>
<span id="changed">|</span><p>La nouvelle classe java.math.BigDecimal utilise les m&ecirc;mes m&eacute;thodes
<span id="changed">|</span>que les pr&eacute;c&eacute;dentes
<span id="changed">|</span>java.math.BigDecimal et com.ibm.math.BigDecimal.  Le code existant qui utilise java.math.BigDecimal
<span id="changed">|</span>continue &agrave; fonctionner correctement.</p>
<span id="changed">|</span><p>Pour faire migrer le code Java existant afin d'utiliser la classe java.math.BigDecimal, modifiez l'instruction
<span id="changed">|</span>d'importation au d&eacute;but du fichier java en rempla&ccedil;ant <tt class="xph">import com.ibm.math.*;</tt> par <tt class="xph">import java.math,*;</tt>.</p></font>
<a name="wq65"></a>
<h2 id="wq65"><a href="#ToC_60">Prise en charge du symbole Euro</a></h2>
<p>Le SDK et le Runtime Environment IBM d&eacute;finissentl'euro comme devise par d&eacute;faut pour les pays de l'Union Mon&eacute;taire Europ&eacute;enne (UME) pour les dates ult&eacute;rieures au 31 d&eacute;cembre 2001.</p>
<p>Pour utiliser l'ancienne devise nationale, entrez <tt>-Duser.variant=PREEURO</tt> sur la ligne de commande Java.</p>
<p>Si vous utilisez les param&egrave;tres nationaux du Royaume-Uni, du Danemark ou de la Su&egrave;de et souhaitez utiliser l'euro, entrez <tt>-Duser.variant=EURO</tt> sur la ligne de commande Java.</p>
<a name="jcommchapter"></a>
<h1 id="jcommchapter"><a href="#ToC_61">Utilisation de l'API Java Communications (JavaComm)</a></h1>
<p>L'interface de programmation d'application Java Communications (JavaComm) est un module
fourni en option &agrave; utiliser avec Runtime Environment for Windows. JavaComm doit &ecirc;tre install&eacute; ind&eacute;pendamment du SDK ou de l'environnement d'ex&eacute;cution.</p>
<p>L'API JavaComm permet aux applications Java sur toute plateforme d'effectuer des communications de port s&eacute;rie et parall&egrave;les pour les technologies telles que la messagerie vocale, la t&eacute;l&eacute;copie et les cartes &agrave; puce. Apr&egrave;s avoir &eacute;crit les communications de port s&eacute;rie et parall&egrave;le pour votre application, vous pouvez inclure ces fichiers avec votre application.</p>
<p>L'API Java Communications prend en charge les ports s&eacute;rie Electronic Industries Association
(EIA)-232 (RS232) et les ports parall&egrave;les Institute of Electrical and Electronics
Engineers (IEEE) 1284. Elle fonctionne sur les syst&egrave;mes utilisant IBM Runtime Environment Version 5.0.</p>
<p>L'API Java Communications vous permet d'effectuer les op&eacute;rations suivantes&nbsp;:</p>
<ul>
<li>Obtenir la liste des ports d'un syst&egrave;me</li>
<li>Ouvrir et obtenir la propri&eacute;t&eacute; des ports</li>
<li>R&eacute;soudre les conflits de propri&eacute;t&eacute; de port entre les applications utilisant l'API Java Communications</li>
<li>Effectuer une surveillance de port E-S asynchrone et synchrone par le biais de la notification d'&eacute;v&eacute;nements</li>
<li>Recevoir des &eacute;v&eacute;nements de type bean d&eacute;crivant les changements d'&eacute;tat sur le port</li></ul>
<a name="fileloc"></a>
<h2 id="fileloc"><a href="#ToC_62">Emplacement des fichiers de l'API Java Communications</a></h2>
<p>Les fichiers de l'API Java Communications sont install&eacute;s comme suit&nbsp;:</p>
<ul>
<li>jre/lib/ext/comm.jar</li>
<li>jre/bin/libibmcomm.so</li>
<li>jre/lib/javax.comm.properties</li></ul>
<p>Si vous avez choisi d'effectuer l'installation dans le r&eacute;pertoire par d&eacute;faut, le fichier comm.jar se trouve dans C:\Program Files\IBM\Java50\jre/lib/ext.</p>
<p>Si vous avez install&eacute; le module dans un autre r&eacute;pertoire, les fichiers se trouvent dans la m&ecirc;me
arborescence mais C:\Program Files\IBM\Java50\ est remplac&eacute; par le r&eacute;pertoire o&ugrave; vous avez install&eacute; l'API Java Communications.</p>
<a name="wq66"></a>
<h2 id="wq66"><a href="#ToC_63">Configuration de l'API Java Communications</a></h2>
<p>Une fois que vous avez install&eacute; l'API Java Communications, vous devez&nbsp;:</p>
<ul>
<li>changer le mode d'acc&egrave;s des ports s&eacute;rie et parall&egrave;le&nbsp;;</li>
<li>d&eacute;finir le PATH, si vous ne l'avez pas d&eacute;j&agrave; fait lors de l'installation de Java. Voir <a href="#pathcons">D&eacute;finition du PATH</a>.</li></ul>
<a name="wq67"></a>
<h2 id="wq67"><a href="#ToC_64">Limitation d'impression avec l'API Java Communications</a></h2>
<p>Lors de l'impression avec l'API Java Communications, il se peut que vous deviez appuyer sur le bouton &eacute;quivalent &agrave; "<strong>alimentation papier</strong>" ou "<strong>continuer</strong>" sur l'imprimante.</p>
<a name="wq68"></a>
<h2 id="wq68"><a href="#ToC_65">Documentation de l'API Java Communications</a></h2>
<p>Vous trouverez de la documentation et des exemples de l'API Java Communications sur le site Web &agrave; l'adresse <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq69"></a>
<h1 id="wq69"><a href="#ToC_66">D&eacute;ploiement des applications Java</a></h1>
<a name="wq70"></a>
<h2 id="wq70"><a href="#ToC_67">Utilisation du plug-in Java</a></h2>
<p>Java Plug-in est un plug-in de navigateur Web. Si vous
l'employez, vous pouvez d&eacute;sactiver la machine virtuelle Java
par d&eacute;faut de votre navigateur Web et utiliser &agrave; la place un
environnement d'ex&eacute;cution de votre choix pour ex&eacute;cuter des applets
ou des beans dans le navigateur.</p>
<p>Vous devez laisser les applets se charger compl&egrave;tement pour &eacute;viter
le blocage du navigateur.
Par exemple, si vous cliquez sur le
bouton <strong>Pr&eacute;c&eacute;dente</strong> puis
<strong>Suivante</strong> alors qu'une applet est en cours de
chargement, les pages HTML peuvent ne pas s'afficher.</p>
<p>Java Plug-in est expliqu&eacute; par Sun &agrave; l'adresse&nbsp;:
<a href="http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/">http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/</a>.</p>
<a name="suppbrowse"></a>
<h3 id="suppbrowse"><a href="#ToC_68">Navigateurs pris en charge</a></h3>
<a name="wq71"></a>
<h3 id="wq71"><a href="#ToC_69">Prise en charge du mod&egrave;le DOM (Document Object Model) commun</a></h3>
<p>En raison des limitations de certains navigateurs, vous ne pourrez
peut-&ecirc;tre pas impl&eacute;menter toutes les fonctions du module org.w3c.dom.html. </p>
<ul>
<li>Une exception sun.plugin.dom.exception.NotSupportedException est &eacute;mise pour certaines
de ces fonctions.</li>
<li>Une exception sun.plugin.dom.exception.InvalidStateException est &eacute;mise lorsque le navigateur
ne prend pas en charge une fonction sp&eacute;cifique.</li></ul>
<a name="wq72"></a>
<h3 id="wq72"><a href="#ToC_70">Utilisation des param&egrave;tres DBCS</a></h3>
<p>Le plug-in Java prend en charge les caract&egrave;res double octet (par exemple, le chinois
traditionnel BIG-5, le cor&eacute;en et le japonais) en tant que param&egrave;tres pour les balises
<tt class="xph">&lt;APPLET></tt>, <tt class="xph"> &lt;OBJECT></tt> et <tt class="xph">&lt;EMBED></tt>. Vous devez s&eacute;lectionner
le codage des caract&egrave;res correct pour le document HTML de sorte que
Java Plug-in puisse analyser le param&egrave;tre. Indiquez le codage des caract&egrave;res pour le document HTML &agrave;
l'aide de la balise <tt class="xph">&lt;META></tt> dans la section <tt class="xph">&lt;HEAD></tt>
comme suit&nbsp;:</p>
<pre class="xmp">&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"></pre><p class="indatacontent">Cet exemple demande au navigateur d'analyser le fichier HTML &agrave;
l'aide de l'encodage de caract&egrave;res Chinese BIG-5. Tous les param&egrave;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 &agrave;
ignorer cet indicateur, mais vous devrez peut-&ecirc;tre modifier le codage manuellement.</p>
<p>Vous pouvez indiquer le codage &agrave; utiliser pour analyser le fichier
HTML&nbsp;: </p>
<ul>
<li><strong>Netscape 4&nbsp;:</strong> Menu Affichage -> Jeu de
caract&egrave;res </li></ul>
<a name="wq73"></a>
<h2 id="wq73"><a href="#ToC_71"> Utilisation de Java Web Start</a></h2>
<p>Vous pouvez utiliser Java Web Start pour d&eacute;ployer des applications Java.  Web Start permet &agrave; l'utilisateur de lancer et de g&eacute;rer des applications directement &agrave; partir du Web. Avec Java Web Start, vous pouvez d&eacute;marrer facilement les applications &agrave; partir du Web, en ayant la garantie d'ex&eacute;cuter
la derni&egrave;re version en date, ce qui &eacute;limine les proc&eacute;dures d'installation ou de mise &agrave; jour.
 Java Web Start &eacute;vite le temps pass&eacute; &agrave; t&eacute;l&eacute;charger et &agrave; installer des logiciels.</p>
<p><font color="red"><span id="changed">|</span>Outre les java-vm-args d&eacute;crits sur le site Web <a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources</a>, Web Start prend en charge <strong>-Xgcpolicy</strong> pour d&eacute;finir la r&egrave;gle de r&eacute;cup&eacute;ration de place.</font></p>
<p>Pour plus d'informations sur les navigateurs prenant en charge Web Start, voir <a href="#suppbrowse">Navigateurs pris en charge</a>.</p>
<p>Pour plus d'informations sur Web Start, consultez les sites Web  <a href="http://java.sun.com/products/javawebstart">http://java.sun.com/products/javawebstart</a> et <a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html</a>. Pour plus d'informations sur le d&eacute;ploiement d'applications, consultez le site Web <a href="http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html">http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html</a>.</p>
<a name="installing_webstart"></a>
<h3 id="installing_webstart"><a href="#ToC_72">Ex&eacute;cution de Web Start</a></h3>
<p>Vous pouvez lancez Web Start de l'une des trois mani&egrave;res suivantes&nbsp;:</p>
<ol type="1">
<li>Cliquez sur un lien dans une page Web faisant r&eacute;f&eacute;rence &agrave; un
fichier .jnlp.</li>
<li>A une invite shell,
entrez <tt class="xph">javaws &lt;URL></tt>, o&ugrave; <tt class="xph">&lt;URL></tt> correspond &agrave; l'emplacement
d'un fichier .jnlp.</li>
<li><font color="red"><span id="changed">|</span>Si vous avez d&eacute;j&agrave; utilis&eacute; Java Web Start
<span id="changed">|</span>pour ouvrir l'application, ex&eacute;cutez javaws &agrave; partir
<span id="changed">|</span>du r&eacute;pertoire jre/bin, afin de lancer Java Application Cache Viewer.</font></li></ol>
<p>Une fois l'application t&eacute;l&eacute;charg&eacute;e, elle est stock&eacute;e dans le
cache Java. Si vous acc&eacute;dez &agrave; nouveau &agrave; l'application, Java Web Start
t&eacute;l&eacute;charge une version plus r&eacute;cente de l'application si elle est
disponible ou emploie la version en cache dans le cas contraire.</p>
<p>Si une erreur se produit dans un fichier .jnlp (telle qu'un nom de
balise erron&eacute;), Web Start s'interrompt sans afficher de message
d'erreur.</p>
<a name="wq75"></a>
<h2 id="wq75"><a href="#ToC_73">Livraison d'applications Java</a></h2>
<p>  Contrairement &agrave; une applet Java, une application Java ne peut
reposer sur un navigateur Web pour les services d'installation et
d'ex&eacute;cution. Lorsque vous livrez une application Java, le package se
compose probablement de ce qui suit&nbsp;: </p>
<ul>
<li>Vos propres fichiers de classes, ressources et donn&eacute;es
<br /></li>
<li>Une proc&eacute;dure ou un programme d'installation
<br /></li></ul>
<p>Pour ex&eacute;cuter votre application, les
utilisateurs ont besoin de Runtime Environment for Windows.
 SDK for
Windows inclut un Runtime Environment. Toutefois, vous
ne pouvez pas supposer que SDK for Windows est install&eacute; pour les utilisateurs.</p>
<p>Votre licence de SDK for Windows
ne vous permet <strong>pas</strong> de redistribuer les fichiers
du SDK avec votre application.
Assurez-vous qu'une version sous licence de SDK for Windows est
install&eacute;e sur la machine cible.</p><font color="red"><span id="changed">|</span>
<span id="changed">|</span><a name="classdatasharing"></a>
<span id="changed">|</span><h1 id="classdatasharing"><a href="#ToC_74">Partage de donn&eacute;es de classes entre JVM</a></h1>
<span id="changed">|</span><p>La machine virtuelle d'IBM (VM) vous permet de partager avec
<span id="changed">|</span>d'autres machines virtuelles
<span id="changed">|</span>des classes d'amorce et d'application en les stockant dans le cache
<span id="changed">|</span>d'une m&eacute;moire partag&eacute;e. Le partage de classes r&eacute;duit la
<span id="changed">|</span>consommation globale de m&eacute;moire virtuelle lorsque plusieurs
<span id="changed">|</span>machines virtuelles partagent un cache. Il diminue &eacute;galement le
<span id="changed">|</span>temps de d&eacute;marrage d'une machine virtuelle apr&egrave;s cr&eacute;ation du
<span id="changed">|</span>cache. Le cache de classes partag&eacute;es est ind&eacute;pendant de toute machine
<span id="changed">|</span>virtuelle active et demeure au-del&agrave; de la dur&eacute;e de vie de celle l'ayant
<span id="changed">|</span>lanc&eacute;.</p>
<span id="changed">|</span><a name="wq76"></a>
<span id="changed">|</span><h2 id="wq76"><a href="#ToC_75">Pr&eacute;sentation du partage de classes</a></h2>
<span id="changed">|</span><p>IBM SDK permet un partage de classes illimit&eacute; qui semble transparent pour l'utilisateur.</p>
<span id="changed">|</span><a name="wq77"></a>
<span id="changed">|</span><h3 id="wq77"><a href="#ToC_76">Contenu du cache</a></h3>
<span id="changed">|</span><p>Le cache de classes partag&eacute;es contient des donn&eacute;es et des
<span id="changed">|</span>m&eacute;tadonn&eacute;es descriptives de classes statiques en lecture seule. Toute
<span id="changed">|</span>machine virtuelle peut lire et mettre &agrave; jour ce cache. Les machines
<span id="changed">|</span>virtuelles le partageant doivent &ecirc;tre de la m&ecirc;me &eacute;dition. Soyez vigilant si une modification de code interm&eacute;diaire
<span id="changed">|</span>d'ex&eacute;cution est appliqu&eacute;e. (Voir <a href="#runtimebytecode">Modification du code interm&eacute;diaire d'ex&eacute;cution</a>.)</p>
<span id="changed">|</span><a name="wq78"></a>
<span id="changed">|</span><h3 id="wq78"><a href="#ToC_77">Mise &agrave; jour dynamique du cache</a></h3>
<span id="changed">|</span><p>Comme le cache de classes partag&eacute;es est conserv&eacute; au-del&agrave; du
<span id="changed">|</span>cycle de vie d'une machine virtuelle, il est mis &agrave; jour de
<span id="changed">|</span>fa&ccedil;on dynamique pour refl&eacute;ter les modifications apport&eacute;es aux
<span id="changed">|</span>fichiers JAR ou aux classes du syst&egrave;me de fichiers. La mise &agrave; jour
<span id="changed">|</span>dynamique rend le cache transparent pour l'application qui
<span id="changed">|</span>l'utilise.</p>
<span id="changed">|</span><a name="wq79"></a>
<span id="changed">|</span><h3 id="wq79"><a href="#ToC_78">Activation du partage de classes</a></h3>
<span id="changed">|</span><p>Activez le partage de classes &agrave; l'aide de l'option
<span id="changed">|</span><strong>-Xshareclasses</strong> au d&eacute;marrage de la machine
<span id="changed">|</span>virtuelle, afin que celle-ci se connecte &agrave; un cache existant ou en
<span id="changed">|</span>cr&eacute;e un. Toutes les classes d'amorce et d'application charg&eacute;es par
<span id="changed">|</span>la machine virtuelle sont par d&eacute;faut partag&eacute;es. Les chargeurs de
<span id="changed">|</span>classes personnalis&eacute;s effectuent automatiquement un partage s'ils
<span id="changed">|</span>&eacute;tendent le chargeur de classes de l'application&nbsp;; sinon,
<span id="changed">|</span>ils doivent utiliser l'API Java Helper fournie avec la machine
<span id="changed">|</span>virtuelle pour acc&eacute;der au cache. (Voir <a href="#adaptingclassloaders">Adaptation de chargeurs de classes personnalis&eacute;s pour partager
<span id="changed">|</span>des classes</a>.)</p>
<span id="changed">|</span><a name="wq80"></a>
<span id="changed">|</span><h3 id="wq80"><a href="#ToC_79">S&eacute;curit&eacute; du cache</a></h3>
<span id="changed">|</span><p>L'acc&egrave;s au cache des classes est limit&eacute;e par les droits Java et du syst&egrave;me d'exploitation. Le cache de classes partag&eacute;es est cr&eacute;&eacute; avec l'acc&egrave;s utilisateur par d&eacute;faut sauf si la sous-option de ligne de commande <strong>groupAccess</strong> est utilis&eacute;e. Seul un chargeur de classe qui est enregistr&eacute; pour partager des classes peut en ajouter
<span id="changed">|</span>&agrave; ce cache. Si un gestionnaire de s&eacute;curit&eacute; Java est install&eacute;, les chargeurs de classe &agrave; l'exception des chargeurs de classe d'extension, d'application et d'amorce, doivent disposer de droits permettant de partager des classes par l'ajout de SharedClassPermissions au fichier java.policy. (Voir <a href="#usingsharedclasspermissions">Utilisation de SharedClassPermissions</a>.)
<span id="changed">|</span>Le droit RuntimePermission "createClassLoader" restreint la cr&eacute;ation de chargeurs de classe et restreint donc l'acc&egrave;s au cache.</p>
<span id="changed">|</span><a name="wq81"></a>
<span id="changed">|</span><h3 id="wq81"><a href="#ToC_80">Dur&eacute;e de vie du cache</a></h3>
<span id="changed">|</span><p>Plusieurs caches peuvent se trouver sur un m&ecirc;me syst&egrave;me&nbsp;; ils sont
<span id="changed">|</span>alors d&eacute;sign&eacute;s par leur nom, comme sous-option de la commande <strong>-Xshareclasses</strong>. Une machine virtuelle ne peut se connecter qu'&agrave; un seul cache &agrave; la fois. Vous
<span id="changed">|</span>indiquez la taille du cache au d&eacute;marrage via <strong>-Xscmx&lt;n>[k|m|g]</strong>, mais cette taille est ensuite d&eacute;termin&eacute;e
<span id="changed">|</span>par rapport &agrave; la dur&eacute;e de vie du cache. Les caches existent
<span id="changed">|</span>jusqu'&agrave; destruction explicite avec une sous-option de la
<span id="changed">|</span>commande <strong>-Xshareclasses</strong> ou red&eacute;marrage du
<span id="changed">|</span>syst&egrave;me. </p>
<span id="changed">|</span><a name="wq82"></a>
<span id="changed">|</span><h3 id="wq82"><a href="#ToC_81">Utilitaires du cache</a></h3>
<span id="changed">|</span><p>Tous les utilitaires du cache sont des sous-options de la
<span id="changed">|</span>commande <strong>-Xshareclasses</strong>. Utilisez
<span id="changed">|</span><strong>-Xshareclasses:help</strong> pour obtenir la liste des
<span id="changed">|</span>sous-options disponibles.</p>
<span id="changed">|</span><a name="sharedclassesxoptions"></a>
<span id="changed">|</span><h2 id="sharedclassesxoptions"><a href="#ToC_82">Utilisation d'options de ligne de commande pour le partage de
<span id="changed">|</span>classes</a></h2>
<span id="changed">|</span><p>Le partage de classes est activ&eacute; et configur&eacute; &agrave; l'aide des options de ligne de commande <strong>-Xshareclasses </strong> et <strong>-Xscmx</strong>.</p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>-Xscmx</strong>&lt;<em>taille</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Indique la taille du cache. Cette option s'applique uniquement si un cache est cr&eacute;&eacute; et s'il n'existe aucun autre
<span id="changed">|</span>cache portant le m&ecirc;me nom. La taille du
<span id="changed">|</span>cache par d&eacute;faut d&eacute;pend de la plateforme.
<span id="changed">|</span>Vous pouvez conna&icirc;tre la taille utilis&eacute;e en ajoutant <strong>-verbose:sizes</strong> en tant qu'argument de ligne de commande. La taille de cache minimal est 4 Ko. Le
<span id="changed">|</span>maximum est &eacute;galement fonction de la plateforme. (Voir
<span id="changed">|</span><a href="#cachesizelimits">Limites de la taille du cache</a>.)</li></ul></li>
<span id="changed">|</span><li><strong>-Xshareclasses</strong>:&lt;<em>sous-option1</em>>[,&lt;<em>sous-option2</em>>...]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Active le partage de classes et accepte un certain nombre de
<span id="changed">|</span>sous-options, dont des utilitaires du cache. Ces derniers r&eacute;alisent
<span id="changed">|</span>l'op&eacute;ration requise sur le cache sp&eacute;cifi&eacute; sans d&eacute;marrer la machine
<span id="changed">|</span>virtuelle. Vous pouvez combiner plusieurs sous-options en les
<span id="changed">|</span>s&eacute;parant par des virgules&nbsp;; pour leur part, les utilitaires du cache
<span id="changed">|</span>s'excluent mutuellement.</li></ul>Vous pouvez employer les sous-options suivantes avec
<span id="changed">|</span>l'option <strong>-Xshareclasses</strong>&nbsp;: par exemple, <strong>-Xshareclasses:help</strong>
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>help</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>R&eacute;pertorie toutes les options de ligne de commande.</li></ul></li>
<span id="changed">|</span><li><strong>name=</strong>&lt;<em>nom</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Etablit une connexion au cache du nom indiqu&eacute;, en le cr&eacute;ant s'il
<span id="changed">|</span>n'existe pas d&eacute;j&agrave;. Utilisez l'option <strong>listAllCaches</strong> pour afficher
<span id="changed">|</span>les caches actuellement disponibles. Si vous ne pr&eacute;cisez pas de nom, celui par
<span id="changed">|</span>d&eacute;faut "sharedcc_" est associ&eacute; &agrave; votre nom d'utilisateur pour
<span id="changed">|</span>cr&eacute;er le cache. </li></ul></li>
<span id="changed">|</span><li><strong>groupAccess</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>D&eacute;finit des droits de syst&egrave;me d'exploitation sur un nouveau cache afin de permettre l'acc&egrave;s
<span id="changed">|</span>de groupe dans ce cache. L'acc&egrave;s utilisateur uniquement constitue la valeur par d&eacute;faut.</li></ul></li>
<span id="changed">|</span><li><strong>verbose</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Le mode prolixe offre une sortie d&eacute;taill&eacute;e sur l'activit&eacute; d'entr&eacute;e-sortie du cache, avec des informations
<span id="changed">|</span>sur les classes stock&eacute;es et trouv&eacute;es. Chaque chargeur de classes re&ccedil;oit un ID
<span id="changed">|</span>unique (le chargeur d'amorce correspond toujours &agrave; 0) et la sortie
<span id="changed">|</span>montre la hi&eacute;rarchie des chargeurs de classes en pratique&nbsp;: chacun doit
<span id="changed">|</span>demander des classes &agrave; ses parents avant de les charger. Il est
<span id="changed">|</span>normal de constater de nombreuses demandes ayant &eacute;chou&eacute; dans la
<span id="changed">|</span>hi&eacute;rarchie de chargeurs de classes. L'option standard <strong>-verbose:class</strong> permet &eacute;galement une sortie prolixe du partage
<span id="changed">|</span>de classes si ce dernier est activ&eacute;.  </li></ul></li>
<span id="changed">|</span><li><strong>modified=</strong>&lt;<em>contexte modifi&eacute;</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cette option est requise si un agent de code interm&eacute;diaire
<span id="changed">|</span>install&eacute; peut modifier le code
<span id="changed">|</span>interm&eacute;diaire lors de l'ex&eacute;cution. Si vous n'indiquez pas cette
<span id="changed">|</span>option et qu'un agent de code interm&eacute;diaire est install&eacute;, aucune
<span id="changed">|</span>classe n'est stock&eacute;e ou trouv&eacute;e dans le cache. Le
<span id="changed">|</span><em>&lt;contexte modifi&eacute;></em> est un descripteur
<span id="changed">|</span>choisi par l'utilisateur&nbsp;; par exemple, "myModification1". Il
<span id="changed">|</span>partitionne le cache, afin que seules les machines virtuelles
<span id="changed">|</span>utilisant le contexte myModification1 puissent partager les m&ecirc;mes
<span id="changed">|</span>classes. Par exemple, si vous ex&eacute;cutez "HelloWorld" avec un contexte
<span id="changed">|</span>de modification, puis &agrave; nouveau avec un autre contexte, toutes les
<span id="changed">|</span>classes sont stock&eacute;es deux fois dans le cache.</li></ul></li>
<span id="changed">|</span><li><strong>destroy</strong> (option d'utilitaire)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>D&eacute;truit un cache avec un nom indiqu&eacute; dans la sous-option
<span id="changed">|</span><strong>name=</strong>&lt;<em>nom</em>>. Si
<span id="changed">|</span>aucun nom n'est pr&eacute;cis&eacute;, le cache par d&eacute;faut est d&eacute;truit. Un cache peut uniquement &ecirc;tre d&eacute;truit si toutes les machines
<span id="changed">|</span>virtuelles l'employant sont arr&ecirc;t&eacute;es et que l'utilisateur dispose des
<span id="changed">|</span>droits n&eacute;cessaires.</li></ul></li>
<span id="changed">|</span><li><strong>destroyAll</strong> (option d'utilitaire)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Tente de d&eacute;truire tous les caches disponibles pour l'utilisateur. Un cache peut uniquement &ecirc;tre d&eacute;truit si toutes les machines
<span id="changed">|</span>virtuelles l'employant sont arr&ecirc;t&eacute;es et que l'utilisateur dispose des
<span id="changed">|</span>droits n&eacute;cessaires.</li></ul></li>
<span id="changed">|</span><li><strong>expire=</strong>&lt;<em>temps en minutes</em>>
<span id="changed">|</span>(option d'utilitaire)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>D&eacute;truit tous les caches inutilis&eacute;s pendant le temps sp&eacute;cifi&eacute;.</li></ul></li>
<span id="changed">|</span><li><strong>listAllCaches</strong> (option d'utilitaire)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>R&eacute;pertorie tous les caches sur le syst&egrave;me en pr&eacute;cisant s'ils
<span id="changed">|</span>sont utilis&eacute;s et &agrave; quand remonte leur derni&egrave;re utilisation. </li></ul></li>
<span id="changed">|</span><li><strong>printStats</strong> (option d'utilitaire)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Affiche des informations statistiques r&eacute;sum&eacute;es sur le cache
<span id="changed">|</span>indiqu&eacute; dans la sous-option
<span id="changed">|</span><strong>name=</strong>&lt;<em>nom</em>>. Si aucun nom n'est pr&eacute;cis&eacute;, les statistiques concernent le cache par
<span id="changed">|</span>d&eacute;faut. Les informations les plus utiles sont celles indiquant &agrave;
<span id="changed">|</span>quel point il est rempli et combien de classes il renferme. Les
<span id="changed">|</span>classes "p&eacute;rim&eacute;es" sont celles n'ayant pas &eacute;t&eacute; mises &agrave; jour sur le
<span id="changed">|</span>syst&egrave;me de fichiers et que le cache a donc marqu&eacute;es de la sorte. Ces
<span id="changed">|</span>classes ne sont pas supprim&eacute;es du cache. Voir le
<span id="changed">|</span>document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> pour en
<span id="changed">|</span>savoir plus.</li></ul></li>
<span id="changed">|</span><li><strong>printAllStats</strong> (option d'utilitaire)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Affiche des informations d&eacute;taill&eacute;es sur le contenu du cache
<span id="changed">|</span>indiqu&eacute; dans la sous-option
<span id="changed">|</span><strong>name=</strong>&lt;<em>nom</em>>.
<span id="changed">|</span>Si aucun nom n'est pr&eacute;cis&eacute;, les statistiques concernent le cache par
<span id="changed">|</span>d&eacute;faut.
<span id="changed">|</span>Chaque classe appara&icirc;t dans l'ordre chronologique, avec une
<span id="changed">|</span>r&eacute;f&eacute;rence &agrave; l'emplacement depuis lequel elle a &eacute;t&eacute; charg&eacute;e.  Voir le
<span id="changed">|</span>document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> pour en
<span id="changed">|</span>savoir plus.</li></ul></li></ul></li></ul>
<span id="changed">|</span><a name="wq83"></a>
<span id="changed">|</span><h2 id="wq83"><a href="#ToC_83">Cr&eacute;ation, remplissage, contr&ocirc;le et suppression d'un cache</a></h2>
<span id="changed">|</span><p>Pour activer le partage de classes, ajoutez
<span id="changed">|</span><strong>-Xshareclasses[:name=&lt;nom>]</strong> &agrave; la ligne de
<span id="changed">|</span>commande de votre application. La machine virtuelle se connecte alors
<span id="changed">|</span>&agrave; un cache existant du nom indiqu&eacute; ou en cr&eacute;e un de ce nom. Si un
<span id="changed">|</span>nouveau cache est cr&eacute;&eacute;, il est rempli avec toutes les classes
<span id="changed">|</span>d'amorce et d'application charg&eacute;es jusqu'&agrave; ce qu'il soit satur&eacute;. Si deux machines virtuelles ou
<span id="changed">|</span>plus sont d&eacute;marr&eacute;es en m&ecirc;me temps, elles remplissent en parall&egrave;le le
<span id="changed">|</span>cache.  </p>
<span id="changed">|</span><p>Pour v&eacute;rifier que le cache a bien &eacute;t&eacute; cr&eacute;&eacute;, ex&eacute;cutez <tt class="xph">java -Xshareclasses:listAllCaches</tt>. Pour savoir
<span id="changed">|</span>combien de classes et quelle quantit&eacute; de donn&eacute;es sont partag&eacute;es,
<span id="changed">|</span>ex&eacute;cutez <tt class="xph">java -Xshareclasses:[name=&lt;nom>],printStats</tt>. (Ces
<span id="changed">|</span>utilitaires peuvent &ecirc;tre ex&eacute;cut&eacute;s au terme de la machine virtuelle
<span id="changed">|</span>de l'application ou dans une autre fen&ecirc;tre de commande.)</p>
<span id="changed">|</span><p>Pour voir les classes charg&eacute;es depuis le cache ou stock&eacute;es &agrave; l'int&eacute;rieur,
<span id="changed">|</span>ajoutez <tt class="xph">-Xshareclasses:[name=&lt;nom>],verbose</tt> &agrave; la ligne
<span id="changed">|</span>de commande de votre application.</p>
<span id="changed">|</span><p>Pour supprimer le cache cr&eacute;&eacute;, ex&eacute;cutez <tt class="xph">java
<span id="changed">|</span>-Xshareclasses:[name=&lt;nom>],delete</tt>.  Vous devez uniquement
<span id="changed">|</span>supprimer des caches s'ils contiennent de nombreuses classes
<span id="changed">|</span>p&eacute;rim&eacute;es ou s'ils sont pleins et que vous souhaitez en cr&eacute;er un
<span id="changed">|</span>plus important.  </p>
<span id="changed">|</span><p>Il est recommand&eacute; de r&eacute;gler la taille du cache pour votre application
<span id="changed">|</span>sp&eacute;cifique car il est peu probable que la valeur par d&eacute;faut corresponde &agrave; la
<span id="changed">|</span>taille optimale. La meilleure m&eacute;thode de d&eacute;termination de la taille de
<span id="changed">|</span>cache optimale
<span id="changed">|</span>consiste &agrave; indiquer un cache de grande taille (&agrave; l'aide de l'option <strong>-Xscmx</strong>), d'ex&eacute;cuter l'application puis d'utiliser printStats afin de d&eacute;terminer
<span id="changed">|</span>le montant de donn&eacute;es de classe ayant &eacute;t&eacute; stock&eacute;es. Ajoutez une petite quantit&eacute; &agrave; la valeur
<span id="changed">|</span>affich&eacute;e dans printStats pour la contingence. Etant donn&eacute; que des classes peuvent &ecirc;tre charg&eacute;es
<span id="changed">|</span>&agrave; tout moment lors du cycle de vie de la machine virtuelle, il est pr&eacute;f&eacute;rable d'effectuer cette analyse
<span id="changed">|</span>une fois l'application arr&ecirc;t&eacute;e. Toutefois, un cache satur&eacute; n'a aucune r&eacute;percussion n&eacute;gative sur les performances
<span id="changed">|</span>ou la capacit&eacute; des machines virtuelles qui y sont connect&eacute;es. Il peut donc &ecirc;tre l&eacute;gitime de d&eacute;finir une taille
<span id="changed">|</span>de cache plus petite que n&eacute;cessaire.</p>
<span id="changed">|</span><p>Si un cache arrive &agrave; saturation, un message est &eacute;mis sur la ligne de commande
<span id="changed">|</span>de toutes les machines virtuelles utilisant le cache. Ces derni&egrave;res ne chargeront
<span id="changed">|</span>plus aucune classe dans leur propre m&eacute;moire de processus. Les classes d'un cache
<span id="changed">|</span>satur&eacute; peuvent toujours &ecirc;tre partag&eacute;es mais ce dernier est en lecture seule et ne
<span id="changed">|</span>peut plus &ecirc;tre mis &agrave; jour avec de nouvelles classes.</p>
<span id="changed">|</span><a name="wq84"></a>
<span id="changed">|</span><h2 id="wq84"><a href="#ToC_84">Performances et sollicitation de la m&eacute;moire</a></h2>
<span id="changed">|</span><p>Le partage de classes s'av&egrave;re particuli&egrave;rement utile sur des
<span id="changed">|</span>syst&egrave;mes recourant &agrave; plusieurs machines virtuelles qui ex&eacute;cutent un
<span id="changed">|</span>m&ecirc;me code. Le syst&egrave;me profite ainsi de la consommation r&eacute;duite de m&eacute;moire
<span id="changed">|</span>virtuelle.
<span id="changed">|</span> Il est &eacute;galement bienvenu sur des syst&egrave;mes
<span id="changed">|</span>d&eacute;marrant et arr&ecirc;tant souvent des machines virtuelles, profitant du
<span id="changed">|</span>meilleur temps de d&eacute;marrage. </p>
<span id="changed">|</span><p>Le temps syst&egrave;me pour cr&eacute;er et remplir un nouveau cache est minimal. Le
<span id="changed">|</span>co&ucirc;t du temps de d&eacute;marrage des machines virtuelles est g&eacute;n&eacute;ralement
<span id="changed">|</span>compris entre 0 et 5 % pour une seule machine virtuelle, en fonction du nombre de classes charg&eacute;es.
<span id="changed">|</span>L'am&eacute;lioration de ce temps avec un cache rempli oscille entre 10 et
<span id="changed">|</span>40 %, selon le syst&egrave;me d'exploitation et le nombre de classes
<span id="changed">|</span>charg&eacute;es. Plusieurs machines virtuelles ex&eacute;cut&eacute;es de mani&egrave;re simultan&eacute;e
<span id="changed">|</span>tirent un plus grand parti du temps de d&eacute;marrage g&eacute;n&eacute;ral.</p>
<span id="changed">|</span><p>Lorsque vous ex&eacute;cutez votre application avec le partage de
<span id="changed">|</span>classes, vous pouvez employer les outils du syst&egrave;me
<span id="changed">|</span>d'exploitation pour constater la baisse de consommation de
<span id="changed">|</span>m&eacute;moire virtuelle.</p>
<span id="changed">|</span><a name="wq85"></a>
<span id="changed">|</span><h2 id="wq85"><a href="#ToC_85">Limitations et consid&eacute;rations concernant l'utilisation du partage des classes</a></h2>
<span id="changed">|</span><a name="cachesizelimits"></a>
<span id="changed">|</span><h3 id="cachesizelimits"><a href="#ToC_86">Limites de la taille du cache</a></h3>
<span id="changed">|</span><p>Le cache du partage des classes est allou&eacute; &agrave; l'aide du m&eacute;canisme de m&eacute;moire partag&eacute;e System
<span id="changed">|</span>V IPC.</p>
<span id="changed">|</span><p>La taille de cache th&eacute;orique maximale est  2 Go. La taille du cache indiqu&eacute;e est limit&eacute;e
<span id="changed">|</span>par la quantit&eacute; d'espace physique et de pagination disponible sur le syst&egrave;me.</p>
<span id="changed">|</span><p>Etant donn&eacute; que l'espace d'adresse virtuelle d'un
<span id="changed">|</span>processus
<span id="changed">|</span>est partag&eacute; entre le cache de classes partag&eacute;es et le segment Java, l'augmentation de la taille
<span id="changed">|</span>maximale du segment Java r&eacute;duit la taille du cache de classes partag&eacute;es que vous pouvez cr&eacute;er.</p>
<span id="changed">|</span><a name="runtimebytecode"></a>
<span id="changed">|</span><h3 id="runtimebytecode"><a href="#ToC_87">Modification du code interm&eacute;diaire d'ex&eacute;cution</a></h3>
<span id="changed">|</span><p>Toute machine virtuelle utilisant un agent JVMTI capable de
<span id="changed">|</span>modifier du code interm&eacute;diaire ne peut partager des classes tant que
<span id="changed">|</span>la sous-option modified=&lt;contexte modifi&eacute;> est utilis&eacute;e &agrave; la ligne
<span id="changed">|</span>de commande (voir ci-dessus). Le contexte modifi&eacute; est un descripteur
<span id="changed">|</span>sp&eacute;cifique &agrave; l'utilisateur d&eacute;signant le type de modification
<span id="changed">|</span>effectu&eacute;e. Toutes les machines virtuelles utilisant un contexte
<span id="changed">|</span>modifi&eacute; doivent modifier le code interm&eacute;diaire de fa&ccedil;on pr&eacute;visible
<span id="changed">|</span>et r&eacute;it&eacute;rable&nbsp;; ainsi, les classes modifi&eacute;es stock&eacute;es dans le cache
<span id="changed">|</span>int&egrave;grent les modifications attendues lorsqu'elles sont charg&eacute;es par
<span id="changed">|</span>une autre machine virtuelle. Toute modification doit &ecirc;tre pr&eacute;visible
<span id="changed">|</span>afin que les classes charg&eacute;es depuis le cache ne puissent &ecirc;tre &agrave;
<span id="changed">|</span>nouveau modifi&eacute;es par l'agent. Le code interm&eacute;diaire modifi&eacute; et
<span id="changed">|</span>inchang&eacute; peut &ecirc;tre stock&eacute; dans le m&ecirc;me cache. Voir le document
<span id="changed">|</span><a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> pour en savoir
<span id="changed">|</span>plus &agrave; ce sujet.</p>
<span id="changed">|</span><a name="wq86"></a>
<span id="changed">|</span><h3 id="wq86"><a href="#ToC_88">Limitations du syst&egrave;me d'exploitation</a></h3>
<span id="changed">|</span><p>Pour les syst&egrave;mes d'exploitation pouvant ex&eacute;cuter
<span id="changed">|</span>des applications tant 32 que 64 bit, le partage de classes n'est pas
<span id="changed">|</span>autoris&eacute; entre des machines virtuelles 32 et 64 bit.
<span id="changed">|</span>La sous-option
<span id="changed">|</span><strong>listAllCaches</strong> r&eacute;pertorie les caches de 32 et
<span id="changed">|</span>64 bit, en fonction du mode d'adressage de la machine virtuelle
<span id="changed">|</span>utilis&eacute;e.</p>
<span id="changed">|</span><p>Le cache de classes partag&eacute;es requiert de l'espace disque
<span id="changed">|</span>pour stocker des informations d'identification sur les caches
<span id="changed">|</span>figurant sur le syst&egrave;me.  Si le
<span id="changed">|</span>r&eacute;pertoire contenant les informations d'identification est supprim&eacute;,
<span id="changed">|</span>la machine virtuelle ne peut identifier les classes partag&eacute;es sur le
<span id="changed">|</span>syst&egrave;me et doit cr&eacute;er &agrave; nouveau le cache.</p>
<span id="changed">|</span><p>Les droits permettant d'acc&eacute;der &agrave; un cache de classes partag&eacute;es sont appliqu&eacute;s par
<span id="changed">|</span>le syst&egrave;me d'exploitation. Si aucun nom de cache n'est pr&eacute;cis&eacute;, le nom d'utilisateur est ajout&eacute;
<span id="changed">|</span>au nom par d&eacute;faut afin que plusieurs utilisateurs sur le m&ecirc;me syst&egrave;me
<span id="changed">|</span>cr&eacute;ent leurs propres caches par d&eacute;faut.</p>
<span id="changed">|</span><a name="usingsharedclasspermissions"></a>
<span id="changed">|</span><h3 id="usingsharedclasspermissions"><a href="#ToC_89">Utilisation de SharedClassPermissions</a></h3>
<span id="changed">|</span><p>Si un gestionnaire de s&eacute;curit&eacute; est utilis&eacute; conjointement au partage de classes et que l'application
<span id="changed">|</span>en cours d'ex&eacute;cution utilise ses propres chargeurs de classes, ces derniers doivent disposer du droit
<span id="changed">|</span>SharedClassPermissions pour pouvoir partager des classes. Vous ajoutez SharedClassPermissions
<span id="changed">|</span>au fichier java.policy en indiquant le nom de classe ClassLoader (les caract&egrave;res g&eacute;n&eacute;riques sont admis)
<span id="changed">|</span>et "read", "write" ou "read,write" pour d&eacute;terminer l'acc&egrave;s accord&eacute;.
<span id="changed">|</span>Par exemple&nbsp;:</p>
<span id="changed">|</span><pre class="xmp">permission com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*", "read,write";</pre><p class="indatacontent">Si un chargeur de classe ne dispose pas du droit SharedClassPermission correct et que
<span id="changed">|</span>des tentatives de partage de classe sont effectu&eacute;es, une exception AccessControlException est &eacute;mise. Vous ne pouvez pas
<span id="changed">|</span>modifier ou r&eacute;duire les droits des chargeurs de classe d'amor&ccedil;age, d'application ou d'extension par d&eacute;faut.</p>
<span id="changed">|</span><a name="adaptingclassloaders"></a>
<span id="changed">|</span><h2 id="adaptingclassloaders"><a href="#ToC_90">Adaptation de chargeurs de classes personnalis&eacute;s pour partager
<span id="changed">|</span>des classes</a></h2>
<span id="changed">|</span><p>La plupart des applications Java utilisent les chargeurs de
<span id="changed">|</span>classes des machines virtuelles ou disposent de chargeurs
<span id="changed">|</span>personnalis&eacute;s &eacute;tendant java/net/URLClassLoader. Les applications
<span id="changed">|</span>utilisant ces chargeurs peuvent automatiquement partager des classes d'amorce
<span id="changed">|</span>et d'application. Les chargeurs de classes n'&eacute;tendant pas
<span id="changed">|</span>java/net/URLClassLoader requi&egrave;rent des modifications afin de r&eacute;aliser
<span id="changed">|</span>un partage de classes.  Le droit SharedClassPermissions doit &ecirc;tre accord&eacute;
<span id="changed">|</span>&agrave; tous les chargeurs de classes personnalis&eacute;s si un gestionnaire est utilis&eacute;, voir <a href="#usingsharedclasspermissions">Utilisation de SharedClassPermissions</a>. IBM fournit plusieurs interfaces Java pour diff&eacute;rents types de chargeurs de classes personnalis&eacute;s, ce qui permet &agrave;
<span id="changed">|</span>ceux-ci de rechercher et de stocker des classes dans leur cache de
<span id="changed">|</span>classes partag&eacute;es. Ces classes se trouvent dans le package com.ibm.oti.shared. La documentation Java
<span id="changed">|</span>de ce package est fournie avec le SDK dans le fichier docs/apidoc.zip. Voir le
<span id="changed">|</span>document <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> pour en savoir
<span id="changed">|</span>plus sur le mode d'utilisation de ces interfaces.</p></font>
<a name="wq87"></a>
<h1 id="wq87"><a href="#ToC_91">Service et prise en charge pour des &eacute;diteurs de logiciels ind&eacute;pendants</a></h1>
<p> Si vous avez droit &agrave; des services pour le code de programme
appartenant &agrave; IBM Solutions Developer Program, contactez l'&eacute;quipe de
ce dernier en acc&eacute;dant au site Web &agrave; l'adresse&nbsp;:<a href="http://www.ibm.com/partnerworld/">http://www-1.ibm.com/partnerworld/</a>.</p>
<p>Si vous avez &eacute;tabli un contrat de service (tel qu'IBM Personal Systems
Support Line ou &eacute;quivalent selon le pays), les termes et conditions
d&eacute;terminent les services, le cas &eacute;ch&eacute;ant, que vous avez
le droit de recevoir par rapport au programme.</p>
<a name="wq88"></a>
<h1 id="wq88"><a href="#ToC_92">Accessibilit&eacute;</a></h1>
<p>Les guides utilisateur fournis avec ce SDK et le Runtime Environment ont &eacute;t&eacute; test&eacute;s &agrave; l'aide
de lecteurs d'&eacute;cran.  Les lecteurs d'&eacute;cran tels que Home
Page Reader ou JAWS peuvent &ecirc;tre utilis&eacute;s avec ces guides.</p>
<p>Pour modifier la taille des polices des guides utilisateur, utilisez la fonction fournie par votre navigateur, habituellement situ&eacute;e dans le menu <strong>Affichage</strong>.</p>
<p>Pour les utilisateurs n&eacute;cessitant une navigation par clavier, une description des touches utiles pour les applications Swing
est disponible dans la section "Swing Key Bindings" sur le site <a href="http://www-128.ibm.com/developerworks/java/jdk/additional/">http://www-128.ibm.com/developerworks/java/jdk/additional/</a></p>
<a name="ikeycmd"></a>
<h2 id="ikeycmd"><a href="#ToC_93">Accessibilit&eacute; iKeyman</a></h2>
<p><font color="red"><span id="changed">|</span>En plus de l'interface graphique, l'outil iKeyman fournit l'outil
<span id="changed">|</span>de ligne de commande <strong>IKEYCMD</strong>, qui a les m&ecirc;mes fonctions que l'interface
<span id="changed">|</span>graphique iKeyman. <strong>IKEYCMD</strong> permet de g&eacute;rer les cl&eacute;s, certificats et demandes de certificats. Vous pouvez appeler <strong>IKEYCMD</strong> &agrave; partir des scripts de shell natifs et &agrave; partir des programmes destin&eacute;s &agrave; &ecirc;tre utilis&eacute;s lorsque les applications requi&egrave;rent des interfaces personnalis&eacute;es pour les t&acirc;ches de gestion de certificats et de cl&eacute;s. <strong>IKEYCMD</strong> peut cr&eacute;er des fichiers de base de donn&eacute;es de cl&eacute;s pour tous les
<span id="changed">|</span>types actuellement pris en charge par iKeyman. <strong>IKEYCMD</strong> peut &eacute;galement cr&eacute;er des demandes de certificats, importer des certificats sign&eacute;s par CA et g&eacute;rer les certificats auto-sign&eacute;s. </font></p>
<p>Pour ex&eacute;cuter une commande <strong>IKEYCMD</strong>, entrez&nbsp;:</p>
<pre class="xmp">java [-Dikeycmd.properties=&lt;properties file>]com.ibm.gsk.ikeyman.ikeycmd
&lt;object> &lt;action> [options]</pre><p class="indatacontent">o&ugrave;&nbsp;:</p>
<dl>
<dt class="bold">&lt;object></dt>
<dd>correspond &agrave; l'un des &eacute;l&eacute;ments suivants&nbsp;:
<dl>
<dt class="bold">-keydb</dt>
<dd>Actions entreprises sur la base de donn&eacute;es de cl&eacute;s (un fichier de base de donn&eacute;es de cl&eacute;s CMS, un fichier de cl&eacute;s
WebDB ou une classe SSLight)
</dd>
<dt class="bold">-cert</dt>
<dd>Actions devant &ecirc;tre entreprises dans une base de donn&eacute;es de cl&eacute;s
</dd>
<dt class="bold">-certreq</dt>
<dd>Actions devant &ecirc;tre entreprises sur une demande de certificat dans une base de donn&eacute;es de cl&eacute;s
</dd>
<dt class="bold">-version</dt>
<dd>Affiche les informations de version pour <strong>IKEYCMD</strong>
</dd>
<dt class="bold">-help</dt>
<dd>Affiche l'aide relative aux appels de <strong>IKEYCMD</strong>.
</dd>
</dl>
</dd>
<dt class="bold">&lt;action></dt>
<dd><font color="red"><span id="changed">|</span>L'action pr&eacute;cise &agrave; entreprendre sur l'objet. Pour voir les actions
<span id="changed">|</span>disponibles pour un objet, appelez <strong>IKEYCMD</strong> en transmettant uniquement
<span id="changed">|</span>l'objet en tant qu'argument. L'aide contextuelle s'affiche, d&eacute;crivant uniquement les actions
<span id="changed">|</span>disponibles pour cet objet.</font>
</dd>
<dt class="bold">-Dikeycmd.properties</dt>
<dd>Indique le nom d'un fichier de propri&eacute;t&eacute;s facultatif &agrave; utiliser pour cet appel Java. Le fichier de propri&eacute;t&eacute;s par d&eacute;faut ikeycmd.properties est fourni comme fichier exemple pouvant &ecirc;tre modifi&eacute; et utilis&eacute; par toute
application Java.
</dd>
</dl>
<a name="wq89"></a>
<div class="notetitle" id="wq89">Remarque :</div>
<div class="notebody">Les mots-cl&eacute;s des objets et des actions doivent se trouver dans l'ordre d&eacute;fini. Toutefois, les options ne sont pas &agrave; position fixe et peuvent &ecirc;tre plac&eacute;es dans tout ordre
&agrave; condition qu'elles soient d&eacute;finies comme paires option-op&eacute;rande.</div>
<p>Pour plus d'informations, consultez le guide utilisateur d'iKeyman accessible &agrave; l'adresse&nbsp;: <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>.</p>
<a name="wq90"></a>
<h2 id="wq90"><a href="#ToC_94">Passage clavier des composants JComboBox dans Swing</a></h2>
<p>Si vous passez la bo&icirc;te &agrave; liste d&eacute;roulante d'un composant JComboBox avec les touches fl&eacute;ch&eacute;es, le bouton ou le champ &eacute;ditable de la zone de liste d&eacute;roulante ne change pas de valeur tant qu'un &eacute;l&eacute;ment n'est pas
s&eacute;lectionn&eacute;. Ce comportement est voulu pour cette version. Il am&eacute;liore l'accessibilit&eacute; et augmente la facilit&eacute; d'utilisation en garantissant que le comportement de passage par clavier soit identique &agrave; celui du passage par souris.</p>
<a name="wq91"></a>
<h2 id="wq91"><a href="#ToC_95">Accessibilit&eacute; de Web Start</a></h2>
<p>IBM Java Web Start Version 5.0 comporte plusieurs am&eacute;liorations de l'accessibilit&eacute; et de la facilit&eacute; d'utilisation par rapport &agrave; la version pr&eacute;c&eacute;dente, qui incluent notamment une meilleure prise en charge des lecteurs d'&eacute;cran et une navigation par clavier am&eacute;lior&eacute;e.</p>
<p>La ligne de commande peut uniquement &ecirc;tre utilis&eacute;e pour lancer une application Java activ&eacute;e pour
Web Start.  Pour modifier les options des pr&eacute;f&eacute;rences, vous devez &eacute;diter le fichier de configuration <strong>.java/.deployment/.deployment.properties</strong> situ&eacute; dans le r&eacute;pertoire initial de l'utilisateur. Pensez &agrave; effectuer une sauvegarde avant de modifier ce fichier.
 Toutes les pr&eacute;f&eacute;rences pouvant &ecirc;tre d&eacute;finies dans l'afficheur de cache de l'application Java ne sont pas disponibles dans le fichier de configuration.</p>
<a name="wq92"></a>
<h1 id="wq92"><a href="#ToC_96">Remarque g&eacute;n&eacute;rale sur la s&eacute;curit&eacute;</a></h1>
<p>Vous pouvez obtenir des fichiers de r&egrave;gles de comp&eacute;tence illimit&eacute;e
JCE &agrave; l'adresse <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>.    La
documentation sur les packages de s&eacute;curit&eacute; IBM JCE, JCEFIPS, JSSE2,
JSSEFIPS, JGSS, JAAS et la cryptographie du mat&eacute;riel est &eacute;galement
disponible sur ce site Web.</p>
<a name="wq93"></a>
<h1 id="wq93"><a href="#ToC_97">Restrictions connues</a></h1>
<p>Prenez en compte ces restrictions dans IBM 32-bit SDK pour Windows, v5.0&nbsp;:</p>
<ul>
<li>IBM 32-bit SDK pour Windows, v5.0 prend en charge les param&egrave;tres nationaux suivants&nbsp;:
<ul>
<li>Bengali (bn_IN)</li>
<li>Malayalam (ml_IN)</li>
<li>Oriya (or_IN)</li></ul>Les polices associ&eacute;es peuvent cependant ne pas fonctionner sur les composants AWT.
<p></p></li>
<li>IBM 32-bit SDK pour Windows, v5.0 prend en charge IPv6. 
<p></p></li>
<li>Lorsque vous utilisez un IME (Input Method Editor), il est
conseill&eacute; de terminer la composition des caract&egrave;res et de
s&eacute;lectionner le candidat avant d'utiliser l'espace de travail pour
toute autre op&eacute;ration.
<p></p></li>
<li>La cr&eacute;ation de paires de cl&eacute;s DSA de longueurs inhabituelles peut
prendre longtemps sur des machines lentes. L'attente ne doit pas &ecirc;tre
interpr&eacute;t&eacute;e comme un blocage&nbsp;; si vous patientez, vous verrez que le
processus aboutit. L'algorithme de g&eacute;n&eacute;ration de cl&eacute;s DSA a &eacute;t&eacute;
optimis&eacute; pour obtenir des longueurs standard (par exemple, 512, 1024)
plus rapidement que d'autres.
<p></p></li>
<li>Lorsqu'un utilisateur saisit du texte dans une zone de texte AWT, &agrave;
l'aide d'un &eacute;diteur IME, et qu'il redimensionne la fen&ecirc;tre de l'application <em> avant</em> de valider le texte, le texte est valid&eacute; automatiquement.
<p></p></li>
<li>Sur Windows 2000 et XP, la valeur par d&eacute;faut du
nombre de fichiers pouvant &ecirc;tre simultan&eacute;ment ouverts &eacute;tant trop
basse, et les applications dont l'activit&eacute; d'entr&eacute;e-sortie est intensive
conna&icirc;tront des difficult&eacute;s. Pour r&eacute;soudre cette limitation, modifiez
le fichier &lt;windows>\system32\CONFIG.NT et optez pour les valeurs
suivantes&nbsp;:
<ul>
<li><tt class="xph">files=200</tt></li>
<li><tt class="xph">buffers=60</tt></li></ul>o&ugrave; &lt;windows> correspond au r&eacute;pertoire d'installation de Windows.
<p></p></li>
<li>Sur Windows 2000, avec une profondeur de couleur de 32 bit, le
m&eacute;canisme DirectDraw de la machine virtuelle ne repeint pas la zone
sous le pointeur. Des carr&eacute;s gris ou noirs apparaissent donc sur les
menus que le pointeur de la souris a pass&eacute;s. La solution consiste &agrave;
d&eacute;sactiver le trac&eacute; direct
(<tt>-Dsun.java2d.noddraw</tt>) ou &agrave; changer de
r&eacute;solution d'&eacute;cran (par exemple 256 couleurs).
<p></p></li>
<li>Lorsque vous installez la biblioth&egrave;que native PKCS
11 sur une machine virtuelle v1.4.x, vous devez la placer dans le
r&eacute;pertoire bin du JRE, avec les autres biblioth&egrave;ques natives.
<p></p></li>
<li>L'appel NIO <strong>SocketChannel finishConnect()</strong> peut renvoyer la valeur <tt class="xph">true</tt> (le canal est
connect&eacute;) ou <tt class="xph">false</tt> (le processus de connexion n'a pas
encore abouti), ou bien lancer une exception. Sur Windows 2000,
lorsque vous utilisez des connexions non bloquantes, la
valeur <tt class="xph">false</tt> peut &ecirc;tre renvoy&eacute;e m&ecirc;me si un appel
<strong>select()</strong> Java a auparavant impliqu&eacute; qu'un
canal est pr&ecirc;t pour traitement. 
<p></p></li>
<li>Si vous entrez des caract&egrave;res DBCS dans un JTextArea, JTextField ou
JFileChooser, en passant d'un IME chinois (en particulier de Chinese Internal Code
et de Zhengma) &agrave; un IME Intelligent ABC, vous risquez de provoquer un vidage m&eacute;moire.
<p></p></li>
<li>Pour les utilisateurs tch&egrave;ques, le panneau de s&eacute;lection de la
langue du programme d'installation comporte une entr&eacute;e
traduite, alors que l'installation n'est pas localis&eacute;e. Cette limitation provient du programme installshield. La cha&icirc;ne est extraite du syst&egrave;me
d'exploitation en fonction de la page de codes. Comme le polonais
(dont l'installation est traduite) et le tch&egrave;que ont la page de
codes 1250, Installshield tente de r&eacute;cup&eacute;rer une liste de
langues du syst&egrave;me pour les deux, d'o&ugrave; la pr&eacute;sence de cette cha&icirc;ne.
<p></p></li>
<li>Les utilisateurs travaillant en chinois traditionnel ne
doivent pas diriger la sortie de l'application Java directement dans
la commande <strong>more</strong>. Ils doivent &agrave; la place
diriger la sortie vers un fichier temporaire et l'afficher &agrave;
part. 
<p></p></li>
<li>Les utilisateurs catalans doivent employer la police Lucida Console afin d'&eacute;viter la corruption
des lettres capitales accentu&eacute;es. Concerne uniquement les utilisateurs de Windows 2000.
<p></p></li></ul>
<a name="rcf"></a>
<h1 id="rcf"><a href="#ToC_98">Commentaires sur le guide utilisateur</a></h1>
<p>Vos commentaires sur ce guide utilisateur nous sont tr&egrave;s utiles. Si vous avez des remarques ou des suggestions &agrave; formuler sur notre documentation, veuillez nous les transmettre.
Vous pouvez nous envoyer vos questions "non techniques" ou tout commentaire relatif &agrave; notre documentation. Veuillez nous envoyer vos commentaires&nbsp;:</p>
<ul>
<li>par courrier &eacute;lectronique &agrave; l'adresse idrcf@hursley.ibm.com.</li>
<li>par t&eacute;l&eacute;copie au num&eacute;ro&nbsp;: 
<ul>
<li>01962 842327, &agrave; partir du Royaume-Uni&nbsp;; </li>
<li>&lt;code international&gt;44 1962 842327, &agrave; partir d'un autre pays. </li></ul> </li>
<li>par courrier, &agrave; l'adresse suivante&nbsp;:
<div class="lines">IBM United Kingdom Ltd<br />
User Technologies, <br />
Mail Point 095&nbsp;&nbsp;&nbsp;<br />
Hursley Park&nbsp;&nbsp;&nbsp;<br />
Winchester&nbsp;&nbsp;&nbsp;<br />
Hampshire&nbsp;&nbsp;&nbsp;<br />
SO21 2JN Royaume-Uni <br />
</div></li></ul>
<p><strong>Mention en petits caract&egrave;res.</strong> Tout commentaire ou document envoy&eacute; &agrave; IBM, tels que les questions, les commentaires, les suggestions ou ce qui est relatif au contenu de tels documents, sera consid&eacute;r&eacute; comme non confidentiel. IBM n'est assujettie &agrave; aucune sorte d'obligation relative &agrave; de telles informations et a le droit de reproduire, utiliser, divulguer, transformer ou cr&eacute;er des produits d&eacute;riv&eacute;s sans restriction. En outre, IBM a le droit d'utiliser les id&eacute;es, concepts, savoir-faire ou techniques contenus dans de tels documents dans un but quelconque, y compris le d&eacute;veloppement, la fabrication et la commercialisation des produits. </p>
<a name="notices"></a>
<h1 id="notices"><a href="#ToC_99">Remarques</a></h1>
<p> Le pr&eacute;sent document peut contenir des informations ou des
r&eacute;f&eacute;rences concernant certains produits, logiciels ou services IBM
non annonc&eacute;s dans ce pays. Pour plus de d&eacute;tails, r&eacute;f&eacute;rez-vous aux
documents d'annonce disponibles dans votre pays, ou adressez-vous &agrave;
votre partenaire commercial IBM.
Toute r&eacute;f&eacute;rence &agrave; un produit,
logiciel ou service IBM n'implique pas que seul ce produit, logiciel
ou service puisse &ecirc;tre utilis&eacute;. Tout autre &eacute;l&eacute;ment fonctionnellement
&eacute;quivalent peut &ecirc;tre utilis&eacute;, s'il n'enfreint aucun droit d'IBM. Il
est de la responsabilit&eacute; de l'utilisateur d'&eacute;valuer et de v&eacute;rifier
lui-m&ecirc;me les installations et applications r&eacute;alis&eacute;es avec des
produits, logiciels ou services non express&eacute;ment r&eacute;f&eacute;renc&eacute;s par IBM.</p>
<p>IBM peut d&eacute;tenir des brevets ou des demandes de brevet couvrant
les produits mentionn&eacute;s dans le pr&eacute;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 &eacute;crit, vos demandes
de renseignements relatives aux licences au&nbsp;:</p>
<p></p>
<pre class="address">IBM EMEA Director of Licensing
IBM Europe Middle-East Africa
Tour Descartes
La D&eacute;fense 5
2, avenue Gambetta
92066 - Paris-La D&eacute;fense CEDEX
France</pre>
<p>Pour le Canada, veuillez adresser votre courrier &agrave;&nbsp;:
</p>
<pre class="address">IBM Director of Commercial Relations
IBM Canada Ltd.
3600 Steeles Avenue East
Markham, Ontario
L3R 9Z7
Canada</pre>
<p>Les informations sur les licences concernant les produits
utilisant un jeu de caract&egrave;res double octet peuvent &ecirc;tre obtenues par
&eacute;crit &agrave; l'adresse suivante&nbsp;:</p>
<ul>
<li>IBM World Trade Asia Corporation Licensing 
<br />2-31 Roppongi 3-chome, Minato-ku 
<br />Tokyo
106-0032, Japon 
<br /></li></ul>
<p>Le paragraphe suivant ne s'applique ni au Royaume-Uni, ni dans
aucun autre pays dans lequel il serait contraire aux lois locales.</p>
<p>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.</p>
<p>Le pr&eacute;sent document peut contenir des inexactitudes ou des
coquilles. Il est mis &agrave; jour p&eacute;riodiquement. Chaque nouvelle
&eacute;dition inclut les mises &agrave; jour. IBM peut modifier sans pr&eacute;avis les
programmes et les logiciels qu'il d&eacute;crit.</p>
<p>Les r&eacute;f&eacute;rences &agrave; des sites Web non IBM sont fournies &agrave; titre
d'information uniquement et n'impliquent en aucun cas une adh&eacute;sion
aux donn&eacute;es qu'ils contiennent. Les &eacute;l&eacute;ments figurant sur ces sites
Web ne font pas partie des &eacute;l&eacute;ments du pr&eacute;sent produit IBM et
l'utilisation de ces sites rel&egrave;ve de votre seule responsabilit&eacute;. </p>
<p>IBM pourra utiliser ou diffuser, de toute mani&egrave;re qu'elle jugera
appropri&eacute;e et sans aucune obligation de sa part,
tout ou partie des informations qui lui seront fournies.</p>
<p>Les licenci&eacute;s souhaitant obtenir des informations
permettant&nbsp;: (i) l'&eacute;change des donn&eacute;es entre des logiciels
cr&eacute;&eacute;s de fa&ccedil;on ind&eacute;pendante et d'autres logiciels (dont celui-ci), et (ii)
l'utilisation mutuelle des donn&eacute;es ainsi &eacute;chang&eacute;es, doivent adresser
leur demande &agrave;&nbsp;:</p>
<ul>
<li>JIMMAIL@uk.ibm.com 
<br />[Hursley Java Technology Center
(JTC) contact]</li></ul>
<p>Ces informations peuvent &ecirc;tre soumises &agrave; des conditions
particuli&egrave;res, pr&eacute;voyant notamment le paiement d'une redevance.</p>
<p>Le logiciel sous licence d&eacute;crit dans ce document et tous les
&eacute;l&eacute;ments sous licence disponibles s'y rapportant sont fournis par IBM
conform&eacute;ment aux termes du Contrat sur les produits et services IBM,
des Conditions internationales d'utilisation des logiciels IBM ou de
tout autre accord &eacute;quivalent.</p>
<p>Les donn&eacute;es de performance indiqu&eacute;es dans ce document ont &eacute;t&eacute;
d&eacute;termin&eacute;es dans un environnement contr&ocirc;l&eacute;.
Par cons&eacute;quent, les
r&eacute;sultats peuvent varier de mani&egrave;re significative selon l'environnement
d'exploitation utilis&eacute;.
Certaines mesures &eacute;valu&eacute;es sur des syst&egrave;mes en cours
de d&eacute;veloppement ne sont pas garanties sur tous les syst&egrave;mes disponibles. En
outre, elles peuvent r&eacute;sulter d'extrapolations.
Les r&eacute;sultats peuvent
donc varier. Il incombe aux utilisateurs de ce document de v&eacute;rifier
si ces donn&eacute;es sont applicables &agrave; leur environnement d'exploitation.</p>
<p>Les informations concernant des produits non IBM ont &eacute;t&eacute; obtenues aupr&egrave;s des
fournisseurs de ces produits, par l'interm&eacute;diaire d'annonces publiques ou via d'autres sources disponibles. IBM n'a  pas  test&eacute; ces produits et ne peut confirmer l'exactitude de leurs
performances ni leur compatibilit&eacute;. Elle ne peut recevoir aucune r&eacute;clamation concernant des produits
non IBM.
Toute question concernant les performances de produits
non IBM doit &ecirc;tre adress&eacute;e aux fournisseurs de ces produits.</p>
<a name="wq94"></a>
<h2 id="wq94"><a href="#ToC_100">Marques</a></h2>
<p>Java, ainsi que tous les marques et logos incluant Java, sont des marques
de Sun Microsystems, Inc. aux Etats-Unis et/dans certains autres pays.</p>
<p>D'autres soci&eacute;t&eacute;s sont propri&eacute;taires des autres marques, noms de
produits ou logos qui pourraient appara&icirc;tre dans ce document.</p>
<p>Le pr&eacute;sent produit est &eacute;galement partiellement bas&eacute;
sur le logiciel FreeType Project. Pour plus d'informations sur
FreeType, consultez le site suivant&nbsp;:
<a href="http://www.freetype.org">http://www.freetype.org</a>.</p>
<p>Le pr&eacute;sent produit comprend
des logiciels d&eacute;velopp&eacute;s par la soci&eacute;t&eacute; Apache Software Foundation
(<a href="http://www.apache.org/">http://www.apache.org/</a>).</p>
<a id="Bot_Of_Page" name="Bot_Of_Page"></a>
</body>
</html>
