Remarque : Avant d'utiliser le présent document et le produit associé, prenez connaissance des informations générales figurant à la section Remarques.
Cette édition du guide utilisateur s'applique à IBM 64-bit Runtime Environment pour Windows sur architecture AMD64, Java 2 Technology Edition, Version 1.4.2 ainsi qu'aux versions et modifications suivantes, sauf indication contraire dans les nouvelles éditions.
(C) Copyright IBM France 2004. Tous droits réservés.
(c) Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.
(c) Copyright International Business Machines Corporation, 1999, 2004. All rights reserved.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
IBM 64-bit Runtime Environment pour Windows sur architecture AMD64, Java 2 Technology Edition, Version 1.4.2 comprend également la machine virtuelle Java (JVM), les classes Java Core Sun Microsystems et les fichiers de prise en charge. IBM Runtime Environment ne contient pas toutes les classes du composant SDK.
Le guide utilisateur contient des informations générales sur IBM Runtime Environment et des informations spécifiques sur les différences qui existent entre l'implémentation IBM de Runtime Environment et l'implémentation Sun. Consultez ce guide utilisateur ainsi que la documentation plus détaillée disponible sur le site Web Sun à l'adresse suivante : http://java.sun.com.
Runtime Environment est pris en charge par Microsoft Windows XP 64-Bit Edition et Windows Server 2003 64-bit Edition.
Le document IBM JVM Diagnostics Guide fournit des informations plus détaillées sur la machine JVM d'IBM.
Notez que le composant SDK inclut Runtime Environment pour Windows, qui permet uniquement d'exécuter des applications Java. Si vous avez installé SDK, IBM Runtime Environment est inclus.
Les termes "Runtime Environment" et "machine virtuelle Java" sont utilisés indifféremment dans ce guide utilisateur.
Pour obtenir le numéro de compilation et de version du logiciel, entrez la commande suivante à l'invite de la commande :
java -version
L'outil Java permet de lancer une application Java. Il requiert un nom de classe Java initiale comme paramètre. Si vous ne le spécifiez pas un message de syntaxe est imprimé.
La JVM recherche la classe initiale et les autres classes utilisées dans trois ensembles d'emplacements : le chemin d'accès à la classe d'amorçage, les extensions installées et le chemin d'accès à la classe d'utilisateur. Les arguments situés après le nom de la classe ou le nom de fichier JAR sont transmis à la fonction main.
La commande javaw est identique à la commande java, à cette différence qu'aucune fenêtre de console ne lui est associée. Utilisez la commande javaw lorsque vous ne souhaitez pas qu'une fenêtre d'invite s'affiche. Si le lancement échoue, le programme de lancement de javaw affiche une boîte de dialogue contenant un message d'erreur.
Les commandes java et javaw ont la syntaxe suivante :
java [ options ] class [ arguments ... ] java [ options ] -jar file.jar [ arguments ... ] javaw [ options ] class [ arguments ... ] javaw [ options ] -jar file.jar [ arguments ... ]
Les éléments placés entre crochets sont facultatifs.
Si l'option -jar est indiquée, le fichier JAR nommé contient les fichiers de ressources et de classes de l'application, avec la classe de lancement indiquée par l'en-tête de manifeste de la classe principale.
Le programme de lancement contient un jeu d'options standard qui sont prises en charge dans l'environnement d'exécution courant et qui le seront également dans les prochaines éditions. Il contient également un jeu d'options non standard.
Les options -X répertoriées ci-dessous ne sont pas des options standard et peuvent être modifiées sans préavis.
La commande java et les autres commandes du programme de lancement java (telles que javaw) permettent d'indiquer un nom de classe comme n'importe quel caractère Unicode contenu dans le jeu de caractères de l'environnement local courant.
Vous pouvez également indiquer n'importe quel caractère Unicode dans les arguments et le nom de classe à l'aide des séquences d'échappement Java. Pour ce faire, vous devez indiquer -Xargencoding. Pour indiquer un caractère Unicode, utilisez les séquences d'échappement au format \u####, où # est un caractère hexadécimal (de 0 à 9, de A à F).
Pour indiquer que le nom de classe et les arguments de commande sont en codage UTF8, vous pouvez également utiliser -Xargencoding:utf8. Pour un codage ISO8859_1, utilisez -Xargencoding:latin.
Les commandes java et javaw génère des messages de sortie traduits. Ces messages diffèrent suivant l'environnement local dans lequel Java est exécuté. Les descriptions détaillées des erreurs et les autres informations de débogage renvoyées par la commande java sont en anglais.
Vous pouvez indiquer un nom de classe comme nom de fichier complet comprenant un chemin d'accès complet et l'extension .class. Dans les versions précédentes, vous pouviez uniquement indiquer la classe relative à la variable CLASSPATH, et l'extension .class n'était pas autorisée. L'utilisation du nom de fichier complet vous permet de lancer une application Java à partir du bureau ou du programme de lancement du fichier. Si vous indiquez un fichier de type .class et son chemin d'accès, le chemin d'accès indiqué est ajouté à la variable CLASSPATH. Par exemple, la commande java c:\myapp\thisapp.class correspond à la commande java -classpath c:\myapp thisapp.
Pour configurer l'exécution automatique d'une classe Java ou d'un fichier JAR à partir du fichier, utilisez l'option Outils->Options des dossiers->Type de fichier ou l'Explorateur Windows. Vous pouvez également taper la commande suivant à l'invite :
assoc .class=javaclass ftype javaclass=C:\Program Files\IBM\Java142\jre\bin\java.exe %l %*
L'option d'exécution JVM -Xgcpolicy indique les règles de récupération de place.
-Xgcpolicy accepte les valeurs optthruput (valeur par défaut), optavgpause et gencon. Cette option contrôle le comportement du récupérateur en établissant des compromis entre le débit de l'application et l'ensemble du système et les délais d'interruption nécessités par la récupération de place.
Le format et les valeurs de cette option sont les suivants :
-Xgcpolicy:optthruput
-Xgcpolicy:optavgpause
-Xgcpolicy:gencon
Lorsque l'espace disponible dans le segment ne permet pas à une application de créer un objet, la fonction de récupération de place identifie les objets non référencés et les supprime, ce qui rétablit l'état du segment et permet de répondre rapidement aux demandes d'affectation de ressources actuelles et ultérieures. Des cycles de récupération de place de ce type génèrent parfois des interruptions inattendues dans l'exécution du code d'application. Dans la mesure où la taille et la complexité des applications augmentent, la taille des segments s'accroît et les interruptions causées par le processus de récupération de place deviennent plus longues et plus gênantes. La valeur de récupération de place par défaut, optthruput, offre un débit très élevé aux applications, au prix d'interruptions fréquentes, d'une durée comprise entre quelques millisecondes et plusieurs secondes, selon la taille du segment et la quantité de place à récupérer.
La machine JVM utilise deux techniques pour réduire les délais d'interruption :
L'option de ligne de commande -Xgcpolicy:optavgpause spécifie l'utilisation de la récupération de place simultanée pour réduire considérablement le temps passé dans les interruptions de la récupération de place. La récupération de place simultanée réduit les délais d'interruption en effectuant des opérations de récupération de place simultanément avec l'exécution normale du programme afin de minimiser les perturbations provoquées par la collecte du segment de mémoire. L'option -Xgcpolicy:optavgpause réduit également l'impact de l'augmentation de la taille du segment sur la durée des interruptions de la récupération de place. L'option -Xgcpolicy:optavgpause est particulièrement utile pour les configurations possédant de grandes tailles de segment. Ainsi, vous noterez une certaine baisse du débit vers vos applications.
Lors de la récupération de place simultanée, un laps de temps considérable est perdu à identifier les objets de longue durée qui ne peuvent alors pas être collectés. Si la récupération de place ne se concentre que sur les objets susceptibles d'être recyclables, vous pouvez réduire encore davantage les délais d'interruption de certaines applications. La récupération de place de génération parvient à cela en divisant le segment en deux "générations", les zones "nursery" (nouvelle génération) et "tenure" (génération titulaire). Les objets sont placés dans l'une ou l'autre de ces zones suivant leur ancienneté. La zone "nursery" est la plus petite des deux et contient les objets les plus récents ; la zone "tenure" est plus importante et contient les objets plus anciens. Les objets sont d'abord affectés à la zone "nursery" ; s'ils survivent assez longtemps, ils finissent par passer dans la zone "tenure".
La récupération de place de génération compte sur le fait que la plupart des objets ne durent pas longtemps. Cette technique réduit les délais d'interruption en s'efforçant de récupérer de l'espace disque dans la zone "nursery" car c'est dans cette dernière que l'espace est le plus recyclable. Alors que la collecte intégrale du segment est entrecoupée de délais d'interruption occasionnels, mais longs, la collecte des informations de la zone "nursery" est plus fréquente et, si la taille de cette zone est assez petite, les délais d'interruption sont comparativement plus courts. Il existe toutefois un inconvénient à cette technique ; à la longue, la zone "tenure" peut être saturée si un nombre trop important d'objets durent trop longtemps. Pour minimiser le délai d'interruption lorsque ce cas survient, utilisez une combinaison des deux techniques. L'option -Xgcpolicy:gencon spécifie l'utilisation combinée de la récupération de place simultanée et de génération pour permettre de minimiser le temps passé dans les délais d'interruption de la récupération de place.
Si le segment Java est proche de la saturation et que la place à récupérer est très limitée, les demandes de nouveaux objets ne sont pas satisfaites rapidement car aucun espace n'est disponible immédiatement. Si le segment est utilisé au maximum de sa capacité ou presque, une baisse de performances se produit au niveau des applications, indépendamment du réglage des options définies ci-dessus. Si des demandes d'espace supplémentaire sont effectuées, l'application reçoit une exception OutofMemory qui entraîne l'arrêt de la JVM si cette dernière n'est pas interceptée et traitée. A ce stade, la machine JVM génère un fichier de diagnostic "javadump". Dans ces cas de figure, il est recommandé d'augmenter la taille du segment à l'aide de l'option -Xmx ou de réduire le nombre d'objets d'application utilisés.
Le compilateur JIT (jitc.dll) génère dynamiquement un code machine pour des séquences de code intermédiaire utilisées fréquemment dans des applications ou des applets Java pendant leur exécution.
Runtime Environment pour Windows inclut le compilateur JIT (jitc.dll), qui est activé par défaut. Vous pouvez le désactiver pour isoler un incident lié à l'application, à une applet ou au compilateur.
Pour désactiver le compilateur JIT, utilisez l'option -Xint. Dans la fenêtre de l'invite de commande où vous exécutez l'application, entrez :
java -Xint class
Pour vérifier si le compilateur JIT est activé ou non, entrez la commande suivante à l'invite de la commande :
java -version
Si le compilateur est utilisé, le message suivant s'affiche :
(JIT enabled)
Si le compilateur n'est pas utilisé, le message suivant s'affiche :
(JIT disabled)
Le regroupement d'unités d'exécution pour les gestionnaires de connexions RMI n'est pas activé par défaut.
Pour activer le regroupement de connexions implémenté au niveau du transport TCP du RMI, définissez l'option
-Dsun.rmi.transport.tcp.connectionPool=true (ou toute valeur non NULL)
Cette version de Runtime Environment ne contient pas de paramètre permettant de restreindre le nombre d'unités d'exécution du pool de connexions.
Pour plus d'informations, reportez-vous au site de Sun Java, à l'adresse suivante : http://java.sun.com.
En cas de signal pertinent pour la JVM, un gestionnaire de signaux est appelé. Il détermine s'il a été appelé pour une unité d'exécution Java ou non Java.
Si le signal concerne une unité d'exécution Java, la JVM prend le contrôle du traitement du signal. Si un gestionnaire d'applications pour ce signal est installé et que vous n'avez pas spécifié l'option de ligne de commande -Xnosigchain, une fois le traitement de la JVM terminé, le gestionnaire d'applications pour ce signal est appelé.
Si le signal concerne une unité d'exécution non Java, et que l'application qui a installé la JVM a déjà installé un gestionnaire spécifique pour ce signal, le contrôle est passé à ce gestionnaire. Sinon, si le signal est demandé par la JVM ou l'application Java, il est ignoré ou l'action par défaut est effectuée.
Cette règle ne s'applique pas sous Windows. Lorsqu'un signal est généré de façon externe, lorsque vous appuyez sur Ctrl-Pause, par exemple, une nouvelle unité d'exécution est créée pour exécuter le gestionnaire de signaux. Dans ce cas, le gestionnaire de signaux de la JVM effectue son traitement et si un gestionnaire d'applications pour ce signal est installé et que vous n'avez pas spécifié l'option de ligne de commande -Xnosigchain, le gestionnaire d'applications pour ce signal est appelé.
En cas de signaux d'exception ou d'erreur, la JVM effectue l'une des opérations suivantes :
En cas de signaux d'interruption, la JVM démarre également une séquence d'arrêt contrôlé, mais cette fois, elle l'exécute comme un arrêt normal :
La procédure de fermeture est identique à celle démarrée par un appel de la méthode Java System.exit().
D'autres signaux utilisés par la JVM sont réservés à des fins de contrôle interne et ne provoque pas l'arrêt de la JVM. Le seul signal de contrôle intéressant est SIGBREAK qui entraîne un vidage Javadump.
Le tableau 1 ci-dessous indique les signaux utilisés par la JVM. Ces signaux sont groupés par type ou par utilisation.
Nom du signal | Type de signal | Description | Désactivé par -Xrs |
---|---|---|---|
SIGSEGV | Exception | Accès incorrect à la mémoire (écriture dans une mémoire inaccessible) | Non |
SIGILL | Exception | Instruction non conforme (tentative d'appel d'une instruction machine inconnue) | Non |
SIGFPE | Exception | Exception en virgule flottante (division par zéro) | Non |
SIGABRT | Erreur | Arrêt anormal. La JVM déclenche ce signal si elle détecte un incident JVM. | Non |
SIGINT | Interruption | Attention interactive (Ctrl-C). JVM s'arrête normalement. | Oui |
SIGTERM | Interruption | Demande d'arrêt. JVM s'arrête normalement. | Oui |
SIGBREAK | Contrôle | Signal d'arrêt envoyé par un terminal. Utilisé par la JVM pour des vidages Javadump. | Non |
Utilisez l'option -Xrs (réduction de l'utilisation des signaux) pour empêcher la JVM de traiter la plupart des signaux. Pour plus d'informations, reportez-vous à la page du programme de lancement d'applications Java (http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html.
Les signaux 2 (SIGINT), 4 (SIGILL), 6 (SIGABRT), 8 (SIGFPE) et 11 (SIGSEGV) sur les unités d'exécution de la JVM provoquent l'arrêt de cette dernière. Par conséquent, un gestionnaire de signaux d'application ne doit tenter aucune récupération à partir de ces signaux à moins qu'il n'ait plus besoin des services de la JVM.
L'environnement d'exécution permet le chaînage des signaux. Cette fonction permet à la JVM d'interagir plus efficacement avec du code natif qui installe ses propres gestionnaires de signaux.
Le chaînage de signaux permet à une application de créer un lien vers la bibliothèque partagée jsig.dll avant msvcrt.dll, et de la charger. La bibliothèque jsig.dll garantit l'interception des appels à signal(), afin que ses gestionnaires ne remplacent pas les gestionnaires de signaux de la JVM. Ces appels enregistrent les nouveaux gestionnaires de signaux ou les "chaînent" à la suite des gestionnaires qui sont installés par la JVM. Par la suite, lorsque l'un des ces signaux est déclenché ou qu'il s'avère qu'il s'adresse à la JVM, les gestionnaires préinstallés sont appelés.
Pour utiliser jsig.dll, liez-la à l'application qui crée ou incorpore une JVM.
Lors de l'utilisation d'un éditeur IME (Input Method Editor), nous vous recommandons de terminer la composition du caractère et de sélectionner le candidat avant d'utiliser l'espace de travail pour toute autre opération.
Les utilisateurs d'une version en chinois traditionnel ne doivent pas diriger directement la sortie des applications Java dans la commande more. Au lieu de cela, ils doivent la diriger vers un fichier temporaire, puis affichez le fichier séparément.
Si vous avez des commentaires, sur l'utilité de ce guide, ou toute autre remarque ou suggestion, n'hésitez pas à nous en faire part en nous les envoyant aux coordonnées indiquées plus bas. Vous pouvez nous envoyer vos questions "non techniques" ou tout commentaire relatif à notre documentation. Veuillez nous envoyer vos commentaires :
Mention en petits caractères. Tout commentaire ou document envoyé à IBM, tels que les questions, les commentaires, les suggestions ou ce qui est relatif au contenu de tels documents, sera considéré comme non confidentiel. IBM n'est assujettie à aucune sorte d'obligation relative à de telles informations et a le droit de reproduire, utiliser, divulguer, transformer ou créer des produits dérivés sans restriction. En outre, IBM a le droit d'utiliser les idées, concepts, savoir-faire ou techniques contenus dans de tels documents dans un but quelconque, y compris le développement, la fabrication et la commercialisation des produits.
Le présent document peut contenir des informations ou des références concernant certains produits, logiciels ou services IBM non annoncés dans ce pays. Pour plus de détails, référez-vous aux documents d'annonce disponibles dans votre pays, ou adressez-vous à votre partenaire commercial IBM. Toute référence à un produit, logiciel ou service IBM n'implique pas que seul ce produit, logiciel ou service puisse être utilisé. Tout autre élément fonctionnellement équivalent peut être utilisé, s'il n'enfreint aucun droit d'IBM. Il est de la responsabilité de l'utilisateur d'évaluer et de vérifier lui-même les installations et applications réalisées avec des produits, logiciels ou services non expressément référencés par IBM.
IBM peut détenir des brevets ou des demandes de brevet couvrant les produits mentionnés dans le présent document. La remise de ce document ne vous donne aucun droit de licence sur ces brevets ou demandes de brevet. Vous pouvez envoyer, par écrit, vos demandes de renseignements relatives aux licences au :
IBM EMEA Director of Licensing IBM Europe Middle-East Africa Tour Descartes La Défense 5 2, avenue Gambetta 92066 - Paris-La Défense CEDEX France
Pour le Canada, veuillez adresser votre courrier à :
IBM Director of Commercial Relations IBM Canada Ltd. 3600 Steeles Avenue East Markham, Ontario L3R 9Z7 Canada
Les informations sur les licences concernant les produits utilisant un jeu de caractères double octet peuvent être obtenues par écrit à l'adresse suivante :
IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokyo 106-0032, Japon
Le paragraphe suivant ne s'applique ni au Royaume-Uni, ni dans aucun autre pays dans lequel il serait contraire aux lois locales.
LE PRESENT DOCUMENT EST LIVRE EN L'ETAT. IBM DECLINE TOUTE RESPONSABILITE, EXPLICITE OU IMPLICITE, RELATIVE AUX INFORMATIONS QUI Y SONT CONTENUES, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES DE VALEUR MARCHANDE OU D'ADAPTATION A VOS BESOINS. Certaines juridictions n'autorisent pas l'exclusion des garanties implicites, auquel cas l'exclusion ci-dessus ne vous sera pas applicable.
Le présent document peut contenir des inexactitudes ou des coquilles. Il est mis à jour périodiquement. Chaque nouvelle édition inclut les mises à jour. IBM peut modifier sans préavis les programmes et les logiciels qu'il décrit.
Les références à des sites Web non IBM sont fournies à titre d'information uniquement et n'impliquent en aucun cas une adhésion aux données qu'ils contiennent. Les éléments figurant sur ces sites Web ne font pas partie des éléments du présent produit IBM et l'utilisation de ces sites relève de votre seule responsabilité.
IBM pourra utiliser ou diffuser, de toute manière qu'elle jugera appropriée et sans aucune obligation de sa part, tout ou partie des informations qui lui seront fournies.
Les licenciés souhaitant obtenir des informations permettant : (i) l'échange des données entre des logiciels créés de façon indépendante et d'autres logiciels (dont celui-ci), et (ii) l'utilisation mutuelle des données ainsi échangées, doivent adresser leur demande à :
Ces informations peuvent être soumises à des conditions particulières, prévoyant notamment le paiement d'une redevance.
Le logiciel sous licence décrit dans ce document et tous les éléments sous licence disponibles s'y rapportant sont fournis par IBM conformément aux termes du Contrat sur les produits et services IBM, des Conditions internationales d'utilisation des logiciels IBM ou de tout autre accord équivalent.
Les données de performance indiquées dans ce document ont été déterminées dans un environnement contrôlé. Par conséquent, les résultats peuvent varier de manière significative selon l'environnement d'exploitation utilisé. Certaines mesures évaluées sur des systèmes en cours de développement ne sont pas garanties sur tous les systèmes disponibles. En outre, elles peuvent résulter d'extrapolations. Les résultats peuvent donc varier. Il incombe aux utilisateurs de ce document de vérifier si ces données sont applicables à leur environnement d'exploitation.
Les informations concernant des produits non IBM ont été obtenues auprès des fournisseurs de ces produits, par l'intermédiaire d'annonces publiques ou via d'autres sources disponibles. IBM n'a pas testé ces produits et ne peut confirmer l'exactitude de leurs performances ni leur compatibilité. Elle ne peut recevoir aucune réclamation concernant des produits non IBM. Toute question concernant les performances de produits non IBM doit être adressée aux fournisseurs de ces produits.
IBM est une marque d'International Business Machines Corporation aux Etats-Unis et/ou dans certains autres pays.
Java, ainsi que tous les marques et logos incluant Java, sont des marques de Sun Microsystems, Inc. aux Etats-Unis et/ou dans certains autres pays.
Microsoft, Windows, Windows NT et le logo Windows sont des marques de Microsoft Corporation aux Etats-Unis et/ou dans certains autres pays.
D'autres sociétés sont propriétaires des autres marques, noms de produits ou logos qui pourraient apparaître dans ce document.
Le présent produit comprend des logiciels développés par la société Apache Software Foundation (http://www.apache.org/).