<?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="es-ES" xml:lang="es-es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="dc.language" scheme="rfc1766" content="es-es" />
<meta name="dc.date" scheme="iso8601" content="2005-10-25" />
<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 and Runtime Environment for 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 and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0</h1>
<h1>Gu&iacute;a del usuario</h1>
<br />
<a name="wq1"></a>
<h1 id="wq1"><a href="#ToC_1">Informaci&oacute;n de copyright</a></h1>
<p><strong>Nota</strong>: antes de utilizar esta informaci&oacute;n y el producto al que da soporte,
aseg&uacute;rese de leer la informaci&oacute;n general que aparece en <a href="#notices">Avisos</a>.</p>
<p>Esta edici&oacute;n de la gu&iacute;a de usuario corresponde a
IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0, y a todos los releases, modificaciones y renovaciones de servicio
siguientes, hasta que se indique lo contrario en nuevas ediciones. </p>
<p>(c) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo
Alto, CA 94303 EE.UU. Reservados todos los derechos. </p>
<p>(c) Copyright International Business Machines Corporation, 1999, 2005.
Reservados todos los derechos. </p>
<p>Derechos restringidos para los usuarios del Gobierno de los Estados Unidos - Su uso,
duplicaci&oacute;n o divulgaci&oacute;n est&aacute;n restringidos por el GSA ADP Schedule Contract con IBM Corp.</p>
<a name="wq2"></a>
<h1 id="wq2"><a href="#ToC_2">Prefacio</a></h1>
<p>Esta Gu&iacute;a del usuario proporciona informaci&oacute;n general sobre IBM(R) 32-bit SDK and Runtime Environment for Windows(R), Java(TM) 2 Technology Edition, Version 5.0 e
informaci&oacute;n espec&iacute;fica sobre las diferencias en la implementaci&oacute;n de IBM comparada
con la implementaci&oacute;n de Sun. Lea esta Gu&iacute;a del usuario adem&aacute;s de la documentaci&oacute;n m&aacute;s amplia que se proporciona en el
sitio Web de Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<p>El SDK y el Runtime Environment reciben
soporte en los siguientes productos:</p>
<ul>
<li>Windows 2000</li>
<li>Windows XP</li>
<li>Windows Server 2003</li></ul>
<p>Tenga en cuenta que IPv6 s&oacute;lo recibe soporte sobre Windows
XP y Windows Server 2003.</p>
<p>La gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> proporciona
informaci&oacute;n m&aacute;s detallada sobre la IBM Virtual Machine para Java.</p>
<p>Los cambios t&eacute;cnicos realizados en esta Gu&iacute;a del usuario de la Versi&oacute;n 5.0, que no
sean los  menores u obvios como la actualizaci&oacute;n de la versi&oacute;n "1.4.2" a "5.0",
est&aacute;n indicados en rojo cuando se trata de HTML o una copia impresa en color y
mediante barras verticales a la izquierda de los cambios.</p>
<p>Los t&eacute;rminos "Runtime Environment" y "Java Virtual Machine" se utilizan de manera
indistinta a lo largo de esta Gu&iacute;a del usuario.</p>
<a name="wq3"></a>
<div id="wq3">
<h1>Contenido</h1>
<div class="head1"><a id="ToC_1" name="ToC_1" href="#wq1" class="toclink">Informaci&oacute;n de copyright</a></div>
<div class="head1"><a id="ToC_2" name="ToC_2" href="#wq2" class="toclink">Prefacio</a></div>
<div class="head1"><a id="ToC_3" name="ToC_3" href="#wq4" class="toclink">Visi&oacute;n general</a></div>
<div class="head2"><a id="ToC_4" name="ToC_4" href="#wq5" class="toclink">Compatibilidad de versiones</a></div>
<div class="head2"><a id="ToC_5" name="ToC_5" href="#upgrading" class="toclink">Actualizaci&oacute;n del SDK</a></div>
<div class="head2"><a id="ToC_6" name="ToC_6" href="#wq6" class="toclink">Migraci&oacute;n desde otras IBM JVM</a></div>
<div class="head1"><a id="ToC_7" name="ToC_7" href="#wq7" class="toclink">Contenido del SDK y el Runtime Environment</a></div>
<div class="head2"><a id="ToC_8" name="ToC_8" href="#wq8" class="toclink">Herramientas del Runtime Environment</a></div>
<div class="head2"><a id="ToC_9" name="ToC_9" href="#sdktools" class="toclink">Herramientas del SDK</a></div>
<div class="head1"><a id="ToC_10" name="ToC_10" href="#wq10" class="toclink">Instalaci&oacute;n y configuraci&oacute;n del SDK y el Runtime Environment</a></div>
<div class="head2"><a id="ToC_11" name="ToC_11" href="#wq11" class="toclink">Antes de instalar</a></div>
<div class="head2"><a id="ToC_12" name="ToC_12" href="#attended_installation" class="toclink">Instalaci&oacute;n atendida (interactiva)</a></div>
<div class="head3"><a id="ToC_13" name="ToC_13" href="#wq13" class="toclink">Instalaci&oacute;n de los paquetes</a></div>
<div class="head3"><a id="ToC_14" name="ToC_14" href="#wq15" class="toclink">Instalaci&oacute;n del Runtime Environment como la Java Virtual Machine del sistema</a></div>
<div class="head2"><a id="ToC_15" name="ToC_15" href="#wq17" class="toclink">Instalaci&oacute;n desatendida</a></div>
<div class="head2"><a id="ToC_16" name="ToC_16" href="#wq20" class="toclink">C&oacute;mo habilitar IBM Accessibility Bridge</a></div>
<div class="head2"><a id="ToC_17" name="ToC_17" href="#wq21" class="toclink">C&oacute;mo inhabilitar el soporte de Java Accessibility</a></div>
<div class="head2"><a id="ToC_18" name="ToC_18" href="#wq22" class="toclink">Informaci&oacute;n para usuarios de idiomas europeos</a></div>
<div class="head2"><a id="ToC_19" name="ToC_19" href="#pathcons" class="toclink">Establecimiento de la PATH</a></div>
<div class="head2"><a id="ToC_20" name="ToC_20" href="#wq24" class="toclink">Establecimiento de la CLASSPATH</a></div>
<div class="head2"><a id="ToC_21" name="ToC_21" href="#wq25" class="toclink">Desinstalaci&oacute;n</a></div>
<div class="head1"><a id="ToC_22" name="ToC_22" href="#invint" class="toclink">Utilizaci&oacute;n del Runtime Environment</a></div>
<div class="head2"><a id="ToC_23" name="ToC_23" href="#wq28" class="toclink">Opciones</a></div>
<div class="head3"><a id="ToC_24" name="ToC_24" href="#wq29" class="toclink">Especificaci&oacute;n de opciones Java y propiedades del sistema</a></div>
<div class="head3"><a id="ToC_25" name="ToC_25" href="#wq31" class="toclink">Opciones est&aacute;ndar</a></div>
<div class="head3"><a id="ToC_26" name="ToC_26" href="#xoptions" class="toclink">Opciones no est&aacute;ndar</a></div>
<div class="head2"><a id="ToC_27" name="ToC_27" href="#wq32" class="toclink">Obtenci&oacute;n del n&uacute;mero de versi&oacute;n y de nivel de compilaci&oacute;n de IBM</a></div>
<div class="head2"><a id="ToC_28" name="ToC_28" href="#wq33" class="toclink">Globalizaci&oacute;n del mandato java</a></div>
<div class="head2"><a id="ToC_29" name="ToC_29" href="#wq34" class="toclink">Ejecuci&oacute;n autom&aacute;tica de un archivo Java</a></div>
<div class="head2"><a id="ToC_30" name="ToC_30" href="#jaws" class="toclink">C&oacute;mo ejecutar aplicaciones Java con tecnolog&iacute;as de asistencia nativas</a></div>
<div class="head2"><a id="ToC_31" name="ToC_31" href="#jit" class="toclink">Compilador Just-In-Time (JIT)</a></div>
<div class="head3"><a id="ToC_32" name="ToC_32" href="#disjit" class="toclink">Inhabilitaci&oacute;n del JIT</a></div>
<div class="head3"><a id="ToC_33" name="ToC_33" href="#enajit" class="toclink">Habilitaci&oacute;n del JIT</a></div>
<div class="head3"><a id="ToC_34" name="ToC_34" href="#detjit" class="toclink">C&oacute;mo determinar si el JIT est&aacute; habilitado</a></div>
<div class="head2"><a id="ToC_35" name="ToC_35" href="#garbage" class="toclink">C&oacute;mo especificar una pol&iacute;tica de recopilaci&oacute;n de desechos</a></div>
<div class="head3"><a id="ToC_36" name="ToC_36" href="#wq37" class="toclink">Opciones de recopilaci&oacute;n de desechos</a></div>
<div class="head3"><a id="ToC_37" name="ToC_37" href="#wq38" class="toclink">Tiempo de pausa</a></div>
<div class="head3"><a id="ToC_38" name="ToC_38" href="#pausetimereduction" class="toclink">Reducci&oacute;n del tiempo de pausa </a></div>
<div class="head3"><a id="ToC_39" name="ToC_39" href="#wq39" class="toclink">Entornos con almacenamientos din&aacute;micos muy llenos</a></div>
<div class="head2"><a id="ToC_40" name="ToC_40" href="#wq40" class="toclink">C&oacute;mo procesa las se&ntilde;ales la JVM</a></div>
<div class="head3"><a id="ToC_41" name="ToC_41" href="#sighand" class="toclink">Se&ntilde;ales utilizadas por la JVM </a></div>
<div class="head3"><a id="ToC_42" name="ToC_42" href="#wq46" class="toclink">Enlace de un controlador de c&oacute;digo nativo con la biblioteca de encadenamiento de se&ntilde;ales</a></div>
<div class="head2"><a id="ToC_43" name="ToC_43" href="#wq47" class="toclink">Transformaci&oacute;n de documentos XML</a></div>
<div class="head3"><a id="ToC_44" name="ToC_44" href="#wq49" class="toclink">Utilizaci&oacute;n de una versi&oacute;n anterior de Xerces o Xalan</a></div>
<div class="head1"><a id="ToC_45" name="ToC_45" href="#wq50" class="toclink">Utilizaci&oacute;n del SDK para desarrollar aplicaciones Java</a></div>
<div class="head2"><a id="ToC_46" name="ToC_46" href="#debugger" class="toclink">Depuraci&oacute;n de aplicaciones Java</a></div>
<div class="head3"><a id="ToC_47" name="ToC_47" href="#jdb" class="toclink">Depurador Java (JDB)</a></div>
<div class="head2"><a id="ToC_48" name="ToC_48" href="#wq54" class="toclink">C&oacute;mo determinar si la aplicaci&oacute;n se est&aacute; ejecutando en una JVM de 32 bits o 64 bits</a></div>
<div class="head2"><a id="ToC_49" name="ToC_49" href="#wq55" class="toclink">C&oacute;mo escribir aplicaciones JNI</a></div>
<div class="head2"><a id="ToC_50" name="ToC_50" href="#wq57" class="toclink">Trabajo con applets</a></div>
<div class="head3"><a id="ToC_51" name="ToC_51" href="#wq58" class="toclink">Ejecuci&oacute;n de applets con el Visor de applets</a></div>
<div class="head3"><a id="ToC_52" name="ToC_52" href="#wq59" class="toclink">Depuraci&oacute;n de applets con el Visor de applets</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_53" name="ToC_53" href="#alloc_large_page" class="toclink">Configuraci&oacute;n de la asignaci&oacute;n de memoria con p&aacute;ginas grandes</a></div>
<div class="head2"><a id="ToC_54" name="ToC_54" href="#wq60" class="toclink">Soporte CORBA</a></div>
<div class="head3"><a id="ToC_55" name="ToC_55" href="#wq61" class="toclink">Soporte de GIOP 1.2</a></div>
<div class="head3"><a id="ToC_56" name="ToC_56" href="#wq62" class="toclink">Soporte de interceptores port&aacute;tiles</a></div>
<div class="head3"><a id="ToC_57" name="ToC_57" href="#wq63" class="toclink">Soporte de Servicio de nombres interoperativo</a></div>
<div class="head3"><a id="ToC_58" name="ToC_58" href="#wq64" class="toclink">Propiedades del sistema para rastrear el ORB</a></div>
<div class="head3"><a id="ToC_59" name="ToC_59" href="#wq65" class="toclink">Propiedades del sistema para ajustar el ORB</a></div>
<div class="head3"><a id="ToC_60" name="ToC_60" href="#wq66" class="toclink">Permisos de seguridad de Java 2 para el ORB</a></div>
<div class="head3"><a id="ToC_61" name="ToC_61" href="#wq70" class="toclink">Clases de implementaci&oacute;n de ORB</a></div>
<div class="head2"><a id="ToC_62" name="ToC_62" href="#rmi-iiop" class="toclink">RMI a trav&eacute;s de IIOP</a></div>
<div class="head2"><a id="ToC_63" name="ToC_63" href="#rmi" class="toclink">Implementaci&oacute;n de la agrupaci&oacute;n de manejadores de conexiones para RMI</a></div>
<div class="head2"><a id="ToC_64" name="ToC_64" href="#wq71" class="toclink">Soporte BiDireccional mejorado</a></div>
<div class="head2"><a id="ToC_65" name="ToC_65" href="#bigd" class="toclink">BigDecimal mejorado</a></div>
<div class="head2"><a id="ToC_66" name="ToC_66" href="#wq72" class="toclink">Soporte del s&iacute;mbolo de Euro</a></div>
<div class="head1"><a id="ToC_67" name="ToC_67" href="#jcommchapter" class="toclink">Utilizaci&oacute;n de la API Java Communications (JavaComm)</a></div>
<div class="head2"><a id="ToC_68" name="ToC_68" href="#instcomm" class="toclink">Instalaci&oacute;n de la API Java Communications</a></div>
<div class="head2"><a id="ToC_69" name="ToC_69" href="#wq74" class="toclink">Configuraci&oacute;n de la API Java Communications</a></div>
<div class="head2"><a id="ToC_70" name="ToC_70" href="#wq75" class="toclink">Limitaciones de impresi&oacute;n con la API Java Communications</a></div>
<div class="head2"><a id="ToC_71" name="ToC_71" href="#wq76" class="toclink">Desinstalaci&oacute;n de la API Java Communications</a></div>
<div class="head2"><a id="ToC_72" name="ToC_72" href="#wq77" class="toclink">Documentaci&oacute;n de la API Java Communications</a></div>
<div class="head1"><a id="ToC_73" name="ToC_73" href="#wq78" class="toclink">Despliegue de aplicaciones Java</a></div>
<div class="head2"><a id="ToC_74" name="ToC_74" href="#wq79" class="toclink">Utilizaci&oacute;n del Java Plug-in</a></div>
<div class="head3"><a id="ToC_75" name="ToC_75" href="#suppbrowse" class="toclink">Navegadores soportados</a></div>
<div class="head3"><a id="ToC_76" name="ToC_76" href="#wq84" class="toclink">Soporte de DOM (Document Object Model) com&uacute;n</a></div>
<div class="head3"><a id="ToC_77" name="ToC_77" href="#wq85" class="toclink">Utilizaci&oacute;n de par&aacute;metros DBCS</a></div>
<div class="head2"><a id="ToC_78" name="ToC_78" href="#wq86" class="toclink">Utilizaci&oacute;n de Web Start</a></div>
<div class="head3"><a id="ToC_79" name="ToC_79" href="#installing_webstart" class="toclink">Ejecuci&oacute;n de Web Start</a></div>
<div class="head2"><a id="ToC_80" name="ToC_80" href="#wq88" class="toclink">Env&iacute;o de aplicaciones Java</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head1"><a id="ToC_81" name="ToC_81" href="#classdatasharing" class="toclink">Compartimiento de datos de clases entre JVM</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_82" name="ToC_82" href="#wq89" class="toclink">Visi&oacute;n general del compartimiento de clases</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_83" name="ToC_83" href="#wq90" class="toclink">Contenido de la antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_84" name="ToC_84" href="#wq91" class="toclink">Actualizaci&oacute;n din&aacute;mica de la antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_85" name="ToC_85" href="#wq92" class="toclink">Habilitaci&oacute;n del compartimiento de clases</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_86" name="ToC_86" href="#wq93" class="toclink">Seguridad de antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_87" name="ToC_87" href="#wq94" class="toclink">Ciclo de vida de la antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_88" name="ToC_88" href="#wq95" class="toclink">Programas de utilidad de antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_89" name="ToC_89" href="#sharedclassesxoptions" class="toclink">Utilizaci&oacute;n de las opciones de la l&iacute;nea de mandatos para el compartimiento de clases</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_90" name="ToC_90" href="#wq96" class="toclink">C&oacute;mo crear, llenar, supervisar y suprimir una antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_91" name="ToC_91" href="#wq97" class="toclink">Rendimiento y consumo de memoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_92" name="ToC_92" href="#wq98" class="toclink">Limitaciones y consideraciones al utilizar el compartimiento de clases</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_93" name="ToC_93" href="#cachesizelimits" class="toclink">L&iacute;mites del tama&ntilde;o de antememoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_94" name="ToC_94" href="#runtimebytecode" class="toclink">Modificaci&oacute;n del c&oacute;digo de bytes en el tiempo de ejecuci&oacute;n</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_95" name="ToC_95" href="#wq99" class="toclink">Limitaciones del sistema operativo</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_96" name="ToC_96" href="#usingsharedclasspermissions" class="toclink">Utilizaci&oacute;n de SharedClassPermissions</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_97" name="ToC_97" href="#adaptingclassloaders" class="toclink">Adaptaci&oacute;n de cargadores de clases personalizados para compartir clases</a></div>
<div class="head1"><a id="ToC_98" name="ToC_98" href="#wq100" class="toclink">Servicio y soporte de proveedores de software independientes</a></div>
<div class="head1"><a id="ToC_99" name="ToC_99" href="#wq101" class="toclink">Accesibilidad</a></div>
<div class="head2"><a id="ToC_100" name="ToC_100" href="#ikeycmd" class="toclink">Accesibilidad de iKeyman</a></div>
<div class="head2"><a id="ToC_101" name="ToC_101" href="#wq103" class="toclink">Recorrido del teclado de componentes JComboBox en Swing</a></div>
<div class="head2"><a id="ToC_102" name="ToC_102" href="#wq104" class="toclink">Accesibilidad de Web Start</a></div>
<div class="head1"><a id="ToC_103" name="ToC_103" href="#wq105" class="toclink">Nota general sobre seguridad</a></div>
<div class="head1"><a id="ToC_104" name="ToC_104" href="#wq106" class="toclink">Limitaciones conocidas</a></div>
<div class="head1"><a id="ToC_105" name="ToC_105" href="#rcf" class="toclink">Comentarios sobre esta Gu&iacute;a del usuario</a></div>
<div class="head1"><a id="ToC_106" name="ToC_106" href="#notices" class="toclink">Avisos</a></div>
<div class="head2"><a id="ToC_107" name="ToC_107" href="#wq107" class="toclink">Marcas registradas</a></div>
</div>
<a name="wq4"></a>
<h1 id="wq4"><a href="#ToC_3">Visi&oacute;n general</a></h1>
<p>IBM SDK es un entorno de desarrollo para escribir y ejecutar applets y
aplicaciones que se ajustan a la interfaz de programas de aplicaci&oacute;n (API) central
Java 1.4 de IBM. </p>
<p>El SDK incluye el Runtime Environment para Windows, que permite ejecutar s&oacute;lo
aplicaciones Java. Si ha instalado el SDK, est&aacute; incluido el Runtime Environment.</p>
<p>El Runtime Environment contiene la Java Virtual Machine y archivos de soporte,
incluidos los archivos de clases. El Runtime Environment contiene s&oacute;lo un subconjunto de las clases
que se encuentran en el SDK y permite dar soporte a un programa Java durante el
tiempo de ejecuci&oacute;n, pero no permite compilar programas Java. El Runtime Environment
para Windows no incluye ninguna de las herramientas de desarrollo como, por ejemplo,
<strong>appletviewer.exe</strong> o el compilador Java
(<strong>javac.exe</strong>), ni clases que sean s&oacute;lo para
sistemas de desarrollo.</p>
<p>Asimismo, se proporciona el paquete de la interfaz de programas de aplicaci&oacute;n Java
Communications para su uso con Runtime Environment para Windows. Puede
encontrar informaci&oacute;n sobre ello en <a href="#jcommchapter">Utilizaci&oacute;n de la API Java Communications (JavaComm)</a>.</p>
<a name="wq5"></a>
<h2 id="wq5"><a href="#ToC_4">Compatibilidad de versiones</a></h2>
<p>En general, cualquier applet o aplicaci&oacute;n que se
ejecute con una versi&oacute;n anterior del SDK deber&iacute;a ejecutarse correctamente con
IBM 32-bit SDK for Windows, v5.0. No se garantiza que las clases compiladas con este release
funcionen en releases anteriores.</p>
<p><font color="red"><span id="changed">|</span>IBM 32-bit SDK for Windows, V5.0,
<span id="changed">|</span>est&aacute; incorporado con Microsoft Visual Studio .NET 2003.</font></p>
<p>Consulte el sitio Web de Sun en <a href="http://java.sun.com">http://java.sun.com</a>
para ver la documentaci&oacute;n de Sun sobre compatibilidad.</p>
<a name="upgrading"></a>
<h2 id="upgrading"><a href="#ToC_5">Actualizaci&oacute;n del SDK</a></h2>
<p>Si desea actualizar el SDK de un release anterior, haga una copia de
seguridad de todos los archivos de configuraci&oacute;n y los archivos de
pol&iacute;ticas de seguridad antes de continuar con la actualizaci&oacute;n. </p>
<p>Despu&eacute;s de la actualizaci&oacute;n, puede que necesite restaurar o
reconfigurar estos archivos porque es posible que se hayan sobrescrito
durante el proceso de actualizaci&oacute;n. Compruebe la sintaxis de los
archivos nuevos antes de restaurar los archivos originales porque es
posible que el formato o las opciones de los archivos hayan cambiado. </p>
<a name="wq6"></a>
<h2 id="wq6"><a href="#ToC_6">Migraci&oacute;n desde otras IBM JVM</a></h2>
<p>En la Versi&oacute;n
5.0, el IBM Runtime Environment para Windows contiene nuevas
versiones de IBM Java Virtual Machine y el compilador Just-In-Time (JIT). Si realiza una migraci&oacute;n
desde un IBM Runtime Environment anterior, tenga en cuenta lo siguiente: </p>
<ul>
<li>La biblioteca de enlaces din&aacute;micos
jvm.dll de JVM est&aacute;
instalada en el directorio
jre\bin\j9vm. Esto es
distinto, por ejemplo, del Runtime Environment para Windows Versi&oacute;n
1.4.2, donde est&aacute; instalada en
jre\bin\classic. Las
aplicaciones nativas que utilizan la interfaz de invocaci&oacute;n JNI deber&aacute;n a&ntilde;adir la
nueva v&iacute;a de acceso de directorios a sus variables de entorno para poder ubicar la
biblioteca de enlaces din&aacute;micos de JVM. </li>
<br />
<li><font color="red"><span id="changed">|</span>JVM Monitoring Interface (JVMMI) ya no est&aacute; disponible.
<span id="changed">|</span>Debe volver a escribir las aplicaciones que utilizan esa API. Se recomienda utilizar
<span id="changed">|</span>JVM Tool Interface (JVMTI) en su lugar. JVMTI no es funcionalmente equivalente a
<span id="changed">|</span>JVMMI. Para obtener informaci&oacute;n sobre la JVMTI, consulte
<span id="changed">|</span><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> y la gu&iacute;a
<span id="changed">|</span><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 nueva implementaci&oacute;n de JNI cumple la especificaci&oacute;n JNI, pero es
<span id="changed">|</span>distinta de la implementaci&oacute;n anterior. Devuelve copias de objetos, en lugar de
<span id="changed">|</span>fijarlos. Esta diferencia puede generar errores en el c&oacute;digo de aplicaci&oacute;n JNI. Para
<span id="changed">|</span>obtener informaci&oacute;n sobre la depuraci&oacute;n del c&oacute;digo JNI, consulte
<span id="changed">|</span><strong>-Xcheck:jni </strong> en <a href="#xoptions">Opciones no est&aacute;ndar</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>El formato y el contenido de los registros verbosos del recopilador
<span id="changed">|</span>de desechos que se obtienen con <strong>-verbose:gc</strong> han cambiado. Los
<span id="changed">|</span>datos tienen ahora el formato XML. El contenido de los datos refleja los cambios en
<span id="changed">|</span>la implementaci&oacute;n del recopilador de desechos en la JVM, y la mayor&iacute;a de las
<span id="changed">|</span>estad&iacute;sticas de salida han cambiado. Debe modificar los programas que procesen la
<span id="changed">|</span>salida verbosa de la GC para que funcionen con el nuevo formato y los nuevos datos.
<span id="changed">|</span>Consulte la gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> para ver un
<span id="changed">|</span>ejemplo de los nuevos datos verbosos de la GC.</font></li>
<br />
<li>Las versiones anteriores del IBM JRE se suministraban con un archivo denominado
rt.jar en el directorio jre/lib. De Java v1.4 en adelante, este archivo se ha
sustituido por varios archivos JAR que residen en el directorio jre/lib. </li>
<br />
<li><font color="red"><span id="changed">|</span>Para obtener m&aacute;s informaci&oacute;n sobre la compatibilidad del
<span id="changed">|</span>sector y las API desechadas, consulte
<span id="changed">|</span><a href="http://java.sun.com/j2se/5.0/compatibility.html">Sun's Java 5 Compatibility Documentation</a> y <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">Contenido del SDK y el Runtime Environment</a></h1>
<p>El SDK contiene varias herramientas de desarrollo y un Java Runtime Environment
(JRE). En este apartado se describe el contenido de las herramientas del SDK y el
Runtime Environment.</p>
<p>Las aplicaciones que se graban completamente en Java <strong>no</strong>
deben tener dependencias de la estructura de directorios del IBM SDK (o los archivos
en esos directorios). Una dependencia de la estructura de directorios del SDK (o los
archivos en esos directorios) puede generar problemas de portabilidad de
aplicaciones. Las aplicaciones JNI (Java Native Interface) tendr&aacute;n algunas dependencias menores. </p>
<a name="wq8"></a>
<h2 id="wq8"><a href="#ToC_8">Herramientas del Runtime Environment</a></h2>
<ul>
<li>Clases centrales -- Son los archivos de las clases compiladas de la
plataforma y deben permanecer comprimidos para que el compilador y el int&eacute;rprete
puedan acceder a ellos. No modifique estas clases; en su lugar, cree subclases y
realice alteraciones temporales cuando sea necesario. 
<br /></li>
<li>Herramientas JRE -- Las siguientes herramientas forman parte del
Runtime Environment y se encuentran en el directorio
jre\bin a menos
que se especifique lo contrario. 
<ul>
<li> java.exe (Int&eacute;rprete Java)
<ul class="simple">
<li>Ejecuta clases Java. El Int&eacute;rprete Java ejecuta programas escritos en el
lenguaje de programaci&oacute;n Java. </li></ul>
<br /></li>
<li>javaw.exe (Int&eacute;rprete Java)
<ul class="simple">
<li>Ejecuta clases Java de la misma forma que el mandato <strong>java</strong>,
pero no utiliza una ventana de consola. </li></ul>
<br /></li>
<li>keytool.exe (Herramienta de gesti&oacute;n de claves y certificados)
<ul class="simple">
<li>Gestiona un almac&eacute;n de claves (base de datos) de claves privadas y sus cadenas
de certificados X.509 asociadas que autentican las claves p&uacute;blicas correspondientes. </li></ul>
<br /></li>
<li>policytool.exe (Herramienta de gesti&oacute;n y creaci&oacute;n de
archivos de pol&iacute;ticas) 
<ul class="simple">
<li>Crea y modifica los archivos externos de configuraci&oacute;n de pol&iacute;ticas que definen
la pol&iacute;tica de seguridad Java de la instalaci&oacute;n. </li></ul>
<br /></li>
<li>rmid.exe (Daemon del sistema de activaci&oacute;n RMI)
<ul class="simple">
<li>Inicia el daemon del sistema de activaci&oacute;n para que los objetos se puedan
registrar y activar en una Java Virtual Machine (JVM).</li></ul>
<br /></li>
<li>tnameserv.exe (Servicio de nombres CORBA (Common Object
Request Broker Architecture))
<ul class="simple">
<li>Inicia el servicio de nombres transitorios CORBA.</li></ul>
<br /></li>
<li>rmiregistry.exe (Registro de objetos remotos Java)
<ul class="simple">
<li>Crea e inicia un registro de objetos remotos en el puerto especificado del
sistema principal actual. </li></ul>
<br /></li>
<li>ikeyman.exe (Programa de
utilidad iKeyman GUI)
<ul class="simple">
<li>Permite gestionar claves, certificados y peticiones de certificado. 
Para obtener m&aacute;s informaci&oacute;n, consulte el manual adjunto
<em>Security Guide</em> y
<a href="http://www.ibm.com/developerworks/java/jdk/security">http://www.ibm.com/developerworks/java/jdk/security</a>. 
El SDK tambi&eacute;n proporciona una versi&oacute;n de l&iacute;nea de mandatos de este programa de
utilidad. Consulte el apartado <a href="#ikeycmd">Accesibilidad de iKeyman</a> para obtener m&aacute;s informaci&oacute;n.</li></ul>
<br /></li>
<li>jextract.exe (Extractor de vuelco)
<ul class="simple">
<li>Convierte un vuelco producido por el sistema en un formato com&uacute;n que se
pueda utilizar en <a href="#jformat">jdmpview</a>. Para obtener m&aacute;s informaci&oacute;n,
consulte la gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>javaws.exe (Java Web Start)
<ul class="simple">
<li>Habilita el despliegue y el mantenimiento autom&aacute;tico de aplicaciones Java.</li></ul>
<br /></li></ul></li></ul>
<a name="sdktools"></a>
<h2 id="sdktools"><a href="#ToC_9">Herramientas del SDK</a></h2>
<ul>
<li>Las siguientes herramientas forman parte del
SDK y se encuentran en el directorio C:\Archivos de programa\IBM\Java50\bin :
<ul>
<li>javac.exe (Compilador Java)
<ul class="simple">
<li>Compila programas escritos en el lenguaje de programaci&oacute;n Java en c&oacute;digos de
bytes (c&oacute;digo Java compilado). </li></ul>
<br /></li>
<li>appletviewer.exe (Visor de applets de Java)
<ul class="simple">
<li>Prueba y ejecuta applets fuera de un navegador Web.</li></ul>
<br /></li>
<li>jdb.exe (Depurador Java)
<ul class="simple">
<li>Permite depurar los programas Java.</li></ul>
<br /></li>
<li>javap.exe (Desensamblador de archivos de clases)
<ul class="simple">
<li>Desensambla los archivos compilados y permite imprimir una representaci&oacute;n de los
c&oacute;digos de bytes.</li></ul>
<br /></li>
<li>javadoc.exe (Generaci&oacute;n de documentaci&oacute;n de Java)
<ul class="simple">
<li>Genera p&aacute;ginas HTML de documentaci&oacute;n de la API desde archivos de origen Java. </li></ul>
<br /></li>
<li>javah.exe (Generador de archivos de resguardo y cabeceras C)
<ul class="simple">
<li>Permite asociar m&eacute;todos nativos con c&oacute;digo escrito en el lenguaje de
programaci&oacute;n Java. </li></ul>
<br /></li>
<li>jar.exe (Java Archive Tool)
<ul class="simple">
<li>Combina varios archivos en un &uacute;nico archivo JAR (Java Archive).</li></ul>
<br /></li>
<li>jarsigner.exe (Herramienta de verificaci&oacute;n y firmas de JAR)
<ul class="simple">
<li>Genera firmas para archivos JAR y verifica las firmas de los archivos JAR
firmados. </li></ul>
<br /></li>
<li>jconsole.exe (Herramienta de supervisi&oacute;n y
gesti&oacute;n JConsole  - experimental)
<ul class="simple">
<li>Herramienta gr&aacute;fica experimental compatible con JMX (no soportado)
para supervisar las JVM remotas y locales. </li></ul>
<br /></li>
<li>native2ascii.exe (Conversor de nativa a ASCII)
<ul class="simple">
<li>Convierte un archivo de codificaci&oacute;n nativa en un archivo ASCII que contiene
caracteres codificados en Latin-1, Unicode o ambos. </li></ul>
<br /></li>
<li>rmic.exe (Conversor de ap&eacute;ndices de invocaci&oacute;n a m&eacute;todo
remoto (RMI) de Java) 
<ul class="simple">
<li>Genera ap&eacute;ndices, esqueletos y nudos de objetos remotos. Incluye el soporte
RMI-IIOP (RMI a trav&eacute;s de Internet Inter-ORB Protocol). </li></ul>
<br /></li>
<li>idlj.exe (Compilador de IDL en Java)
<ul class="simple">
<li>Genera enlaces Java de un determinado archivo IDL. </li></ul>
<br /></li>
<li>serialver.exe (Mandato de versi&oacute;n de serie)
<ul class="simple">
<li>Devuelve el serialVersionUID de una o varias clases en un formato adecuado para
copiarlo en una clase en evoluci&oacute;n. </li></ul>
<br /></li>
<li>extcheck.exe (Programa de utilidad Extcheck)
<ul class="simple">
<li>Detecta conflictos de versi&oacute;n entre un archivo jar de destino y archivos jar de
ampliaci&oacute;n instalados actualmente. </li></ul>
<br /></li>
<li id="jformat">
<a name="jformat"></a>jdmpview.exe (Formateador de vuelcos
entre plataformas)
<ul class="simple">
<li>Herramienta que le permite analizar los vuelcos. Para
obtener m&aacute;s informaci&oacute;n, consulte la gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
Guide</a>.</li></ul>
<br /></li>
<li>htmlconverter.exe (Java Plug-in HTML Converter)
<ul class="simple">
<li>Convierte una p&aacute;gina HTML que contiene applets en un formato que puede utilizar
el Java Plug-in.</li></ul>
<br /></li></ul>
<br /></li>
<li>ARCHIVOS DE INCLUSI&Oacute;N
<ul class="simple">
<li>Cabeceras C de programas JNI.
<br /></li></ul>
<br /></li>
<li>DEMOSTRACIONES
<ul class="simple">
<li>El directorio demo incluye varios subdirectorios que contienen c&oacute;digo fuente de
ejemplo, demostraciones, aplicaciones y applets que puede utilizar. </li></ul>
<br /></li>
<li>COPYRIGHT
<ul class="simple">
<li>Aviso de copyright del software de SDK para Windows.</li></ul>
<br /></li>
<li>LICENSE
<ul class="simple">
<li>El archivo LICENSE,
C:\Archivos de programa\IBM\Java50\license, contiene el acuerdo de
licencia del software de SDK para Windows . 
Para ver o imprimir el acuerdo de licencia, abra el archivo en un navegador Web.</li></ul>
<br /></li></ul>
<div>
<p><strong>Nota:</strong> Las gu&iacute;as del usuario, el Javadoc y los
archivos de licencia y copyright que se
adjuntan, y el directorio demo son la &uacute;nica documentaci&oacute;n que se incluye
en este SDK para Windows. Puede ver la documentaci&oacute;n del software de Sun
directamente en el sitio Web de Sun, o puede descargar el paquete de
documentaci&oacute;n de software de Sun del sitio Web de Sun en:
<a href="http://java.sun.com">http://java.sun.com</a>.</p></div>
<a name="wq10"></a>
<h1 id="wq10"><a href="#ToC_10">Instalaci&oacute;n y configuraci&oacute;n del SDK y el Runtime Environment</a></h1>
<a name="wq11"></a>
<h2 id="wq11"><a href="#ToC_11">Antes de instalar</a></h2>
<p>Para instalar el paquete del SDK o del Runtime Environment, descargue el paquete
de instalaci&oacute;n correspondiente. Aseg&uacute;rese de descargar todos los paquetes en el
mismo directorio. Los paquetes y sus nombres de archivo se incluyen en el apartado
<a href="#attended_installation">Instalaci&oacute;n atendida (interactiva)</a>; no cambie los nombres de archivo de los
paquetes. </p>
<p>Antes de empezar la instalaci&oacute;n, aseg&uacute;rese de que hay espacio suficiente en el
directorio C:\WINDOWS\TEMP utilizado durante la instalaci&oacute;n. La cantidad de espacio
temporal que se necesita en el directorio TEMP durante la instalaci&oacute;n es:</p>
<ul>
<li>Paquete instalable del SDK: 130 MB</li>
<li>Paquete instalable del Runtime Environment: 85 MB</li></ul><p class="indatacontent">Si no dispone de suficiente espacio temporal, el programa de instalaci&oacute;n genera
un error y termina la instalaci&oacute;n. Si dispone de suficiente espacio temporal y sigue
apareciendo este mensaje, verifique que los paquetes que intenta instalar se hayan
descargado completamente. Para ello, compare el tama&ntilde;o de los archivos de los
paquetes con los tama&ntilde;os de archivo mostrados en las p&aacute;ginas Web desde las que ha
descargado los paquetes.</p>
<a name="attended_installation"></a>
<h2 id="attended_installation"><a href="#ToC_12">Instalaci&oacute;n atendida (interactiva)</a></h2>
<div>
<p>Los paquetes que puede instalar son:</p>
<ul>
<li>Paquete instalable del SDK: ibm-java2-sdk-50-win-i386.exe</li>
<li>Paquete instalable del Runtime Environment: ibm-java2-jre-50-win-i386.exe</li>
<li>Paquete instalable del Runtime Environment (s&oacute;lo para hardware
de IBM): ibm-java2-jre-50-ibmpc-win-i386.exe</li></ul>
<p>Se proporcionan otros paquetes con formato de archivo zip:</p>
<ul>
<li>Paquete del Runtime Environment: ibm-java2-jre-50-win-i386.zip</li>
<li>Paquete del SDK: ibm-java2-sdk-50-win-i386.zip</li>
<li>Paquete de la interfaz de programas de aplicaci&oacute;n (API) Java
Communications para Windows: ibm-java2-javacomm-50-win-i386.zip.
Consulte el apartado
<a href="#instcomm">Instalaci&oacute;n de la API Java Communications</a> para ver las instrucciones de instalaci&oacute;n. </li>
<li>Paquete de documentaci&oacute;n: ibm-java2-docs-50-win-i386.zip</li>
<li>Paquete de demostraciones: ibm-java2-demos-50-win-i386.zip</li></ul></div>
<a name="wq13"></a>
<h3 id="wq13"><a href="#ToC_13">Instalaci&oacute;n de los paquetes</a></h3>
<p></p>
<ol type="1">
<li>Inicie ibm-java2-sdk-50-win-i386.exe (para el SDK) o
ibm-java2-jre-50-win-i386.exe (s&oacute;lo para el Runtime Environment).</li>
<li>Siga las instrucciones del asistente de instalaci&oacute;n.</li></ol><p class="indatacontent">El Runtime Environment se instala por omisi&oacute;n en el directorio C:\Archivos de programa\IBM\Java50\jre.</p>
<p>Si ha descargado el paquete instalable del SDK, puede elegir si desea instalar: </p>
<ul>
<li>Las herramientas de desarrollo del SDK (por ejemplo, el compilador Java)</li>
<li>El Runtime Environment</li>
<li>El c&oacute;digo fuente de las bibliotecas de clases de Sun, que utilizan algunas
herramientas para depurar aplicaciones. </li></ul><p class="indatacontent">Puede instalar los componentes individualmente o combinados. </p>
<p>En el asistente de instalaci&oacute;n, aparecen las siguientes opciones: </p>
<ul>
<li><strong>T&iacute;pica</strong>: esta opci&oacute;n instala los tres componentes.</li>
<li><strong>Compacta</strong>: esta opci&oacute;n instala s&oacute;lo el Runtime Environment. </li>
<li><strong>Personalizada</strong>: esta opci&oacute;n permite elegir qu&eacute; componentes
desea instalar. </li></ul>
<a name="wq15"></a>
<h3 id="wq15"><a href="#ToC_14">Instalaci&oacute;n del Runtime Environment como la Java Virtual Machine del sistema</a></h3>
<p>Cuando instala el Runtime Environment (bien como parte del paquete instalable del
SDK o desde el paquete instalable del Runtime Environment), se le pregunta si desea
instalar el Runtime Environment como la Java Virtual Machine (JVM) del sistema. Si
se instala como System JVM, el programa de instalaci&oacute;n copia los archivos java.exe y
javaw.exe en el directorio del sistema de Windows. Si ya existe una
versi&oacute;n de java.exe o javaw.exe en el directorio del sistema de Windows, se le
pregunta si desea sobrescribir la versi&oacute;n existente con la versi&oacute;n actual. La
instalaci&oacute;n de estos archivos en el directorio del sistema de Windows convierte al
Runtime Environment en la JVM por omisi&oacute;n del sistema. Adem&aacute;s, se establece la clave
de registro "Current Version" para que coincida con esta instalaci&oacute;n.</p>
<a name="wq16"></a>
<div class="notetitle" id="wq16">Nota:</div>
<div class="notebody">La instalaci&oacute;n del Runtime Environment como System JVM s&oacute;lo copia
java.exe y javaw.exe en el directorio del sistema de Windows. No copia ning&uacute;n
otro ejecutable (como javac.exe o appletviewer.exe).</div>
<a name="wq17"></a>
<h2 id="wq17"><a href="#ToC_15">Instalaci&oacute;n desatendida</a></h2>
<p>Para crear una instalaci&oacute;n desatendida, debe realizar primero una instalaci&oacute;n
atendida y crear un archivo de respuestas (setup.iss) que registre las opciones
seleccionadas durante la instalaci&oacute;n. El archivo de respuestas que cree debe ser
adecuado para los sistemas en los que tenga previsto utilizarlo. Si es necesario,
cree varios archivos de respuestas para utilizarlos en la instalaci&oacute;n de paquetes en
sistemas que tengan distintas configuraciones.</p>
<p>Para crear un archivo de respuestas mientras ejecuta la instalaci&oacute;n, escriba lo
siguiente en el indicador de mandatos:</p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /r</pre><p class="indatacontent">o bien</p>
<pre class="xmp">ibm-java2-jre-50-win-i386 /r</pre>
<p>Dependiendo del producto Windows, el archivo de respuestas (setup.iss) se crea en
el directorio C:\Windows o C:\Winnt, donde C: es la unidad de arranque.</p>
<p>El siguiente mensaje puede aparecer durante una instalaci&oacute;n interactiva:</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 aparece este mensaje, seleccione <strong>No</strong> y salga de la
instalaci&oacute;n. Vaya al directorio del sistema de Windows y suprima los dos archivos
siguientes:</p>
<ul>
<li>java.exe</li>
<li>javaw.exe</li></ul>
<p>Despu&eacute;s de suprimir los archivos, reinicie la instalaci&oacute;n interactiva utilizando
el mandato que se muestra al principio de este apartado.</p>
<p>En el sistema en que desee ejecutar la instalaci&oacute;n desatendida, copie el archivo
de respuestas setup.iss en el directorio C:\Windows. Despu&eacute;s de copiar el archivo,
escriba lo siguiente en el indicador de mandatos:</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">Notas:</div>
<ol type="1">
<li>No hay espacios detr&aacute;s de <tt>/f1</tt> ni
<tt> /f2</tt>.</li>
<li>El distintivo <tt>/f1</tt> especifica el nombre y la
ubicaci&oacute;n del archivo de respuestas. El distintivo <tt>/f2</tt>
especifica el nombre y la ubicaci&oacute;n del archivo de registro. </li>
</ol>
<p>Si la instalaci&oacute;n es satisfactoria, el archivo de registro contiene la serie
<tt>ResultCode=0</tt>.</p>
<a name="wq20"></a>
<h2 id="wq20"><a href="#ToC_16">C&oacute;mo habilitar IBM Accessibility Bridge</a></h2>
<p>IBM Accessibility Bridge se instala pero est&aacute; inhabilitado por omisi&oacute;n. Para
habilitar IBM Accessibility Bridge, suprima el s&iacute;mbolo de almohadilla que aparece al
principio de la siguiente l&iacute;nea del archivo Accessibility.properties en el
directorio jre/lib:</p>
<p></p>
<pre class="xmp">#assistive_technologies=JawBridge</pre>
<p>Este sitio Web proporciona m&aacute;s informaci&oacute;n sobre los programas de utilidad
Accessibility:</p>
<p><a href="http://java.sun.com/products/jfc/accessibility.html">http://java.sun.com/products/jfc/accessibility.html</a></p>
<a name="wq21"></a>
<h2 id="wq21"><a href="#ToC_17">C&oacute;mo inhabilitar el soporte de Java Accessibility</a></h2>
<p>Puede inhabilitar el soporte de Java Accessibility para aumentar el rendimiento
de carga de la JVM de las aplicaciones Java que no proporcionan soporte de
tecnolog&iacute;a de ayuda Java, especialmente a trav&eacute;s de enlaces de red.</p>
<p>Para inhabilitar el soporte de Java Accessibility, establezca la variable de
entorno <strong>JAVA_ASSISTIVE</strong> en OFF. Si esta variable de entorno se
establece en OFF, no habr&aacute; disponible ninguna tecnolog&iacute;a de ayuda, como JawBridge,
aunque la tecnolog&iacute;a est&eacute; habilitada en el archivo Accessibility.properties. </p>
<a name="wq22"></a>
<h2 id="wq22"><a href="#ToC_18">Informaci&oacute;n para usuarios de idiomas europeos</a></h2>
<p>En Windows, un proceso tiene dos p&aacute;ginas de c&oacute;digos: la p&aacute;gina de c&oacute;digos ANSI (o
Windows) y la p&aacute;gina de c&oacute;digos OEM (o DOS).</p>
<p>La ventana de mandatos normalmente utiliza la p&aacute;gina de c&oacute;digos OEM. La salida de
consola de Java utiliza la p&aacute;gina de c&oacute;digos de la ventana de mandatos desde donde
se inicia Java. No obstante, el mandato <strong>javaw</strong> utiliza siempre
la p&aacute;gina de c&oacute;digos ANSI. Especifique la p&aacute;gina de c&oacute;digos que se va a utilizar
para la salida de consola con la opci&oacute;n <strong>-Dconsole.encoding</strong> en
el mandato <strong>java</strong>. Por ejemplo,
<strong>-Dconsole.encoding=Cp1252</strong> hace que toda la salida de consola
est&eacute; en la p&aacute;gina de c&oacute;digos Latin1 ANSI de Windows (1252).</p>
<a name="pathcons"></a>
<h2 id="pathcons"><a href="#ToC_19">Establecimiento de la PATH</a></h2>
<p>Tenga en cuenta que, si altera la variable de entorno PATH tal como se describe a
continuaci&oacute;n, alterar&aacute; temporalmente los ejecutables Java existentes en la v&iacute;a de
acceso. </p>
<p>Despu&eacute;s de instalar el SDK, puede ejecutar una herramienta escribiendo su
nombre en el indicador de shell con un nombre de archivo como argumento. </p>
<p>Puede especificar la v&iacute;a de acceso a una herramienta escribiendo siempre la v&iacute;a
de acceso antes del nombre de la herramienta. Por ejemplo, si el SDK para Windows
est&aacute; instalado en
C:\Archivos de programa\IBM\Java50\bin, puede compilar un archivo denominado
miarchivo.java escribiendo lo siguiente en un indicador de
mandatos:</p>
<pre class="xmp">  "C:\Archivos de programa\IBM\Java50\bin\javac" miarchivo.java</pre>
<p>Para no tener que escribir cada vez la v&iacute;a de acceso completa: </p>
<ol type="1">
<li>A&ntilde;ada los siguientes directorios a la variable de entorno
<strong>PATH</strong>:
<ul class="simple">
<li>C:\Archivos de programa\IBM\Java50\bin (s&oacute;lo SDK)</li>
<li>C:\Archivos de programa\IBM\Java50\jre\bin (SDK y Runtime Environment)</li></ul>
<p>Si ha instalado el SDK o el Runtime Environment en otro directorio, sustituya
C:\Archivos de programa\IBM\Java50\ por el directorio en el que ha instalado el SDK o el Runtime Environment</p>
<br /></li>
<li>Compile el archivo con la herramienta <strong>javac</strong>. Por
ejemplo, para compilar el archivo miarchivo.java, en un indicador de
mandatos, escriba: 
<pre class="xmp">  javac miarchivo.java</pre> 
<p>La variable de entorno <strong>PATH</strong> habilita Windows para encontrar
archivos ejecutables como, por ejemplo, javac, java y javadoc, desde cualquier
directorio activo. Para visualizar el valor actual de <strong>PATH</strong>,
escriba lo siguiente en el indicador de
mandatos: </p>
<pre class="xmp">  echo %PATH%</pre> </li></ol>
<a name="wq24"></a>
<h2 id="wq24"><a href="#ToC_20">Establecimiento de la CLASSPATH</a></h2>
<p>La <strong>CLASSPATH</strong> indica a las herramientas del SDK como, por
ejemplo, <strong>java</strong>, <strong>javac</strong> y <strong>javadoc</strong>, d&oacute;nde se encuentran las bibliotecas de clases Java. </p>
<p>S&oacute;lo es necesario establecer la <strong>CLASSPATH</strong> de forma
expl&iacute;cita en los siguientes casos: </p>
<ul>
<li>Si necesita un archivo de clase o de biblioteca diferente, por ejemplo, uno que
haya desarrollado previamente, y no est&aacute; en el directorio activo. 
<br /></li>
<li>Si cambia la ubicaci&oacute;n de los directorios <strong>bin</strong> y
<strong>lib</strong> de forma que ya no tienen el mismo directorio local com&uacute;n. 
<br /></li>
<li>Si tiene previsto desarrollar o ejecutar aplicaciones que utilicen entornos de
tiempo de ejecuci&oacute;n diferentes en el mismo sistema. 
<br /></li></ul>
<p>Para visualizar el valor actual de <strong>CLASSPATH</strong>, escriba lo
siguiente en el indicador de
mandatos: </p>
<pre class="xmp">  echo %CLASSPATH%</pre>
<p>Si tiene previsto desarrollar y ejecutar aplicaciones que utilicen entornos de
tiempo de ejecuci&oacute;n diferentes, incluido otras versiones que haya instalado por
separado, debe establecer la <strong>CLASSPATH</strong> (y la
<strong>PATH </strong>) de forma expl&iacute;cita para cada aplicaci&oacute;n. Si tiene
previsto ejecutar varias aplicaciones simult&aacute;neamente y utilizar entornos de tiempo
de ejecuci&oacute;n diferentes, cada aplicaci&oacute;n debe ejecutar su propia
ventana de mandatos.</p>
<p>Si desea ejecutar s&oacute;lo una versi&oacute;n de Java cada vez, puede utilizar un script
por lotes para conmutar entre
los distintos entornos de tiempo de ejecuci&oacute;n. </p>
<br />
<a name="wq25"></a>
<h2 id="wq25"><a href="#ToC_21">Desinstalaci&oacute;n</a></h2>
<p>Para desinstalar el SDK, tanto si se ha utilizado la instalaci&oacute;n atendida o
desatendida: </p>
<ol type="1">
<li>Efect&uacute;e una doble pulsaci&oacute;n en <strong>Mi PC</strong> en el escritorio de
Windows.</li>
<li>Efect&uacute;e una doble pulsaci&oacute;n en <strong>Panel de control</strong>.</li>
<li>Efect&uacute;e una doble pulsaci&oacute;n en <strong>Agregar o quitar programas</strong>.</li>
<li>Pulse <strong>IBM 32-bit SDK for Java 2 V5.0</strong> en la lista y,
a continuaci&oacute;n, pulse <strong>Cambiar o quitar</strong>.</li>
<li>Pulse <strong>Aceptar</strong>.</li></ol>
<p>Este procedimiento elimina todos los paquetes instalados con el instalador. 
<em>No</em> elimina el paquete de la API Java Communications
(consulte el cap&iacute;tulo <a href="http://www.javasoft.com/products/javacomm/">API Java Communications</a>) ni
ning&uacute;n otro archivo que se haya extra&iacute;do de los paquetes zip.</p>
<a name="wq27"></a>
<div class="notetitle" id="wq27">Nota:</div>
<div class="notebody">Pueden aparecer mensajes de aviso notificando que no se han eliminado
todos los archivos y/o las entradas de registro. Estos avisos se emiten porque
Windows cree que algunos archivos contin&uacute;an utiliz&aacute;ndose; estos archivos y/o entradas
de registro se eliminar&aacute;n en el pr&oacute;ximo rearranque.</div>
<p>Cuando se mantienen varias instalaciones entre IBM 32-bit SDK for Windows, v5.0 y versiones V1.3.1
o anteriores, si desinstala una versi&oacute;n anterior mientras sigue instalada en el
sistema una versi&oacute;n V5.0, el desinstalador de V1.3.1 elimina las siguientes
claves de registro, y todas las subclaves, necesarias para la versi&oacute;n V5.0, lo
que da&ntilde;a la instalaci&oacute;n de V5.0:</p>
<ul>
<li>HKEY_LOCAL_MACHINE/Software/IBM/Java2 Runtime Environment</li>
<li>HKEY_LOCAL_MACHINE/Software/IBM/Java Development Kit </li></ul><p class="indatacontent">Por lo tanto, vuelva a instalar V5.0 despu&eacute;s de desinstalar la
versi&oacute;n V1.3.1. Esta limitaci&oacute;n del desinstalador se ha solucionado en V1.4.0 y los
releases siguientes.</p>
<a name="invint"></a>
<h1 id="invint"><a href="#ToC_22">Utilizaci&oacute;n del Runtime Environment</a></h1>
<p>La herramienta <strong>java</strong> inicia una aplicaci&oacute;n Java iniciando un
Java Runtime Environment y cargando una clase especificada. </p>
<p>La JVM busca la clase inicial (y otras clases utilizadas) en tres pasos de
localizaci&oacute;n: la classpath de la rutina de carga, las extensiones instaladas y la
classpath del usuario. Los argumentos que se especifiquen despu&eacute;s del
nombre de clase o nombre de archivo JAR se pasan a la funci&oacute;n principal.</p>
<p>El mandato <strong>javaw</strong> es id&eacute;ntico a <strong>java</strong>, excepto que
<strong>javaw</strong> no tiene una ventana de consola asociada. Utilice <strong>javaw</strong> si no desea
que aparezca una ventana indicadora de mandatos.
El iniciador <strong>javaw</strong> muestra un recuadro de di&aacute;logo con informaci&oacute;n de error si se produce una
anomal&iacute;a durante el inicio. </p>
<p>Los mandatos <strong>java</strong> y <strong>javaw</strong> tienen la
sintaxis siguiente:</p>
<pre class="xmp">java [ opciones ] <em>clase</em> [ argumentos ... ]
java [ opciones ] -jar <em>archivo.jar</em> [ argumentos ... ]
javaw [ opciones ] <em>clase</em> [ argumentos ... ]
javaw [ opciones ] -jar <em>archivo.jar</em> [ argumentos ... ]
</pre><p class="indatacontent">Los elementos que aparecen entre corchetes son opcionales.</p>
<p></p>
<dl class="parml">
<dt class="bold">opciones</dt>
<dd>Opciones de la l&iacute;nea de mandatos.
</dd>
<dt class="bold">clase</dt>
<dd>Nombre de la clase que se va a invocar.
</dd>
<dt class="bold">archivo.jar</dt>
<dd>Nombre del archivo jar que se va a invocar. S&oacute;lo se utiliza con <strong>-jar</strong>.
</dd>
<dt class="bold">argumentos</dt>
<dd>Argumentos pasados a la funci&oacute;n <strong>main</strong> (principal).
</dd>
</dl>
<p>Si se especifica la opci&oacute;n <strong>-jar</strong>, el archivo JAR especificado
contiene los archivos de clases y recursos de la aplicaci&oacute;n, con la clase de arranque
indicada mediante la cabecera de manifiesto Main-Class (clase principal).  </p>
<a name="wq28"></a>
<h2 id="wq28"><a href="#ToC_23">Opciones</a></h2>
<p>El iniciador tiene un conjunto de opciones est&aacute;ndar a las que el Runtime Environment
da soporte actualmente y en releases futuros. Adem&aacute;s, existe un conjunto de opciones no
est&aacute;ndar. Las opciones por omisi&oacute;n se han seleccionado para el mejor uso
general. Deben tenerse en cuenta las may&uacute;sculas y min&uacute;sculas cuando se
decida realizar cambios. </p>
<a name="wq29"></a>
<h3 id="wq29"><a href="#ToC_24">Especificaci&oacute;n de opciones Java y propiedades del sistema</a></h3>
<p>Puede especificar las propiedades del sistema y las opciones de Java de
tres modos distintos. En orden de prioridad, &eacute;stos modos son: </p>
<ol type="1">
<li>Mediante la especificaci&oacute;n de la opci&oacute;n o propiedad en la l&iacute;nea de
mandatos, por ejemplo<tt class="xph"> java -Dmysysprop1=tcpip -Dmysysprop2=wait
-Xdisablejavadump MiClaseJava</tt>. </li>
<li>Mediante la creaci&oacute;n de un archivo que contenga las opciones y la
especificaci&oacute;n de &eacute;ste en la l&iacute;nea de mandatos utilizando
<strong>-Xoptionsfile=<em>&lt;nombrearchivo></em></strong>.</li>
<li>Mediante la creaci&oacute;n de un variable de entorno llamada
<strong>IBM_JAVA_OPTIONS</strong> que contenga las opciones, por
ejemplo, <tt class="xph">set IBM_JAVA_OPTIONS=&quot;-Dmysysprop1=tcpip -Dmysysprop2=wait
-Xdisablejavadump&quot;</tt>.</li></ol>
<p>Las opciones situadas m&aacute;s a la derecha de la l&iacute;nea de mandatos tienen
prioridad sobre las opciones situadas m&aacute;s a izquierda; por ejemplo, si
especifica las opciones <tt class="xph">-Xint -Xjit miClase</tt>, tendr&aacute; prioridad
<strong>-Xjit</strong>. </p>
<a name="wq31"></a>
<h3 id="wq31"><a href="#ToC_25">Opciones est&aacute;ndar</a></h3>
<ul class="simple">
<li>
<span class="term"><strong>-D</strong>&lt;<em>nombre_propiedad</em>>=&lt;<em>valor</em>></span>
<ul class="simple">
<li>Establece una propiedad de sistema.</li></ul></li>
<li><strong>-assert</strong>
<ul class="simple">
<li>Imprime ayuda sobre opciones relacionadas con aserciones.</li></ul></li>
<li><strong>-cp</strong> o <strong>-classpath</strong> &lt;<em>directorios y archivos zip o jar separados por ;></em>
<ul class="simple">
<li>Establece la v&iacute;a de acceso de b&uacute;squeda de clases y recursos de aplicaciones. Si
no se utilizan <strong>-classpath</strong> y <strong>-cp</strong>, y no
est&aacute; establecida <strong>CLASSPATH</strong>, la classpath del usuario es, por
omisi&oacute;n, el directorio activo (.).</li></ul></li>
<li><strong>-help</strong> o <strong>-?</strong>
<ul class="simple">
<li>Imprime un mensaje de uso.</li></ul></li>
<li><strong>-showversion</strong>
<ul class="simple">
<li>Imprime la versi&oacute;n del producto y prosigue. </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>Habilita la salida verbosa.</li></ul></li>
<li><strong>-version</strong>
<ul class="simple">
<li>Imprime la versi&oacute;n del producto.</li></ul></li>
<li><strong>-version:</strong><em>&lt;valor></em>
<ul class="simple">
<li>Requiere que se ejecute la versi&oacute;n especificada. </li></ul></li>
<li><strong>-jre-restrict-search</strong>
<ul class="simple">
<li>Incluye los JRE privados de usuario en la b&uacute;squeda de versi&oacute;n</li></ul></li>
<li><strong>-no-jre-restrict-search</strong>
<ul class="simple">
<li>Excluye JRE privados de usuario en la b&uacute;squeda de versi&oacute;n</li></ul></li>
<li><strong>-agentlib:</strong>&lt;<em>nombre_bib</em>>[=&lt;<em>opciones</em>>]
<ul class="simple">
<li>cargue la biblioteca de agentes nativos &lt;nombre_bib>, por ejemplo
<strong> -agentlib:hprof</strong>. Para obtener m&aacute;s informaci&oacute;n, especifique
<strong>-agentlib:jdwp=help </strong> y
<strong>-agentlib:hprof=help</strong> en la l&iacute;nea de mandatos.</li></ul></li>
<li><strong>-agentpath:</strong><em>nombre_bib</em>[=&lt;<em>opciones</em>>]
<ul class="simple">
<li>carga la biblioteca de agentes nativos por nombre de v&iacute;a de acceso completo</li></ul></li>
<li><strong>-javaagent:</strong>&lt;<em>v&iacute;a_acceso_jar</em>>[=&lt;<em>opciones</em>>]
<ul class="simple">
<li>Carga el agente de lenguaje de programaci&oacute;n Java; consulte la
documentaci&oacute;n de la API java.lang.instrument para obtener m&aacute;s informaci&oacute;n.</li></ul></li>
<li><strong>-X</strong>
<ul class="simple">
<li>Imprime ayuda sobre las opciones no est&aacute;ndar.</li></ul></li></ul>
<a name="xoptions"></a>
<h3 id="xoptions"><a href="#ToC_26">Opciones no est&aacute;ndar</a></h3>
<p>Las opciones <strong>-X</strong> que se listan a continuaci&oacute;n no son
est&aacute;ndar y est&aacute;n sujetas a cambios sin previo aviso. </p>
<p>En las opciones del par&aacute;metro <em>&lt;tama&ntilde;o></em>, debe
a&ntilde;adir al n&uacute;mero el sufijo "k" o "K" para indicar kilobytes, "m" o "M" para
indicar megabytes, y "g" o "G" para indicar gigabytes.</p>
<ul class="simple">
<li><strong>-Xargencoding</strong>
<ul class="simple">
<li>Permite a&ntilde;adir secuencias de escape Unicode en la lista de argumentos. Esta
opci&oacute;n est&aacute; desactivada por omisi&oacute;n. </li></ul></li>
<li><strong>-Xbootclasspath:</strong>&lt;<em>directorios y archivos
zip o jar separados por ;</em>>
<ul class="simple">
<li>Establece la v&iacute;a de acceso de b&uacute;squeda de clases y recursos de rutina de carga. El valor por omisi&oacute;n es buscar clases y recursos de rutina de carga en
los directorios VM internos y en los archivos .jar. </li></ul></li>
<li><strong>-Xbootclasspath/a:</strong>&lt;<em>directorios y archivos
zip o jar separados por ;</em>>
<ul class="simple">
<li>A&ntilde;ade los directorios, archivos zip o jar especificados al final de la classpath
de la rutina de carga. El valor por omisi&oacute;n es buscar clases y recursos de rutina de carga en
los directorios VM internos y en los archivos .jar. </li></ul></li>
<li><strong>-Xbootclasspath/p:</strong>&lt;<em>directorios
y archivos zip o jar separados por ;</em>>
<ul class="simple">
<li>Pone los directorios, archivos zip o jar especificados delante de la
classpath de la rutina de carga. No despliegue aplicaciones que
utilicen la opci&oacute;n <strong> -Xbootclasspath:</strong> o
<strong>-Xbootclasspath/p:</strong> para alterar una clase en la API est&aacute;ndar,
porque el despliegue podr&iacute;a violar la licencia de c&oacute;digo binario de Java 2 Runtime
Environment. El valor por omisi&oacute;n es buscar clases y recursos de rutina de carga en
los directorios VM internos y en los archivos .jar. </li></ul></li>
<li id="xcheckjni">
<a name="xcheckjni"></a><strong>-Xcheck:jni</strong>
<ul class="simple">
<li>Realiza comprobaciones adicionales de las funciones JNI. Tambi&eacute;n
puede utilizar <a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a>. Por
omisi&oacute;n, no se realiza ninguna comprobaci&oacute;n. </li></ul></li>
<li><strong>-Xcheck:nabounds</strong>
<ul class="simple">
<li>Realiza comprobaciones adicionales de las operaciones JNI de matriz. Tambi&eacute;n
puede utilizar <a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a>. Por
omisi&oacute;n, no se realiza ninguna comprobaci&oacute;n. </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>Esta opci&oacute;n habilita la recopilaci&oacute;n de objetos de clase en cada recopilaci&oacute;n de
<span id="changed">|</span>desechos.
<span id="changed">|</span>Por omisi&oacute;n, esta opci&oacute;n est&aacute; habilitada. </li></ul></font></li>
<li id="compactexplicitgc">
<a name="compactexplicitgc"></a><strong>-Xcompactexplicitgc</strong>
<ul class="simple">
<li>Comprimir en cada llamada a <tt class="xph">System.gc()</tt>. Consulte tambi&eacute;n
<a href="#nocompactexplicitgc"><strong>-Xnocompactexplicitgc</strong></a>. Por omisi&oacute;n, la
compactaci&oacute;n s&oacute;lo se realiza cuando se desencadena de forma interna. </li></ul></li>
<li id="compactgc">
<a name="compactgc"></a><strong>-Xcompactgc</strong>
<ul class="simple">
<li>Comprimir cada ciclo del recopilador de desechos. Consulte tambi&eacute;n
<a href="#nocompactgc"><strong>-Xnocompactgc</strong></a>. Por omisi&oacute;n, la
compactaci&oacute;n s&oacute;lo se realiza cuando se desencadena de forma interna. </li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentbackground</strong> <em>&lt;n&uacute;mero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Esta opci&oacute;n especifica el n&uacute;mero de hebras de fondo de prioridad baja conectadas
<span id="changed">|</span>para ayudar a las hebras mutantes en la marca concurrente. El valor por omisi&oacute;n es 1.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentlevel</strong> <em>&lt;n&uacute;mero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Esta opci&oacute;n especifica la cadencia del "impuesto" de asignaci&oacute;n. Indica la
<span id="changed">|</span>proporci&oacute;n entre la cantidad de almacenamiento din&aacute;mico asignado y la cantidad de
<span id="changed">|</span>almacenamiento din&aacute;mico marcado. El valor por omisi&oacute;n es 8.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconmeter:&lt;soa | loa | dynamic></strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Esta opci&oacute;n determina qu&eacute; uso del &aacute;rea, LOA o SOA, se calibra y, por lo tanto,
<span id="changed">|</span>qu&eacute; impuestos de asignaciones se calculan durante la marca concurrente. El uso de
<span id="changed">|</span><strong> -Xconmeter:soa</strong> aplica el impuesto de asignaci&oacute;n a las
<span id="changed">|</span>asignaciones desde el &aacute;rea de objetos peque&ntilde;os (SOA); el uso de
<span id="changed">|</span><strong>-Xconmeter:loa</strong> aplica el impuesto de asignaci&oacute;n a las
<span id="changed">|</span>asignaciones desde el &aacute;rea de objetos grandes (LOA). Si se especifica
<span id="changed">|</span><strong> -Xconmeter:dynamic</strong>, el recopilador determina din&aacute;micamente
<span id="changed">|</span>qu&eacute; &aacute;rea se calibra seg&uacute;n el &aacute;rea que se agote primero, ya sea la SOA o la LOA. Por omisi&oacute;n, la opci&oacute;n se establece en
<span id="changed">|</span><strong>-Xconmeter:soa</strong>.</li></ul></font></li>
<li id="xdbg">
<a name="xdbg"></a><strong>-Xdbg:</strong>&lt;<em>opciones</em>>
<ul class="simple">
<li>Carga bibliotecas de depuraci&oacute;n que dan soporte a la depuraci&oacute;n remota de
aplicaciones. Esta opci&oacute;n es la misma que
<a href="#runjdwp"><strong>-Xrunjdwp</strong></a>.
Por omisi&oacute;n, las bibliotecas de depuraci&oacute;n no est&aacute;n cargadas y la instancia de VM no
est&aacute; habilitada para la depuraci&oacute;n. </li></ul></li>
<li><strong>-Xdbginfo:</strong>&lt;<em>v&iacute;a de acceso al
archivo de s&iacute;mbolos</em>>
<ul class="simple">
<li>Carga y pasa las opciones al servidor de informaci&oacute;n de depuraci&oacute;n. Por
omisi&oacute;n, el servidor de informaci&oacute;n de depuraci&oacute;n est&aacute; inhabilitado. </li></ul></li>
<li><strong>-Xdebug</strong>
<ul class="simple">
<li>Inicia la JVM con el depurador habilitado. Por omisi&oacute;n, el depurador est&aacute;
inhabilitado. </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>Esta opci&oacute;n inhabilita la generaci&oacute;n de una excepci&oacute;n OutOfMemory si se
<span id="changed">|</span>invierte demasiado tiempo en la GC. Por omisi&oacute;n, esta opci&oacute;n est&aacute; desactivada. </li></ul></font></li>
<li><strong>-Xdisableexplicitgc</strong>
<ul class="simple">
<li>Indica a la VM que las llamadas a <tt class="xph">System.gc()</tt> no deben tener ning&uacute;n
efecto. Por omisi&oacute;n, las llamadas a <tt class="xph">System.gc()</tt> desencadenan una
recopilaci&oacute;n de desechos.</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>Esta opci&oacute;n impide la recopilaci&oacute;n de las series de la tabla interna de series.
<span id="changed">|</span>Por omisi&oacute;n, esta opci&oacute;n est&aacute; inhabilitada. </li></ul></font></li>
<li><strong>-Xdisablejavadump</strong>
<ul class="simple">
<li>Desactiva la generaci&oacute;n de Javadumps en el caso de errores y se&ntilde;ales. Por
omisi&oacute;n, la generaci&oacute;n de Javadumps est&aacute; habilitada. </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 se invierte demasiado tiempo en la GC, esta opci&oacute;n devuelve NULL para una
<span id="changed">|</span>petici&oacute;n de asignaci&oacute;n y, por lo tanto, genera una excepci&oacute;n OutOfMemory. Esta
<span id="changed">|</span>acci&oacute;n se realiza s&oacute;lo cuando el almacenamiento din&aacute;mico se ha expandido al m&aacute;ximo y
<span id="changed">|</span>el tiempo invertido constituye como m&iacute;nimo el 95%. Este es el comportamiento por
<span id="changed">|</span>omisi&oacute;n. </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>Esta opci&oacute;n habilita la recopilaci&oacute;n de las series de la tabla interna de
<span id="changed">|</span>series.
<span id="changed">|</span>Por omisi&oacute;n, esta opci&oacute;n est&aacute; habilitada. </li></ul></font></li>
<li><strong>-Xfuture</strong>
<ul class="simple">
<li>Activa las comprobaciones estrictas de formato de archivo-clases. Utilice este
distintivo cuando desarrolle c&oacute;digo nuevo, ya que las comprobaciones m&aacute;s estrictas
ser&aacute;n las comprobaciones por omisi&oacute;n en los pr&oacute;ximos releases. Por omisi&oacute;n, las
comprobaciones estrictas de formato est&aacute;n inhabilitadas. </li></ul></li>
<li><strong>-Xgcpolicy:[optthruput]|[optavgpause]|[gencon]</strong>
<ul class="simple">
<li>Controla el comportamiento del recopilador de desechos. La opci&oacute;n
<em>optthruput</em> es el valor por omisi&oacute;n y proporciona un
rendimiento muy alto a las aplicaciones, aunque con el inconveniente de pausas
ocasionales. La opci&oacute;n <em>optavgpause</em> reduce el tiempo
invertido en estas pausas de recopilaci&oacute;n de desechos, y limita el efecto de
incremento del tama&ntilde;o del almacenamiento din&aacute;mico en la duraci&oacute;n de la pausa de
recopilaci&oacute;n de desechos. Utilice <em>optavgpause</em> si la
configuraci&oacute;n tiene un almacenamiento din&aacute;mico muy grande. La opci&oacute;n
<em>gencon</em> solicita el uso combinado de GC concurrente y
generacional para minimizar el tiempo invertido en una pausa de recopilaci&oacute;n de
desechos.  Para obtener m&aacute;s informaci&oacute;n, consulte el apartado
<a href="#garbage">C&oacute;mo especificar una pol&iacute;tica de recopilaci&oacute;n de
desechos</a>.</li></ul></li>
<li><strong>-Xgcthreads</strong>&lt;<em>n&uacute;mero
de hebras</em>>
<ul class="simple">
<li>Establece el n&uacute;mero de hebras de ayuda que se utilizan para las operaciones
paralelas durante la recopilaci&oacute;n de desechos. Por omisi&oacute;n, el n&uacute;mero de hebras se
establece como el n&uacute;mero de CPU f&iacute;sicas presentes -1, con un m&iacute;nimo de 1.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xgcworkpackets</strong> <em>&lt;n&uacute;mero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Esta opci&oacute;n especifica el n&uacute;mero total de paquetes de trabajo disponibles en
<span id="changed">|</span>el recopilador global. Si no se especifica, el recopilador asigna un n&uacute;mero de
<span id="changed">|</span>paquetes basado en el tama&ntilde;o del almacenamiento din&aacute;mico m&aacute;ximo. </li></ul></font></li>
<li><strong>-Xint</strong>
<ul class="simple">
<li>Hace que la JVM utilice s&oacute;lo el int&eacute;rprete, e inhabilita el compilador
Just-In-Time (JIT). Por omisi&oacute;n, el compilador JIT est&aacute; habilitado. </li></ul></li>
<li><strong>-Xiss</strong><em>&lt;tama&ntilde;o></em>
<ul class="simple">
<li>Establece el tama&ntilde;o inicial de la pila de hebras Java. El valor por omisi&oacute;n es 2
kilobytes.</li></ul></li>
<li id="xjit">
<a name="xjit"></a><strong>-Xjit</strong>[:&lt;<em>subopci&oacute;n</em>>,&lt;<em>subopci&oacute;n</em>>,...]
<ul class="simple">
<li>Habilita el JIT. Para obtener m&aacute;s informaci&oacute;n sobre las subopciones, consulte la
gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>. Consulte tambi&eacute;n
<a href="#xnojit"><strong>-Xnojit</strong></a>. Por omisi&oacute;n, el JIT est&aacute; habilitado. </li></ul></li>
<li id="xlinenumbers">
<a name="xlinenumbers"></a><strong>-Xlinenumbers</strong>
<ul class="simple">
<li>Muestra los n&uacute;meros de l&iacute;nea en los rastreos de pilas, para la depuraci&oacute;n. 
Consulte tambi&eacute;n <a href="#xnolinenumbers"><strong>-Xnolinenumbers</strong></a>. Por omisi&oacute;n, los n&uacute;meros de l&iacute;nea est&aacute;n activados. </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>Esta opci&oacute;n asigna un &aacute;rea de objetos grandes (LOA). Los objetos se
<span id="changed">|</span>asignar&aacute;n a esta LOA en lugar de la SOA. Por omisi&oacute;n, la LOA est&aacute; habilitada para todas las pol&iacute;ticas de recopilaci&oacute;n de
<span id="changed">|</span>desechos excepto para la subagrupaci&oacute;n, donde la LOA no est&aacute; disponible. Consulte
<span id="changed">|</span>tambi&eacute;n <a href="#noloa"><strong>-Xnoloa</strong></a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloainitial</strong>
<span id="changed">|</span><em>&lt;n&uacute;mero> </em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;n&uacute;mero> es un n&uacute;mero entre 0 y 0,95, que especifica el porcentaje
<span id="changed">|</span>inicial del espacio de permanencia actual asignado al &aacute;rea de objetos
<span id="changed">|</span>grandes (LOA). El valor por omisi&oacute;n es 0,05 &oacute; 5%. </li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloamaximum</strong>
<span id="changed">|</span><em>&lt;n&uacute;mero> </em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;n&uacute;mero> es un n&uacute;mero entre 0 y 0,95, que especifica el porcentaje
<span id="changed">|</span>m&aacute;ximo del espacio de permanencia actual asignado al &aacute;rea de objetos
<span id="changed">|</span>grandes (LOA). El valor por omisi&oacute;n es 0,5 &oacute; 50%. </li></ul></font></li>
<li id="xlp">
<a name="xlp"></a><font color="red"><span id="changed">|</span><strong>-Xlp</strong> (Windows 2003)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Solicita a la JVM que asigne almacenamiento din&aacute;mico de Java con p&aacute;ginas
<span id="changed">|</span>grandes. Si las p&aacute;ginas grandes no est&aacute;n disponibles, la JVM no se iniciar&aacute; y
<span id="changed">|</span>aparecer&aacute; el mensaje de error <tt class="xph"> GC: system configuration does not support option
<span id="changed">|</span>--> '-Xlp'</tt>. Las p&aacute;ginas grandes est&aacute;n soportadas por los sistemas
<span id="changed">|</span>que ejecuten Windows 2003, donde el sistema operativo est&aacute; configurado
<span id="changed">|</span>para que utilice este tipo de p&aacute;ginas. Por omisi&oacute;n, no se utilizan p&aacute;ginas grandes. Consulte <a href="#alloc_large_page">Configuraci&oacute;n de la asignaci&oacute;n de memoria con p&aacute;ginas grandes</a>.</li></ul></font></li>
<li><strong>-Xmaxe</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece la cantidad m&aacute;xima a la que el recopilador de desechos expande el
almacenamiento din&aacute;mico. Normalmente, el recopilador de desechos expande
el almacenamiento din&aacute;mico cuando la cantidad de espacio libre es menor
del 30% (o la cantidad especificada utilizando
<strong>-Xminf</strong>) a la cantidad necesaria para restaurar el
espacio libre al 30%. La opci&oacute;n <strong>-Xmaxe</strong> limita la expansi&oacute;n al valor especificado; por ejemplo,
<tt class="xph">-Xmaxe10M</tt> limita la expansi&oacute;n a 10 MB. Por omisi&oacute;n, no hay ning&uacute;n tama&ntilde;o
de expansi&oacute;n m&aacute;ximo. </li></ul></li>
<li><strong>-Xmaxf</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Especifica el porcentaje m&aacute;ximo de almacenamiento din&aacute;mico que debe quedar libre
despu&eacute;s de una recopilaci&oacute;n de desechos. Si el espacio libre sobrepasa esta
cantidad, la JVM intenta mermar el almacenamiento din&aacute;mico. Especifique el tama&ntilde;o
como un valor decimal en el rango del 0 al 1, por ejemplo <tt class="xph"> -Xmaxf0,5</tt>
establece el espacio libre m&aacute;ximo en el 50%. El valor por omisi&oacute;n es 0,6 (60%).</li></ul></li>
<li><strong>-Xmca</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el paso de expansi&oacute;n de la memoria asignada para almacenar la parte de
RAM de las clases cargadas. Cada vez que se necesita m&aacute;s memoria para almacenar
clases en la RAM, la memoria asignada se aumenta en esta cantidad. Por omisi&oacute;n, el
paso de expansi&oacute;n es 32K.</li></ul></li>
<li><strong>-Xmco</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el paso de expansi&oacute;n de la memoria asignada para almacenar la parte de
ROM de las clases cargadas. Cada vez que se necesita m&aacute;s memoria para almacenar
clases en la ROM, la memoria asignada se aumenta en esta cantidad. Por omisi&oacute;n, el
paso de expansi&oacute;n es 128 K.</li></ul></li>
<li><strong>-Xmine</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece la cantidad m&iacute;nima a la que el recopilador de desechos expande el
almacenamiento din&aacute;mico. Normalmente, el recopilador de desechos expande
el almacenamiento din&aacute;mico a la cantidad necesaria para restaurar el
espacio libre al 30% (o a la cantidad especificada utilizando
<strong>-Xminf</strong>). La
opci&oacute;n <strong>-Xmine</strong> establece la expansi&oacute;n para que sea como m&iacute;nimo
el valor especificado; por ejemplo, <tt class="xph">-Xmine50M </tt>establece el tama&ntilde;o de
expansi&oacute;n a un m&iacute;nimo de 50 MB. Por omisi&oacute;n, el tama&ntilde;o m&iacute;nimo de expansi&oacute;n es 1 MB.</li></ul></li>
<li><strong>-Xminf</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Especifica el porcentaje m&iacute;nimo de almacenamiento din&aacute;mico que debe quedar libre
despu&eacute;s de una recopilaci&oacute;n de desechos. Si el espacio libre es menor de esta
cantidad, la JVM intenta expandir el almacenamiento din&aacute;mico. Especifique el tama&ntilde;o
como un valor decimal en el rango del 0 al 1; por ejemplo, un valor
<tt class="xph">-Xminf0.3</tt> solicita que el espacio libre m&iacute;nimo sea el 30% del
almacenamiento din&aacute;mico. Por omisi&oacute;n, el valor m&iacute;nimo es 0.3. </li></ul></li>
<li><strong>-Xmn</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o m&aacute;ximo e inicial del nuevo almacenamiento din&aacute;mico (cantera)
en el valor especificado cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Es equivalente a establecer <strong>-Xmns</strong> y <strong>-Xmnx</strong> conjuntamente. <span><font color="red"><span id="changed">|</span>Si establece <strong>-Xmns</strong> o <strong>-Xmnx</strong>, no puede establecer <strong>-Xmn</strong>. Si intenta
<span id="changed">|</span>establecer <strong>-Xmn</strong> con <strong>-Xmns</strong> o <strong>-Xmnx</strong>, la VM no se iniciar&aacute; y devolver&aacute; un error.</font></span> 
Por omisi&oacute;n, <strong>-Xmn</strong> se selecciona de forma interna seg&uacute;n la
capacidad del sistema. Puede utilizar la opci&oacute;n <strong>-verbose:sizes</strong>
para averiguar los valores que utiliza actualmente la VM. </li></ul></li>
<li><strong>-Xmns</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o inicial del nuevo almacenamiento din&aacute;mico (cantera)
en el valor especificado cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Por omisi&oacute;n, esta opci&oacute;n se selecciona de forma interna seg&uacute;n
la capacidad del sistema. <span><font color="red"><span id="changed">|</span>Esta opci&oacute;n devolver&aacute; un error si intenta
<span id="changed">|</span>utilizarla con <strong>-Xmn</strong>.</font></span></li></ul></li>
<li><strong>-Xmnx</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o m&aacute;ximo del nuevo almacenamiento din&aacute;mico (cantera)
en el valor especificado cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Por omisi&oacute;n, esta opci&oacute;n se selecciona de forma interna seg&uacute;n
la capacidad del sistema. <span><font color="red"><span id="changed">|</span>Esta opci&oacute;n devolver&aacute; un error si intenta
<span id="changed">|</span>utilizarla con <strong>-Xmn</strong>.</font></span></li></ul></li>
<li id="xmo">
<a name="xmo"></a><strong>-Xmo</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o m&aacute;ximo e inicial del almacenamiento din&aacute;mico antiguo
(permanencia) en el valor especificado cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Es equivalente a establecer
<strong>-Xmos</strong> y <strong> -Xmox</strong> conjuntamente. <span><font color="red"><span id="changed">|</span>Si establece <strong>-Xmos</strong> o <strong>-Xmox</strong>,
<span id="changed">|</span>no puede establecer <strong>-Xmo</strong>. Si
<span id="changed">|</span>intenta establecer <strong>-Xmo</strong> con <strong>-Xmos </strong> o
<span id="changed">|</span><strong>-Xmox</strong>, la VM no se iniciar&aacute; y devolver&aacute; un error.</font></span> Por
omisi&oacute;n, <strong>-Xmo</strong> se selecciona de forma interna seg&uacute;n la
capacidad del sistema. Puede utilizar la opci&oacute;n <strong>-verbose:sizes</strong>
para averiguar los valores que utiliza actualmente la VM. </li></ul></li>
<li><strong>-Xmos</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o inicial del almacenamiento din&aacute;mico antiguo (permanencia) en
el valor especificado cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Por omisi&oacute;n, esta opci&oacute;n se selecciona de forma interna seg&uacute;n
la capacidad del sistema. <span><font color="red"><span id="changed">|</span>Esta opci&oacute;n devolver&aacute; un error si intenta
<span id="changed">|</span>utilizarla con <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmox</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o m&aacute;ximo del almacenamiento din&aacute;mico antiguo (permanencia) en
el valor especificado cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Por omisi&oacute;n, esta opci&oacute;n se selecciona de forma interna seg&uacute;n
la capacidad del sistema. <span><font color="red"><span id="changed">|</span>Esta opci&oacute;n devolver&aacute; un error si intenta
<span id="changed">|</span>utilizarla con <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmoi</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece qu&eacute; cantidad de almacenamiento din&aacute;mico de Java se aumenta cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Si
establece en cero, no se permite ninguna expansi&oacute;n. Por omisi&oacute;n, el tama&ntilde;o de
incremento se calcula seg&uacute;n el tama&ntilde;o de expansi&oacute;n, <strong>-Xmine</strong> y
<strong>-Xminf</strong>.</li></ul></li>
<li><strong>-Xmr</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o del "conjunto recordado" de la recopilaci&oacute;n de desechos cuando se utiliza <strong>-Xgcpolicy:gencon</strong>. Es
una lista de objetos en el almacenamiento din&aacute;mico antiguo (permanencia) que
incluyen referencias a objetos en el almacenamiento din&aacute;mico nuevo (cantera). Por
omisi&oacute;n, esta opci&oacute;n se establece en 16 kilobytes. </li></ul></li>
<li id="xms">
<a name="xms"></a><strong>-Xms</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o inicial del almacenamiento din&aacute;mico de Java. 
 Tambi&eacute;n puede utilizar
<a href="#xmo"><strong>-Xmo</strong></a>. El valor por
omisi&oacute;n se establece de forma interna seg&uacute;n la capacidad del sistema.</li></ul></li>
<li><strong>-Xmso</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o de pila C para las hebras Java bifurcadas. Por
omisi&oacute;n, esta opci&oacute;n se establece en 32 kilobytes para las plataformas de 32 bits y
en 256 kilobytes para las plataformas de 64 bits. </li></ul></li>
<li><strong>-Xmx</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o m&aacute;ximo del almacenamiento din&aacute;mico de Java. Por omisi&oacute;n, esta opci&oacute;n se
establece de forma interna seg&uacute;n la capacidad del sistema.</li></ul></li>
<li id="noclassgc">
<a name="noclassgc"></a><strong>-Xnoclassgc</strong>
<ul class="simple">
<li>Inhabilita la recopilaci&oacute;n de desechos de clase. Desactiva la recopilaci&oacute;n de
desechos del almacenamiento asociado con las clases Java que ya no utiliza la JVM.
El comportamiento por omisi&oacute;n es <strong>-Xclassgc</strong>.</li></ul></li>
<li id="nocompactgc">
<a name="nocompactgc"></a><strong>-Xnocompactgc</strong>
<ul class="simple">
<li>Inhabilita la compactaci&oacute;n del recopilador de desechos. Consulte tambi&eacute;n
<a href="#compactgc"><strong>-Xcompactgc</strong></a>. Por omisi&oacute;n, la
compactaci&oacute;n est&aacute; habilitada. </li></ul></li>
<li id="nocompactexplicitgc">
<a name="nocompactexplicitgc"></a><strong>-Xnocompactexplicitgc</strong>
<ul class="simple">
<li>Inhabilita la compactaci&oacute;n en una llamada a <tt class="xph">System.gc()</tt>. Consulte
tambi&eacute;n <a href="#compactexplicitgc"><strong>-Xcompactexplicitgc</strong></a>. Por omisi&oacute;n, la compactaci&oacute;n est&aacute;
habilitada en las llamadas a <tt class="xph">System.gc()</tt>.</li></ul></li>
<li id="xnojit">
<a name="xnojit"></a><strong>-Xnojit</strong>
<ul class="simple">
<li>Inhabilita el compilador JIT. Consulte tambi&eacute;n <a href="#xjit"><strong>-Xjit</strong></a>. Por omisi&oacute;n, el compilador JIT est&aacute; habilitado. </li></ul></li>
<li id="xnolinenumbers">
<a name="xnolinenumbers"></a><strong>-Xnolinenumbers</strong>
<ul class="simple">
<li>Inhabilita los n&uacute;meros de l&iacute;nea para la depuraci&oacute;n. Consulte tambi&eacute;n <a href="#xlinenumbers"><strong>-Xlinenumbers</strong></a>. Por omisi&oacute;n, los n&uacute;meros de l&iacute;nea est&aacute;n
activados. </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>Esta opci&oacute;n impide la asignaci&oacute;n de un &aacute;rea de objetos grandes (LOA). 
<span id="changed">|</span>Todos los objetos se asignar&aacute;n en la SOA. Por omisi&oacute;n, la LOA est&aacute; habilitada para todas las pol&iacute;ticas de recopilaci&oacute;n de
<span id="changed">|</span>desechos excepto para la subagrupaci&oacute;n, donde la LOA no est&aacute; disponible. Consulte
<span id="changed">|</span>tambi&eacute;n <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>Inhabilita la compactaci&oacute;n incremental. Consulte tambi&eacute;n <a href="#partialcompactgc"><strong>-Xpartialcompactgc</strong></a>. Por omisi&oacute;n, esta opci&oacute;n no est&aacute;
establecida, por lo que todas las compactaciones son completas. </li></ul></li>
<li id="nosigcatch">
<a name="nosigcatch"></a><strong>-Xnosigcatch</strong>
<ul class="simple">
<li>Inhabilita el c&oacute;digo de manejo de se&ntilde;ales de la JVM. Consulte tambi&eacute;n <a href="#sigcatch"><strong>-Xsigcatch</strong></a>. Por omisi&oacute;n, el manejo de se&ntilde;ales est&aacute; habilitado. </li></ul></li>
<li id="nosigchain">
<a name="nosigchain"></a><strong>-Xnosigchain</strong>
<ul class="simple">
<li>Inhabilita el encadenamiento de manejadores de se&ntilde;ales. Consulte tambi&eacute;n <a href="#sigchain"><strong>-Xsigchain</strong></a>. Por omisi&oacute;n, el encadenamiento de manejadores de se&ntilde;ales est&aacute;
habilitado. </li></ul></li>
<li><strong>-Xoptionsfile</strong>=&lt;<em>archivo</em>>
<ul class="simple">
<li>Especifica un archivo que contiene opciones y definiciones de JVM. Por omisi&oacute;n,
no se utiliza ning&uacute;n archivo de opciones. </li></ul></li>
<li><strong>-Xoss</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o de pila Java y el tama&ntilde;o de pila C para cualquier
hebra. Esta opci&oacute;n se facilita por razones de compatibilidad y es
equivalente a establecer <strong> -Xss</strong>
<strong>-Xmso</strong> en el valor especificado.</li></ul></li>
<li id="partialcompactgc">
<a name="partialcompactgc"></a><strong>-Xpartialcompactgc</strong>
<ul class="simple">
<li>Habilita la compactaci&oacute;n parcial. Consulte tambi&eacute;n
<a href="#nopartialcompactgc"><strong>-Xnopartialcompactgc</strong></a>.</li></ul></li>
<li><strong>-Xquickstart</strong>
<ul class="simple">
<li>Mejora el tiempo de arranque retardando las optimizaciones y la compilaci&oacute;n de
JIT. Por omisi&oacute;n, el arranque r&aacute;pido est&aacute; inhabilitado y no existe ning&uacute;n retardo
en la compilaci&oacute;n de JIT.</li></ul></li>
<li><strong>-Xrdbginfo:</strong><em>&lt;sistema principal></em>:<em>&lt;puerto></em>
<ul class="simple">
<li>Carga y pasa las opciones al servidor de informaci&oacute;n de depuraci&oacute;n remoto. Por
omisi&oacute;n, el servidor de informaci&oacute;n de depuraci&oacute;n remoto est&aacute; inhabilitado. </li></ul></li>
<li><strong>-Xrs</strong>
<ul class="simple">
<li>Reduce el uso de se&ntilde;ales del sistema operativo. Por omisi&oacute;n, la VM realiza un
uso completo de las se&ntilde;ales del sistema operativo; consulte el
apartado <a href="#sighand">Se&ntilde;ales utilizadas por la JVM </a>.</li></ul></li>
<li><strong>-Xrun</strong><em>&lt;nombre de
biblioteca></em>[:opciones]
<ul class="simple">
<li>Carga las bibliotecas de ayuda. Para cargar varias bibliotecas, especif&iacute;quelas m&aacute;s de
una vez en la l&iacute;nea de mandatos. Ejemplos de estas bibliotecas son:
<ul>
<li><strong>-Xrunhprof</strong>[:help] | [:&lt;<em>opci&oacute;n</em>>=&lt;<em>valor</em>>, ...]
<ul class="simple">
<li>Lleva a cabo una definici&oacute;n de perfil de almacenamiento din&aacute;mico, CPU o monitor. 
Para obtener m&aacute;s informaci&oacute;n, consulte la gu&iacute;a
<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>opci&oacute;n</em>>=&lt;<em>valor</em>>, ...]
<ul class="simple">
<li>Carga bibliotecas de depuraci&oacute;n que dan soporte a la depuraci&oacute;n remota de
aplicaciones. Esta opci&oacute;n es la misma que
<a href="#xdbg"><strong>-Xdbg</strong></a>. Para obtener m&aacute;s informaci&oacute;n,
consulte el apartado <a href="#debugger">Depuraci&oacute;n de aplicaciones Java</a>.</li></ul></li>
<li><a name="xrunjnichk"></a><strong id="xrunjnichk">-Xrunjnichk</strong>[:help] |
[:&lt;<em>opci&oacute;n </em>>=&lt;<em>valor</em>>, ...]
<ul class="simple">
<li>Realiza comprobaciones adicionales de las funciones JNI, para rastrear errores
en los programas nativos que acceden a la JVM utilizando JNI. Para obtener m&aacute;s
informaci&oacute;n, consulte la gu&iacute;a <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>tama&ntilde;o</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Para obtener m&aacute;s informaci&oacute;n sobre <strong>-Xscmx</strong>, consulte el
<span id="changed">|</span>apartado <a href="#sharedclassesxoptions">Utilizaci&oacute;n de las opciones de la l&iacute;nea de mandatos para el compartimiento de
<span id="changed">|</span>clases</a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xshareclasses:</strong>&lt;<em>subopciones</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Para obtener m&aacute;s informaci&oacute;n sobre las subopciones de
<span id="changed">|</span><strong>-Xshareclasses</strong>, consulte el apartado
<span id="changed">|</span><a href="#sharedclassesxoptions">Utilizaci&oacute;n de las opciones de la l&iacute;nea de mandatos para el compartimiento de
<span id="changed">|</span>clases</a>.</li></ul></font></li>
<li id="sigcatch">
<a name="sigcatch"></a><strong>-Xsigcatch</strong>
<ul class="simple">
<li>Habilita el c&oacute;digo de manejo de se&ntilde;ales de la VM. Consulte tambi&eacute;n
<a href="#nosigcatch"><strong>-Xnosigcatch</strong></a>. Por omisi&oacute;n, el
manejo de se&ntilde;ales est&aacute; habilitado. </li></ul></li>
<li id="sigchain">
<a name="sigchain"></a><strong>-Xsigchain</strong>
<ul class="simple">
<li>Habilita el encadenamiento de manejadores de se&ntilde;ales. Consulte tambi&eacute;n
<a href="#nosigchain"><strong>-Xnosigchain</strong></a>. Por omisi&oacute;n, el
encadenamiento de manejadores de se&ntilde;ales est&aacute; habilitado. </li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xsoftrefthreshold</strong>&lt;<em>n&uacute;mero</em>> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Esta opci&oacute;n establece el n&uacute;mero de GC despu&eacute;s del cual se borrar&aacute; una referencia
<span id="changed">|</span>de software si no se ha marcado su referente. El valor por omisi&oacute;n es 3, lo que
<span id="changed">|</span>significa que a la tercera GC en la que no se marque el referente, se borrar&aacute; la
<span id="changed">|</span>referencia de software. </li></ul></font></li>
<li><strong>-Xss</strong>&lt;<em>tama&ntilde;o</em>>
<ul class="simple">
<li>Establece el tama&ntilde;o m&aacute;ximo de pila de Java para cualquier hebra.  Por omisi&oacute;n, esta opci&oacute;n se establece en 256 KB.</li></ul></li>
<li><strong>-Xthr:</strong>&lt;<em>opciones</em>>
<ul class="simple">
<li>Establece las opciones de hebra. </li></ul></li>
<li><strong>-Xverbosegclog</strong>:&lt;<em>v&iacute;a de acceso del
archivo</em>>&lt;<em>nombre de archivo</em>>[X, Y]
<ul class="simple">
<li>Hace que la salida de verboseGC se escriba en el archivo especificado. Si el archivo existe, se escribe encima de
&eacute;l. En caso contrario, si no puede abrirse un archivo existente o no puede crearse un nuevo archivo, la salida se
redirige a stderr. Si especifica los argumentos X e Y (ambos son enteros) la salida
de verboseGC se redirige a un n&uacute;mero X de archivos, conteniendo cada uno un n&uacute;mero Y
de ciclos de gc de la salida de verboseGC. Estos archivos tienen el formato
<em>nombrearchivo1, nombrearchivo2</em>, etc. Por omisi&oacute;n, no se
realiza ning&uacute;n registro cronol&oacute;gico de recopilaci&oacute;n de desechos verboso. </li></ul></li>
<li><strong>-Xverify</strong>
<ul class="simple">
<li>Habilita la comprobaci&oacute;n estricta de clases para todas las clases que se
carguen. Por omisi&oacute;n, la comprobaci&oacute;n estricta de clases est&aacute; inhabilitada. </li></ul></li>
<li><strong>-Xverify:none</strong>
<ul class="simple">
<li>Inhabilita la comprobaci&oacute;n estricta de clases. Por omisi&oacute;n, la comprobaci&oacute;n
estricta de clases est&aacute; inhabilitada. </li></ul></li></ul>
<a name="wq32"></a>
<h2 id="wq32"><a href="#ToC_27">Obtenci&oacute;n del n&uacute;mero de versi&oacute;n y de nivel de compilaci&oacute;n de IBM</a></h2>
<p>Para obtener el n&uacute;mero de versi&oacute;n y de nivel de compilaci&oacute;n de IBM, en el indicador de
mandatos escriba:</p>
<pre class="xmp">java -version</pre>
<a name="wq33"></a>
<h2 id="wq33"><a href="#ToC_28">Globalizaci&oacute;n del mandato java</a></h2>
<p>El mandato <strong>java</strong> y otros mandatos del iniciador
java (como <strong>javaw</strong>) permiten especificar un nombre de
clase con cualquier car&aacute;cter que est&eacute; en el juego de caracteres del
entorno local actual. </p>
<p>Tambi&eacute;n puede especificar cualquier car&aacute;cter Unicode en el nombre de clase y
argumentos utilizando secuencias de escape Java. Para hacerlo, debe especificar
<strong>-Xargencoding</strong>. Para especificar un car&aacute;cter Unicode, utilice secuencias de escape con el formato
<tt>\u####</tt>, donde # es un d&iacute;gito hexadecimal (0 a 9, A a F). </p>
<p>De forma alternativa, para especificar que el nombre de clase y los argumentos
del mandato est&aacute;n en codificaci&oacute;n UTF8, utilice
<strong>-Xargencoding:utf8</strong>, o en la codificaci&oacute;n ISO8859_1, utilice
<strong> -Xargencoding:latin</strong>. </p>
<p>Por ejemplo, para especificar una clase denominada "HelloWorld" utilizando la
codificaci&oacute;n Unicode para las dos letras may&uacute;sculas, utilice este mandato:
</p>
<pre class="xmp">java -Xargencoding '\u0048ello\u0057orld'</pre>
<p>Los mandatos <strong>java</strong> y <strong>javaw</strong>
proporcionan mensajes de salida traducidos. Estos mensajes difieren seg&uacute;n el entorno
local en el que se ejecute Java. Las descripciones de error y otra informaci&oacute;n de
depuraci&oacute;n devuelta por <strong>java</strong> est&aacute;n en ingl&eacute;s. </p>
<a name="wq34"></a>
<h2 id="wq34"><a href="#ToC_29">Ejecuci&oacute;n autom&aacute;tica de un archivo Java</a></h2>
<p>Para establecer que se ejecute autom&aacute;ticamente una clase java o un archivo
jar desde el archivo utilice la opci&oacute;n <strong>Herramientas->Opciones de
carpeta->Tipos de archivo</strong> del Explorador de Windows. De forma alternativa, escriba
en el indicador de mandatos:</p>
<pre class="xmp">assoc .class=javaclass
ftype javaclass=C:\Archivos de programa\IBM\Java50\jre\bin\java.exe %l %*</pre>
<a name="wq35"></a>
<div class="notelisttitle" id="wq35">Notas:</div>
<ol type="1">
<li><tt>%l</tt> es la letra l y no el n&uacute;mero 1.</li>
<li>Si Java est&aacute; instalado en un directorio distinto de C:\Archivos de programa\IBM\Java50\, sustit&uacute;yalo por su
directorio.</li>
</ol>
<a name="jaws"></a>
<h2 id="jaws"><a href="#ToC_30">C&oacute;mo ejecutar aplicaciones Java con tecnolog&iacute;as de asistencia
nativas</a></h2>
<p>Sun proporciona el Java Access Bridge para facilitar a las tecnolog&iacute;as de asistencia
nativas de Windows, como los lectores de pantalla, acceso al soporte Java Accessibility en una
aplicaci&oacute;n Java. Estas tecnolog&iacute;as de asistencia nativas de Windows deben soportar
llamadas al Java Access Bridge.</p>
<p>El Java Access Bridge que facilita Sun incluye un programa de instalaci&oacute;n, que
coloca cinco archivos en los directorios correctos: access-bridge.jar, jaccess.jar,
accessibility.properties, JavaAccessBridge.dll y WindowsAccessBridge.dll. IBM
proporciona una copia de jaccess.jar en el directorio adecuado para su uso con
JawBridge.</p>
<p>Si ya ha habilitado el IBM Accessibility Bridge (JawBridge), que permite que el
Windows 2000 Magnifier funcione con aplicaciones Swing, y desea habilitar JawBridge
al mismo tiempo que el Java Access Bridge, edite la l&iacute;nea del archivo
accessibility.properties para que diga:</p>
<p></p>
<pre class="xmp">assistive_technologies=com.sun.java.accessibility.AccessBridge,
JawBridge</pre>
<p>Comente la l&iacute;nea insertando <tt>#</tt> delante para desactivar
ambos puentes.
El siguiente sitio Web le indica c&oacute;mo bajar el Java Access Bridge:</p>
<p><a href="http://java.sun.com/products/jfc/accessibility.html">http://java.sun.com/products/jfc/accessibility.html</a> </p>
<a name="jit"></a>
<h2 id="jit"><a href="#ToC_31">Compilador Just-In-Time (JIT)</a></h2>
<p>El compilador Just-In-Time (JIT) de IBM genera din&aacute;micamente el c&oacute;digo
m&aacute;quina utilizado con frecuencia por secuencias de c&oacute;digo de bytes en
aplicaciones o applets Java durante su ejecuci&oacute;n. <span><font color="red"><span id="changed">|</span>El
<span id="changed">|</span>compilador JIT V5.0 proporciona nuevas optimizaciones como resultado de
<span id="changed">|</span>las investigaciones del compilador, mejora las optimizaciones
<span id="changed">|</span>implementadas en las versiones anteriores de JIT y proporciona un mayor
<span id="changed">|</span>aprovechamiento del hardware.</font></span></p>
<p>El IBM SDK y el Runtime Environment incluyen el JIT, que est&aacute; habilitado
por omisi&oacute;n. Generalmente, no es necesario invocar el JIT expl&iacute;citamente,
ya que la compilaci&oacute;n de c&oacute;digo de bytes Java a c&oacute;digo de m&aacute;quina ocurre
de forma transparente. No obstante, si tiene problemas con el Runtime
Environment al ejecutar una aplicaci&oacute;n Java o un applet, puede inhabilitar
el JIT para aislar el problema. La inhabilitaci&oacute;n del JIT s&oacute;lo debe ser
una medida temporal; &eacute;ste es necesario para un rendimiento adecuado. </p>
<a name="disjit"></a>
<h3 id="disjit"><a href="#ToC_32">Inhabilitaci&oacute;n del JIT</a></h3>
<p>Existen tres modos de inhabilitar el JIT: </p>
<ul>
<li>Establezca la variable de entorno <strong>JAVA_COMPILER</strong>
en "NONE" o en la hebra vac&iacute;a antes de ejecutar la aplicaci&oacute;n Java. 
<p>En el indicador de mandatos donde se ejecute la aplicaci&oacute;n, escriba: </p>
<pre class="xmp">set JAVA_COMPILER=NONE</pre><p class="indatacontent">
Asimismo, puede establecer permanentemente
<strong>JAVA_COMPILER</strong> utilizando la interfaz gr&aacute;fica de
usuario. Abra <strong>Panel de control</strong>, seleccione
<strong>Sistema</strong> y, en la pesta&ntilde;a
<strong>Avanzada</strong>, seleccione <strong>Variables de
entorno</strong>.</p></li>
<li>Utilice la opci&oacute;n <strong>-D</strong> en la l&iacute;nea de mandatos de
la JVM para establecer la propiedad <strong>java.compiler</strong>
en "NONE" o en la serie vac&iacute;a: 
<pre class="xmp">java -Djava.compiler=NONE MiApli</pre></li>
<li>Utilice la opci&oacute;n <strong>-Xint</strong> en la l&iacute;nea de mandatos
de la JVM. Por ejemplo:
<pre class="xmp">java -Xint MiApli</pre></li></ul>
<p>Ambas opciones de la l&iacute;nea de mandatos alteran temporalmente la
variable de entorno <strong>JAVA_COMPILER</strong>. </p>
<a name="enajit"></a>
<h3 id="enajit"><a href="#ToC_33">Habilitaci&oacute;n del JIT</a></h3>
<p>Para habilitar el JIT expl&iacute;citamente, establezca la variable de entorno
<strong>JAVA_COMPILER</strong> en "jitc" o utilice la opci&oacute;n
<strong>-D</strong> para establecer la propiedad
<strong>java.compiler</strong> property en "jitc". Alternativamente,
utilice la opci&oacute;n <strong>-Xjit</strong> (y omita la opci&oacute;n
<strong>-Xint</strong>) en la l&iacute;nea de mandatos de la JVM para
activar el JIT.</p>
<p>Si la variable de entorno <strong>JAVA_COMPILER</strong> o la
propiedad <strong>java.compiler</strong> se establecen en "" (la serie
vac&iacute;a), el JIT permanece inhabilitado. Para desestablecer la variable de
entorno adecuadamente, escriba <tt class="xph">set
JAVA_COMPILER=</tt> en el indicador de mandatos. 
 </p>
<a name="detjit"></a>
<h3 id="detjit"><a href="#ToC_34">C&oacute;mo determinar si el JIT est&aacute; habilitado</a></h3>
<p>Para determinar si el JIT est&aacute; habilitado, escriba lo siguiente en un indicador
de mandatos:</p>
<pre class="xmp">java -version</pre>
<p>Si el JIT no se est&aacute; utilizando, aparece un mensaje que incluye lo siguiente:</p>
<pre class="xmp">(JIT disabled)</pre>
<p>Si el JIT se est&aacute; utilizando, aparece un mensaje que incluye lo siguiente:</p>
<pre class="xmp">(JIT enabled)</pre><p class="indatacontent"> </p>
<p>Para obtener m&aacute;s informaci&oacute;n sobre el JIT, consulte la gu&iacute;a
<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_35">C&oacute;mo especificar una pol&iacute;tica de recopilaci&oacute;n de
desechos</a></h2>
<p>El recopilador de desechos gestiona la memoria utilizada por Java y las
aplicaciones que se ejecutan en la VM. </p>
<p>Cuando el recopilador de desechos recibe una solicitud de almacenamiento, la
memoria no utilizada en el almacenamiento din&aacute;mico se define aparte: "asignaci&oacute;n".
El recopilador de desechos tambi&eacute;n busca &aacute;reas de memoria a las que ya no se haga
referencia, y las libera para que se puedan reutilizar: "recopilaci&oacute;n". </p>
<p>La fase de recopilaci&oacute;n puede desencadenarla un error de asignaci&oacute;n de memoria,
que se produce cuando no queda espacio para una solicitud de almacenamiento, o una
llamada expl&iacute;cita a System.gc().</p>
<p>La recopilaci&oacute;n de desechos puede afectar significativamente al rendimiento de la
aplicaci&oacute;n, por lo que la m&aacute;quina virtual IBM ofrece varios m&eacute;todos para optimizar
la recopilaci&oacute;n de desechos y reducir de esta forma el efecto en la aplicaci&oacute;n. </p>
<p>Para obtener informaci&oacute;n m&aacute;s detallada sobre la recopilaci&oacute;n de desechos,
consulte la gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="wq37"></a>
<h3 id="wq37"><a href="#ToC_36">Opciones de recopilaci&oacute;n de desechos</a></h3>
<p>La opci&oacute;n <strong>-Xgcpolicy</strong> especifica la pol&iacute;tica de recopilaci&oacute;n de desechos.</p>
<p><strong>-Xgcpolicy</strong> toma los valores  <strong>optthruput</strong> (el valor por omisi&oacute;n y el recomendado), <strong>optavgpause</strong> o <strong>gencon</strong>.  La opci&oacute;n controla el comportamiento del recopilador de
desechos, realizando intercambios entre la salida de la aplicaci&oacute;n y el sistema en general y los tiempos de pausa
provocados por la recopilaci&oacute;n de desechos.</p>
<p>El formato de la opci&oacute;n y sus valores son: </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="wq38"></a>
<h3 id="wq38"><a href="#ToC_37">Tiempo de pausa</a></h3>
<p>Cuando un intento de una aplicaci&oacute;n de crear un objeto no se puede cumplir inmediatamente
con el espacio disponible en el almacenamiento din&aacute;mico, corresponde al recopilador de
desechos identificar los objetos sin referencia (desechos), suprimirlos y devolver el
almacenamiento din&aacute;mico a un estado en el que las peticiones de asignaci&oacute;n inmediatas y
posteriores se puedan satisfacer r&aacute;pidamente. Estos ciclos de recopilaci&oacute;n de desechos
provocan pausas inesperadas ocasionales en la ejecuci&oacute;n del c&oacute;digo de la aplicaci&oacute;n. Como el tama&ntilde;o y la complejidad de
las aplicaciones aumenta y los almacenamientos din&aacute;micos crecen en consecuencia, este tiempo de pausa de recopilaci&oacute;n
de desechos tiende a aumentar en duraci&oacute;n e importancia. El valor por omisi&oacute;n de la
recopilaci&oacute;n de desechos, <strong>-Xgcpolicy:optthruput</strong>, proporciona una salida
muy alta para las aplicaciones, pero al coste de estas pausas ocasionales, que
pueden variar de unos pocos milisegundos a varios segundos, en funci&oacute;n del tama&ntilde;o
del almacenamiento din&aacute;mico y la cantidad de desechos.</p>
<a name="pausetimereduction"></a>
<h3 id="pausetimereduction"><a href="#ToC_38">Reducci&oacute;n del tiempo de pausa </a></h3>
<p>La JVM utiliza dos t&eacute;cnicas para reducir los tiempos de pausa: </p>
<ul>
<li>Recopilaci&oacute;n de desechos concurrente</li>
<li>Recopilaci&oacute;n de desechos generacional</li></ul>
<p>La opci&oacute;n de l&iacute;nea de mandatos <strong>-Xgcpolicy:optavgpause</strong>
solicita el uso de la recopilaci&oacute;n de desechos concurrente para reducir
significativamente el tiempo invertido en las pausas de recopilaci&oacute;n de desechos.
La GC concurrente reduce el tiempo de pausa mediante la realizaci&oacute;n de actividades
de recopilaci&oacute;n de desechos de forma concurrente durante la ejecuci&oacute;n normal del
programa, para minimizar la interrupci&oacute;n provocada por la recopilaci&oacute;n del
almacenamiento din&aacute;mico. La opci&oacute;n <strong>-Xgcpolicy:optavgpause</strong>
tambi&eacute;n limita el efecto de aumentar el tama&ntilde;o de almacenamiento din&aacute;mico en la
duraci&oacute;n de la pausa de recopilaci&oacute;n de desechos. La opci&oacute;n
<strong>-Xgcpolicy:optavgpause</strong> es muy &uacute;til en configuraciones con
grandes almacenamientos din&aacute;micos. Con el tiempo de pausa reducido, puede
experimentarse alguna reducci&oacute;n en el rendimiento de las aplicaciones. </p>
<p>Durante la recopilaci&oacute;n de desechos concurrente, se invierte una cantidad
importante de tiempo en la identificaci&oacute;n de objetos de duraci&oacute;n relativamente larga
que no se pueden recopilar. Si la GC se concentra s&oacute;lo en aquellos objetos con m&aacute;s
probabilidad de reciclarse, podr&aacute; reducir a&uacute;n m&aacute;s los tiempos de pausa de algunas
aplicaciones. Esto es lo que hace la GC generacional al reducir el almacenamiento
din&aacute;mico en dos "generaciones": las &aacute;reas de "cantera" y de "permanencia". Los
objetos se colocan en una de estas &aacute;reas dependiendo de su antig&uuml;edad. La cantera es
la menor de las dos y contiene los objetos m&aacute;s j&oacute;venes; la permanencia es mayor y
contiene los objetos m&aacute;s antiguos. Los objetos se asignan primero a la cantera; si
sobreviven lo suficiente, al final pasan al &aacute;rea de permanencia. </p>
<p>La GC generacional depende que la mayor&iacute;a de los objetos no duren mucho. La GC
generacional reduce los tiempos de pausa al concentrar el trabajo en reclamar el
almacenamiento en la cantera, ya que tiene el espacio m&aacute;s reciclable. En lugar de
tiempos de pausa ocasionales pero largos para recopilar todo el almacenamiento
din&aacute;mico, se recopila la cantera con m&aacute;s frecuencia y, si la cantera es lo
suficientemente peque&ntilde;a, los tiempos de pausa son comparativamente cortos. No
obstante, la GC generacional tiene el inconveniente de que, con el tiempo, el &aacute;rea
de permanencia puede llenarse si muchos objetos duran demasiado tiempo. Si esto
ocurre, para minimizar el tiempo de pausa, utilice una combinaci&oacute;n de GC concurrente
y GC generacional. La opci&oacute;n <strong>-Xgcpolicy:gencon</strong> solicita el uso
combinado de GC concurrente y generacional para minimizar el tiempo invertido en una
pausa de recopilaci&oacute;n de desechos. </p>
<a name="wq39"></a>
<h3 id="wq39"><a href="#ToC_39">Entornos con almacenamientos din&aacute;micos muy llenos</a></h3>
<p>Si el almacenamiento din&aacute;mico de Java est&aacute; casi lleno y hay muy pocos desechos que recopilar, es posible que las
peticiones de objetos nuevos no se puedan satisfacer r&aacute;pidamente ya que no hay espacio disponible inmediatamente. Si se
trabaja con un almacenamiento din&aacute;mico casi lleno, el rendimiento de las aplicaciones puede resentirse sin importar
cu&aacute;l de las opciones anteriores se usa y, si se siguen realizando peticiones de m&aacute;s espacio de almacenamiento din&aacute;mico,
la aplicaci&oacute;n recibe una excepci&oacute;n OutofMemory, que provoca la interrupci&oacute;n de la JVM si esta excepci&oacute;n no se detecta y
gestiona. En este punto, la JVM produce un archivo de diagn&oacute;stico "javadump". En estas condiciones, se recomienda incrementar el tama&ntilde;o del almacenamiento din&aacute;mico mediante la opci&oacute;n
<strong>-Xmx</strong> o reducir el n&uacute;mero de objetos de aplicaci&oacute;n en uso. Para
obtener m&aacute;s informaci&oacute;n, consulte la gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
Guide</a>.</p>
<a name="wq40"></a>
<h2 id="wq40"><a href="#ToC_40">C&oacute;mo procesa las se&ntilde;ales la JVM</a></h2>
<p>Cuando se activa una se&ntilde;al que resulta interesante para la JVM, se llama a un manejador de se&ntilde;ales. Este manejador
de se&ntilde;ales determina si ha sido llamado por una hebra Java o no Java. </p>
<p>Si la se&ntilde;al es de una hebra Java, la JVM toma el
control del manejo de la se&ntilde;al. Si se ha instalado un manejador de aplicaciones para
esta se&ntilde;al y no ha especificado la opci&oacute;n de l&iacute;nea de mandatos
<strong>-Xnosigchain</strong>, cuando la JVM haya finalizado el proceso, se
llamar&aacute; al manejador de aplicaciones de esta se&ntilde;al. </p>
<p>Si la se&ntilde;al es de una hebra no Java y la aplicaci&oacute;n que ha instalado la JVM ha
instalado previamente su propio manejador de se&ntilde;ales, se pasa el control a ese
manejador. De lo contrario, si la JVM o la aplicaci&oacute;n Java solicitan la se&ntilde;al, se
ignorar&aacute; la se&ntilde;al o se realizar&aacute; la acci&oacute;n por omisi&oacute;n. </p>
<p>La excepci&oacute;n a esta regla se produce en Windows, donde se crea una
nueva hebra por cada se&ntilde;al generada externamente (por ejemplo, al pulsar
Control-Inter) para ejecutar el manejador de se&ntilde;ales. En este caso, el manejador de
se&ntilde;ales de la JVM realiza su proceso y, si se ha instalado un manejador de
aplicaciones para esta se&ntilde;al y no ha especificado la opci&oacute;n de l&iacute;nea de mandatos
<strong>-Xnosigchain</strong>, se llamar&aacute; al manejador de aplicaciones de esta
se&ntilde;al. </p>
<p>Para se&ntilde;ales de excepci&oacute;n y de error, la JVM: </p>
<ul>
<li>Maneja la condici&oacute;n y se recupera, o </li>
<li>Entra en una secuencia de conclusi&oacute;n controlada en la que: 
<ol type="1">
<li>Lleva a cabo la salida de un Javadump para describir el estado de la JVM en el momento de la anomal&iacute;a</li>
<li>Llama al manejador de se&ntilde;ales de la aplicaci&oacute;n que corresponde a esa se&ntilde;al </li>
<li>Llama a cualquier enganche de terminaci&oacute;n anormal instalado por la aplicaci&oacute;n  </li>
<li>Realiza la limpieza necesaria para proporcionar una conclusi&oacute;n limpia</li></ol></li></ul> Para obtener informaci&oacute;n sobre c&oacute;mo escribir un iniciador
que especifique los enganches anteriores, consulte:
<a href="http://www.ibm.com/developerworks/java/library/i-signalhandling/">http://www-106.ibm.com/developerworks/java/library/i-signalhandling/</a>. 
Este art&iacute;culo se ha escrito para Java V1.3.1, pero tambi&eacute;n se aplica a versiones
posteriores. 
<p>En el caso de las se&ntilde;ales de interrupci&oacute;n, la JVM tambi&eacute;n entra en una secuencia de conclusi&oacute;n controlada, pero esta
vez se trata como una terminaci&oacute;n normal que: </p>
<ul>
<li>Llama al manejador de se&ntilde;ales de la aplicaci&oacute;n que corresponde a esa se&ntilde;al </li>
<li>Ejecuta todos los enganches de conclusi&oacute;n de la aplicaci&oacute;n </li>
<li>Llama a cualquier enganche de salida instalado por la aplicaci&oacute;n  </li>
<li>Realiza la limpieza necesaria de la JVM</li></ul>
<p>La conclusi&oacute;n es id&eacute;ntica a la conclusi&oacute;n iniciada por una llamada al m&eacute;todo Java <tt class="xph">System.exit()</tt>. </p>
<p>Otras se&ntilde;ales utilizadas por la JVM son para temas de control interno y no hacen que termine. La &uacute;nica se&ntilde;al de
control interesante es SIGBREAK, que hace que se genere un
Javadump. </p>
<a name="sighand"></a>
<h3 id="sighand"><a href="#ToC_41">Se&ntilde;ales utilizadas por la JVM </a></h3>
<p>La <a href="#sig_table">Tabla 1</a> siguiente muestra las se&ntilde;ales utilizadas por la JVM.
Las se&ntilde;ales se agrupan en la tabla por tipo o utilizaci&oacute;n, de la forma siguiente:</p>
<ul>
<li><strong>Excepciones:</strong> el sistema operativo lanza de forma s&iacute;ncrona una se&ntilde;al de excepci&oacute;n apropiada
cada vez que se produce una condici&oacute;n muy grave. </li>
<li><strong>Errores:</strong> la JVM lanza una SIGABRT si detecta una condici&oacute;n de la que no se puede recuperar. </li>
<li><strong>Interrupciones:</strong> las se&ntilde;ales de interrupci&oacute;n se lanzan de forma as&iacute;ncrona, desde fuera de un
proceso de JVM, para solicitar la conclusi&oacute;n. </li>
<li><strong>Controles:</strong> otras se&ntilde;ales utilizadas por la JVM para temas de control. </li></ul>
<a name="sig_table"></a>
<table id="sig_table" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabla 1. Se&ntilde;ales utilizadas por la JVM</caption>
<thead valign="bottom">
<tr>
<th id="wq42" width="25%" align="left">Nombre de se&ntilde;al</th>
<th id="wq43" width="25%" align="left">Tipo de se&ntilde;al</th>
<th id="wq44" width="25%" align="left">Descripci&oacute;n</th>
<th id="wq45" width="25%" align="left">Inhabilitada por -Xrs</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq42"><strong>SIGINT</strong></td>
<td headers="wq43">Interrupci&oacute;n</td>
<td headers="wq44">Atenci&oacute;n interactiva (Control-C). La JVM sale normalmente.</td>
<td align="center" headers="wq45">S&iacute;</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGTERM</strong></td>
<td headers="wq43">Interrupci&oacute;n</td>
<td headers="wq44">Petici&oacute;n de terminaci&oacute;n. La JVM saldr&aacute; normalmente.</td>
<td align="center" headers="wq45">S&iacute;</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGBREAK</strong></td>
<td headers="wq43">Control</td>
<td headers="wq44">Se&ntilde;al de interrupci&oacute;n procedente de un terminal. La JVM utiliza esto para tomar Javadumps.</td>
<td align="center" headers="wq45">S&iacute;</td>
</tr>
</tbody>
</table><span><font color="red"><span id="changed">|</span>La IBM JVM utiliza
<span id="changed">|</span>manejo estructurado de excepciones y la API
<span id="changed">|</span>SetConsoleCtrlHandler()SetConsoleCtrlHandler(). &Eacute;stas
<span id="changed">|</span>se inhabilitan con <strong>-Xrs</strong>. <strong>-Xnosigchain</strong> se ignora en Windows.</font></span>
<p>Utilice la opci&oacute;n <strong>-Xrs</strong> (reducir el uso de se&ntilde;ales) para evitar que la JVM maneje la
mayor&iacute;a de se&ntilde;ales. Para obtener m&aacute;s informaci&oacute;n, consulte la p&aacute;gina del iniciador de aplicaciones de Java de Sun en
<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>Las se&ntilde;ales <tt class="xph">2 (SIGINT)</tt> y <tt class="xph">15 (SIGTERM)</tt>
en las hebras de JVM hacen que la JVM concluya; por lo tanto, un manejador
de se&ntilde;ales de la aplicaci&oacute;n no deber&iacute;a intentar recuperarse de esta se&ntilde;al
a menos que ya no necesite los servicios de la JVM. </p>
<a name="wq46"></a>
<h3 id="wq46"><a href="#ToC_42">Enlace de un controlador de c&oacute;digo nativo con la biblioteca de encadenamiento de se&ntilde;ales</a></h3>
<p>El Runtime Environment contiene un encadenamiento de se&ntilde;ales. El encadenamiento de se&ntilde;ales permite a
la JVM interoperar de forma m&aacute;s eficaz con el c&oacute;digo nativo que instala sus propios manejadores de se&ntilde;ales.</p>
<p>El encadenamiento de se&ntilde;ales permite a la aplicaci&oacute;n enlazar y cargar
la biblioteca compartida jsig.dll antes de msvcrt.dll. La biblioteca jsig.dll garantiza que las llamadas a <tt class="xph">signal()</tt> sean
interceptadas para que sus manejadores no sustituyan a los manejadores de se&ntilde;ales de la JVM. En su lugar, estas
llamadas guardan los nuevos manejadores de se&ntilde;ales o los "encadenan" detr&aacute;s de los manejadores instalados por la JVM. 
M&aacute;s tarde, cuando se lance alguna de estas se&ntilde;ales y se determine que no est&aacute; destinada a la JVM, se invocar&aacute;n los
manejadores preinstalados.</p>
<p>Para utilizar jsig.dll, enl&aacute;cela con la aplicaci&oacute;n que crea o incorpora la JVM.</p>
<a name="wq47"></a>
<h2 id="wq47"><a href="#ToC_43">Transformaci&oacute;n de documentos XML</a></h2>
<p>IBM SDK contiene el procesador XSLT4J y el analizador XML4J que cumplen la
<a href="http://java.sun.com/xml/jaxp/">especificaci&oacute;n JAXP 1.3</a>. Estas herramientas permiten analizar
y transformar documentos XML independientemente de la implementaci&oacute;n de proceso
XML espec&iacute;fica. Al utilizar "Factory Finders" (Buscadores de f&aacute;bricas) para ubicar
las implementaciones de SAXParserFactory, DocumentBuilderFactory y
TransformerFactory, la aplicaci&oacute;n puede cambiar entre las distintas implementaciones
sin necesidad de modificar ning&uacute;n c&oacute;digo.</p>
<p><font color="red"><span id="changed">|</span>La tecnolog&iacute;a XML incluida en el IBM SDK es similar a
<span id="changed">|</span>Apache Xerces Java y Apache Xalan Java.  Consulte
<span id="changed">|</span><a href="http://xml.apache.org/xerces2-j/"> http://xml.apache.org/xerces2-j/</a> y
<span id="changed">|</span><a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/ </a> para obtener
<span id="changed">|</span>m&aacute;s informaci&oacute;n. </font></p>
<p>El procesador XSLT4J permite elegir entre el procesador XSLT Interpretive
original o el nuevo procesador XSLT Compiling. El procesador Interpretive est&aacute;
dise&ntilde;ado para entornos de herramientas y depuraci&oacute;n, y da soporte a las funciones de
ampliaci&oacute;n XSLT que no est&aacute;n soportadas por el procesador XSLT Compiling. El
procesador XSLT Compiling est&aacute; dise&ntilde;ado para entornos de tiempo de ejecuci&oacute;n de alto
rendimiento; genera un motor de transformaci&oacute;n, o <em>translet</em>,
desde una hoja de estilo XSL. Este enfoque separa la interpretaci&oacute;n de las
instrucciones de la hoja de estilo de su aplicaci&oacute;n de tiempo de ejecuci&oacute;n en datos
XML. </p>
<p>El procesador XSLT Interpretive es el procesador por omisi&oacute;n. Para seleccionar el
procesador XSLT Compiling, puede: </p>
<ul>
<li>Cambiar la entrada en el archivo jaxp.properties (ubicado
en C:\Archivos de programa\IBM\Java50\jre\lib), o bien </li>
<li>Establecer la propiedad del sistema de la clave
javax.xml.transform.TransformerFactory en
org.apache.xalan.xsltc.trax.TransformerFactoryImpl.</li></ul><p class="indatacontent">  </p>
<p>Para implementar las propiedades del archivo jaxp.properties, copie
jaxp.properties.sample en jaxp.properties, en
C:\Archivos de programa\IBM\Java50\. Este archivo tambi&eacute;n contiene informaci&oacute;n
detallada completa sobre el procedimiento utilizado para determinar qu&eacute;
implementaciones se deben utilizar para TransformerFactory, SAXParserFactory y
DocumentBuilderFactory.</p>
<p>Para aumentar el rendimiento cuando se transforma un objeto
StreamSource con el procesador XSLT Compiling, especifique la clase
com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager como el proveedor del servicio
org.apache.xalan.xsltc.dom.XSLTCDTMManager. Para determinar el proveedor de
servicios, pruebe cada uno de estos pasos hasta que encuentre
org.apache.xalan.xsltc.dom.XSLTCDTMManager:</p>
<ol type="1">
<li>Compruebe el valor de la propiedad del sistema
org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li>
<li>Compruebe el valor de la propiedad org.apache.xalan.xsltc.dom.XSLTCDTMManager en
el archivo C:\Archivos de programa\IBM\Java50\lib\xalan.properties.</li>
<li>Compruebe el contenido del archivo META-INF\services\org.apache.xalan.xsltc.dom.XSLTCDTMManager
para un nombre de clase. </li>
<li>Utilice el proveedor de servicios por omisi&oacute;n,
org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li></ol><p class="indatacontent">El procesador XSLT Compiling detecta el proveedor de servicios del servicio
org.apache.xalan.xsltc.dom.XSLTCDTMManager cuando se crea un objeto
javax.xml.transform.TransformerFactory. Los objetos javax.xml.transform.Transformer
o javax.xml.transform.sax.TransformerHandler que se crean utilizando ese objeto
TransformerFactory utilizar&aacute;n el mismo proveedor de servicios. S&oacute;lo puede cambiar
los proveedores de servicio si modifica uno de los valores descritos anteriormente
y, a continuaci&oacute;n, crea un nuevo objeto TransformerFactory. </p>
<a name="wq49"></a>
<h3 id="wq49"><a href="#ToC_44">Utilizaci&oacute;n de una versi&oacute;n anterior de Xerces o
Xalan</a></h3>
<p>Si utiliza una versi&oacute;n anterior de Tomcat, puede aplicarse esta limitaci&oacute;n.</p>
<p>Si utiliza una versi&oacute;n anterior de Xerces (previa a 2.0) o Xalan (previa a 2.3)
en la alteraci&oacute;n confirmada, puede obtener una excepci&oacute;n de puntero nulo cuando
ejecute la aplicaci&oacute;n. Esta excepci&oacute;n se produce porque las versiones anteriores no
manejan correctamente el archivo jaxp.properties. </p>
<p>Para evitar este problema, utilice una de las siguientes soluciones provisionales:</p>
<ul>
<li>Actualice a una versi&oacute;n m&aacute;s reciente de la aplicaci&oacute;n que implemente la &uacute;ltima
especificaci&oacute;n JAXP (Java API for XML Programming)
(http://java.sun.com/xml/jaxp/index.html).
<br /></li>
<li>Elimine el archivo jaxp.properties de C:\Archivos de programa\IBM\Java50\jre\lib.
<br /></li>
<li>Descomente las entradas en el archivo jaxp.properties en
C:\Archivos de programa\IBM\Java50\jre\lib.
<br /></li>
<li>Establezca expl&iacute;citamente el analizador SAX, el DocumentBuilder o la
f&aacute;brica de transformadores utilizando la variable de entorno
<strong>IBM_JAVA_OPTIONS</strong>. Por ejemplo:
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
  org.apache.xerces.jaxp.SAXParserFactoryImpl </pre>o bien
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</pre>o bien
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
  org.apache.xalan.processor.TransformerFactoryImpl  </pre>
<br /></li>
<li>Establezca la propiedad de sistema de
<strong>javax.xml.parsers.SAXParserFactory </strong>,
<strong>javax.xml.parsers.DocumentBuilderFactory</strong> o
<strong>javax.xml.transform.TransformerFactory</strong> desde el
c&oacute;digo de la aplicaci&oacute;n. Para ver un ejemplo, consulte la especificaci&oacute;n
JAXP 1.3. 
<br /></li></ul>
<a name="wq50"></a>
<h1 id="wq50"><a href="#ToC_45">Utilizaci&oacute;n del SDK para desarrollar aplicaciones Java</a></h1>
<p>En los siguientes apartados se proporciona informaci&oacute;n sobre el uso del SDK
para Windows para desarrollar aplicaciones Java. Consulte el apartado
<a href="#sdktools">Herramientas del SDK</a> para obtener informaci&oacute;n detallada sobre las herramientas
disponibles. </p>
<a name="debugger"></a>
<h2 id="debugger"><a href="#ToC_46">Depuraci&oacute;n de aplicaciones Java</a></h2>
<p>Para depurar programas Java, puede utilizar la aplicaci&oacute;n Depurador Java (JDB)
u otros depuradores que se comuniquen utilizando la JPDA (Java Platform Debugger
Architecture) que se proporciona con el SDK para Windows.</p>
<a name="jdb"></a>
<h3 id="jdb"><a href="#ToC_47">Depurador Java (JDB)</a></h3>
<p>El Depurador Java (JDB) se incluye en el SDK para Windows. El depurador se
invoca utilizando el mandato <strong>jdb</strong>; se "conecta" a la JVM
mediante JPDA. Para depurar una aplicaci&oacute;n Java:</p>
<ol type="1">
<li>Inicie la JVM con las siguientes opciones: 
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<em>&lt;puerto></em>
     MyApp <em>&lt;argumentos de MiApl></em></pre></li>
<li>La JVM se inicia, pero suspende la ejecuci&oacute;n antes de iniciar la aplicaci&oacute;n
Java. En una sesi&oacute;n aparte, puede conectar el depurador a la JVM:
<pre class="xmp">jdb -attach <em>&lt;n&uacute;mero de puerto></em></pre>El depurador se conectar&aacute; a la JVM y
ya puede emitir una amplia gama de mandatos para examinar y controlar la aplicaci&oacute;n
Java; por ejemplo, escriba <tt class="xph">run</tt> para ejecutar la aplicaci&oacute;n Java. </li></ol>
<p>Para obtener m&aacute;s informaci&oacute;n sobre las opciones de JDB, escriba: </p>
<pre class="xmp">jdb -help</pre><p class="indatacontent">
Para obtener m&aacute;s informaci&oacute;n sobre los mandatos de JDB:</p>
<ol type="1">
<li>Escriba <tt class="xph">jdb</tt></li>
<li>En el indicador de jdb, escriba <tt class="xph">help</tt></li></ol><p class="indatacontent"> </p>
<p>Tambi&eacute;n puede utilizar JDB para depurar aplicaciones Java que se est&eacute;n
ejecutando en m&aacute;quinas remotas. JDPA utiliza un socket TCP/IP para
conectarse a la JVM remota. </p>
<ol type="1">
<li>Inicie la JVM como anteriormente. </li>
<li>Conecte el depurador a la m&aacute;quina remota: 
<pre class="xmp">jdb -attach <em>&lt;nombre de m&aacute;quina o direcci&oacute;n ip></em>:<em>&lt;n&uacute;mero de
puerto></em></pre></li></ol>
<p>Cuando inicie una sesi&oacute;n de depuraci&oacute;n utilizando el transporte dt_socket,
aseg&uacute;rese de que los puertos especificados est&eacute;n libres para su uso. </p>
<p><font color="red"><span id="changed">|</span>Java Virtual Machine Debugging Interface (JVMDI)
<span id="changed">|</span><em>no</em> est&aacute; soportada en este release. Se ha
<span id="changed">|</span>sustituido por Java Virtual Machine Tool Interface (JVMTI).</font></p>
<p>Para obtener m&aacute;s informaci&oacute;n sobre JDB y JPDA, y su utilizaci&oacute;n, consulte los
siguientes sitios Web: </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="wq54"></a>
<h2 id="wq54"><a href="#ToC_48">C&oacute;mo determinar si la aplicaci&oacute;n se est&aacute;
ejecutando en una JVM de 32 bits o 64 bits</a></h2>
<p>Algunas aplicaciones Java deben poder determinar si se est&aacute;n ejecutando
en una JVM de 32 bits o
en una JVM de 64 bits. Por ejemplo, si la aplicaci&oacute;n tiene una biblioteca
de c&oacute;digo nativo, la biblioteca se debe compilar por separado en formatos
de 32 y 64 bits para las
plataformas que den soporte a las modalidades de
32 y 64 bits de
funcionamiento. En este caso, la aplicaci&oacute;n debe cargar la biblioteca
correcta en el tiempo de ejecuci&oacute;n, ya que no se puede mezclar c&oacute;digo de
32 y 64 bits. </p>
<p>La propiedad del sistema <strong>com.ibm.vm.bitmode</strong> permite a las
aplicaciones determinar la modalidad en la que se est&aacute; ejecutando la JVM. Devuelve
los siguientes valores: </p>
<ul>
<li>32 - la JVM se est&aacute; ejecutando en la modalidad de
32 bits</li>
<li>64 - la JVM se est&aacute; ejecutando en la modalidad de 64 bits</li></ul><p class="indatacontent">Puede inspeccionar la propiedad del sistema
<strong>com.ibm.vm.bitmode</strong> desde el c&oacute;digo de la aplicaci&oacute;n
utilizando la llamada: </p>
<pre class="xmp">System.getProperty("com.ibm.vm.bitmode");</pre>
<a name="wq55"></a>
<h2 id="wq55"><a href="#ToC_49">C&oacute;mo escribir aplicaciones JNI</a></h2>
<p>Los n&uacute;meros de versi&oacute;n de JNI v&aacute;lidos que pueden especificar los programas
nativos en la llamada a la API JNI_CreateJavaVM() son: </p>
<ul>
<li>JNI_VERSION_1_2(0x00010002)</li>
<li>JNI_VERSION_1_4(0x00010004)</li></ul><p class="indatacontent">Este n&uacute;mero de versi&oacute;n determina s&oacute;lo el nivel de la interfaz JNI nativa que se
va a utilizar. El nivel real de la JVM que se crea viene especificado por las
bibliotecas J2SE (esto es, v5.0). La API de la interfaz JNI
<em>no</em> afecta a la especificaci&oacute;n del lenguaje implementada por la
JVM, las API de bibliotecas de clases o cualquier otra &aacute;rea del comportamiento de la
JVM. Para obtener m&aacute;s informaci&oacute;n, consulte
<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 la aplicaci&oacute;n necesita dos bibliotecas JNI, una
creada para 32 bits y otra para 64 bits, utilice la propiedad del sistema
<strong>com.ibm.vm.bitmode</strong> para determinar si est&aacute; ejecutando una JVM
de 32 o de 64 bits y elegir la biblioteca adecuada. </p>
<a name="wq56"></a>
<div class="notetitle" id="wq56">Nota:</div>
<div class="notebody">La Versi&oacute;n 1.1 de Java Native Interface (JNI) no est&aacute; soportada.</div>
<a name="wq57"></a>
<h2 id="wq57"><a href="#ToC_50">Trabajo con applets</a></h2>
<p>Con el Visor de applets, puede ejecutar uno o varios applets que se invocan
mediante referencia en una p&aacute;gina Web (archivo HTML) utilizando el c&oacute;digo APPLET.
El Visor de applets encuentra los c&oacute;digos APPLET en el archivo HTML y ejecuta los
applets, en ventanas independientes, seg&uacute;n se especifica en los c&oacute;digos. </p>
<p>Como
el Visor de applets es para ver applets, no puede mostrar una p&aacute;gina Web completa
que contenga muchos c&oacute;digos HTML. S&oacute;lo analiza los c&oacute;digos APPLET y no los otros
c&oacute;digos HTML de la p&aacute;gina Web.</p>
<a name="wq58"></a>
<h3 id="wq58"><a href="#ToC_51">Ejecuci&oacute;n de applets con el Visor de applets</a></h3>
<p>Para ejecutar un applet con el Visor de applets, escriba lo siguiente en un
indicador de mandatos:</p>
<pre class="xmp">   appletviewer <em>nombre</em></pre>
<p>donde <em>nombre</em> es uno de los siguientes: </p>
<ul>
<li>El nombre de un archivo HTML que llama a un applet</li>
<li>El URL de una p&aacute;gina Web que llama a un applet</li></ul>
<p>Por ejemplo, para invocar el Visor de applets en un archivo HTML que llama a un
applet, escriba en el indicador de
mandatos:</p>
<p></p>
<pre class="xmp">appletviewer &lt;demo>\GraphLayout\example1.html</pre><p class="indatacontent"> donde <em>&lt;demo></em> se
sustituye por la v&iacute;a de acceso completa en la que ha descomprimido el paquete de
demostraci&oacute;n.</p>
<p>Por ejemplo,
<tt>http://java.sun.com/applets/NervousText/example1.html</tt> es
el URL de una p&aacute;gina Web que llama a un applet. Para invocar el Visor de applets en
esta p&aacute;gina Web, escriba en el indicador de shell:</p>
<p></p>
<pre class="xmp">appletviewer http://java.sun.com/applets/NervousText/example1.html</pre><p class="indatacontent"> </p>
<p>El Visor de applets no reconoce la opci&oacute;n <strong>charset</strong> del
c&oacute;digo &lt;META>. Si el archivo que carga appletviewer no est&aacute; codificado como el
valor por omisi&oacute;n del sistema, se puede producir una excepci&oacute;n de E/S. Para evitar
la excepci&oacute;n, utilice la opci&oacute;n <strong>-encoding</strong> cuando ejecute
appletviewer. Por ejemplo:</p>
<pre class="xmp">appletviewer -encoding JISAutoDetect sample.html</pre>
<a name="wq59"></a>
<h3 id="wq59"><a href="#ToC_52">Depuraci&oacute;n de applets con el Visor de applets</a></h3>
<p>Puede depurar applets utilizando la opci&oacute;n <strong>-debug</strong> del Visor
de applets. Cuando se depuran applets, se recomienda invocar el Visor de applets
desde el directorio que contiene el archivo HTML que llama al applet. Por ejemplo:</p>
<p></p>
<pre class="xmp">cd &lt;demo>\TicTacToe
appletviewer -debug example1.html</pre>
<p>Donde <em>&lt;demo></em> se sustituye por la v&iacute;a de
acceso completa en la que ha descomprimido el paquete de demostraci&oacute;n.</p>
<p>Puede encontrar documentaci&oacute;n sobre c&oacute;mo depurar applets utilizando el Visor
de applets en el sitio Web de Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p><font color="red"><span id="changed">|</span>
<span id="changed">|</span><a name="alloc_large_page"></a>
<span id="changed">|</span><h2 id="alloc_large_page"><a href="#ToC_53">Configuraci&oacute;n de la asignaci&oacute;n de memoria con p&aacute;ginas grandes</a></h2>
<span id="changed">|</span><p>Puede habilitar el soporte de p&aacute;ginas grandes, en aquellos sistemas que
<span id="changed">|</span>lo admitan, iniciando Java con la opci&oacute;n <strong>-Xlp</strong>. </p>
<span id="changed">|</span><p>El prop&oacute;sito principal de utilizar p&aacute;ginas grandes es el de proporcionar mejoras en el rendimiento de las
<span id="changed">|</span>aplicaciones que asignan gran cantidad de memoria y a la que acceden con frecuencia.
<span id="changed">|</span>Las mejoras en el rendimiento que ofrecen las p&aacute;ginas grandes se producen principalmente debido a la reducci&oacute;n en el
<span id="changed">|</span>n&uacute;mero de fallos en el TLB (Translation Lookaside Buffer). El TLB correlaciona un
<span id="changed">|</span>rango mayor de memoria virtual, que es lo que provoca esta mejora. </p>
<span id="changed">|</span><p>Para que la JVM pueda utilizar p&aacute;ginas grandes, el sistema debe tener un n&uacute;mero
<span id="changed">|</span>adecuado de p&aacute;ginas grandes contiguas disponibles. Si no se pueden asignar
<span id="changed">|</span>p&aacute;ginas grandes, aunque haya suficientes p&aacute;ginas disponibles, es probable
<span id="changed">|</span>que las p&aacute;ginas grandes no sean contiguas.</p>
<span id="changed">|</span><p>Las asignaciones de p&aacute;ginas grandes s&oacute;lo se realizar&aacute;n
<span id="changed">|</span>satisfactoriamente si la pol&iacute;tica administrativa local para el usuario JVM
<span id="changed">|</span>est&aacute; configurada para permitir "Bloquear las p&aacute;ginas en la memoria". </p></font>
<a name="wq60"></a>
<h2 id="wq60"><a href="#ToC_54">Soporte CORBA</a></h2>
<p>J2SE (Java 2 Platform, Standard Edition) da soporte, como m&iacute;nimo, a las
especificaciones definidas en el <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/doc-files/compliance.html">soporte de
Especificaciones oficiales de CORBA en J2SE (V1.5)</a>. 
En algunos casos, el IBM J2SE ORB da soporte a versiones m&aacute;s recientes de las
especificaciones. </p>
<a name="wq61"></a>
<h3 id="wq61"><a href="#ToC_55">Soporte de GIOP 1.2</a></h3>
<p>Este SDK da soporte a todas las versiones de GIOP, tal como se define en los
cap&iacute;tulos 13 y 15 de la especificaci&oacute;n CORBA 2.3.1, en el documento de OMG
<em>formal/99-10-07</em>, que puede obtener en:</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>El GIOP bidireccional no est&aacute; soportado. </p>
<a name="wq62"></a>
<h3 id="wq62"><a href="#ToC_56">Soporte de interceptores port&aacute;tiles</a></h3>
<p>Este SDK da soporte a los interceptores port&aacute;tiles, tal como se define en el
OMG en el documento <em>ptc/01-03-04</em>, que puede
obtener en: </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>Los interceptores port&aacute;tiles son enganches al ORB mediante los cuales los
servicios ORB pueden interceptar el flujo de normal de ejecuci&oacute;n del ORB. </p>
<a name="wq63"></a>
<h3 id="wq63"><a href="#ToC_57">Soporte de Servicio de nombres interoperativo</a></h3>
<p>Este SDK da soporte al Servicio de nombres interoperativo, tal como se define
en el OMG en el documento <em>ptc/00-08-07</em>, que puede obtener
en: </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>El puerto por omisi&oacute;n que utiliza el Servidor de nombres transitorios (el mandato
<tt>tnameserv</tt>), cuando no se proporciona ning&uacute;n par&aacute;metro
<strong>ORBInitialPort</strong>, ha cambiado de <em>900</em> a
<em>2809</em>, que es el n&uacute;mero de puerto registrado con IANA
(Internet Assigned Number Authority) para un Servicio de nombres CORBA. Puede que
tenga que actualizar los programas que dependen de este valor por omisi&oacute;n para que
funcionen con esta versi&oacute;n. </p>
<p>El contexto inicial que se devuelve del Servidor de nombres transitorios es ahora
<tt>org.omg.CosNaming.NamingContextExt</tt>. Los programas
existentes que reducen la referencia a un contexto
<tt>org.omg.CosNaming.NamingContext</tt> contin&uacute;an funcionando, y
no se tienen que volver a compilar. </p>
<p>El ORB da soporte a los par&aacute;metros <strong>-ORBInitRef</strong> y
<strong>-ORBDefaultInitRef</strong> definidos por la especificaci&oacute;n de Servicio
de nombres interoperativo, y la operaci&oacute;n ORB::string_to_object da soporte ahora a
los formatos de serie de ObjectURL (corbaloc: y corbaname:) definidos por la
especificaci&oacute;n de Servicio de nombres interoperativo. </p>
<p>El OMG especifica un m&eacute;todo ORB::register_initial_reference para registrar un
servicio con el Servicio de nombres interoperativo. No obstante, este m&eacute;todo no est&aacute;
disponible en la API Sun Java Core Versi&oacute;n 5.0. Los programas que necesiten registrar
un servicio en la versi&oacute;n actual deben invocar este m&eacute;todo en la clase de
implementaci&oacute;n de ORB interna de IBM. Por ejemplo, para registrar un servicio
"MiServicio":</p>
<p></p>
<pre class="xmp">((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MiServicio",
serviceRef); </pre>
<p>donde <tt>orb</tt> es una instancia de <tt>org.omg.CORBA.ORB</tt> que se devuelve de <tt>ORB.init()</tt>, y
<tt>serviceRef</tt> es un objeto CORBA que est&aacute; conectado al ORB.
Este mecanismo es provisional, y no es compatible con las pr&oacute;ximas versiones ni
puede trasladarse a otros ORB que no sean de IBM. </p>
<a name="wq64"></a>
<h3 id="wq64"><a href="#ToC_58">Propiedades del sistema para rastrear el ORB</a></h3>
<p>Una caracter&iacute;stica de depuraci&oacute;n en tiempo de ejecuci&oacute;n proporciona una capacidad
de servicio mejorada. Es muy &uacute;til para el diagn&oacute;stico de problemas o puede
solicitarla el personal de servicio de IBM. El rastreo se controla mediante tres
propiedades del sistema. </p>
<ul>
<li>Para activar el rastreo, establezca <tt><strong>com.ibm.CORBA.Debug</strong>=true</tt>.</li>
<li>Para dar formato y a&ntilde;adirlo a los mensajes de GIOP de rastreo enviados y
recibidos, establezca
<tt><strong>com.ibm.CORBA.CommTrace</strong>=true</tt>.
Por omisi&oacute;n, el rastreo de ORB se env&iacute;a a archivos que tienen nombres con el formato
orbtrc.DDMMYYYY.HHmm.SS.txt.</li>
<li>Para enviarlo a un archivo diferente, establezca <tt><strong>com.ibm.CORBA.Debug.Output</strong>=&lt;nombrearchivo></tt>. </li></ul><p class="indatacontent"> Por ejemplo, para rastrear sucesos y mensajes de GIOP formateados, escriba: </p>
<pre class="xmp"> java -Dcom.ibm.CORBA.Debug=true  
		-Dcom.ibm.CORBA.CommTrace=true miapli   </pre><p class="indatacontent"> </p>
<p>No active el rastreo para operaciones normales, ya que puede disminuir el
rendimiento. Aunque haya desactivado el rastreo, FFDC (First Failure Data
Capture) contin&uacute;a funcionando, de forma que s&oacute;lo se notifican los errores graves.
Si se genera un archivo de salida de depuraci&oacute;n, exam&iacute;nelo para comprobar el
problema. Por ejemplo, puede que se haya detenido el servidor sin ejecutar ORB.shutdown().</p>
<p>El contenido y el formato de la salida de rastreo variar&aacute; seg&uacute;n la versi&oacute;n.</p>
<a name="wq65"></a>
<h3 id="wq65"><a href="#ToC_59">Propiedades del sistema para ajustar el
ORB</a></h3>
<p>Las siguientes propiedades permiten ajustar el ORB:</p>
<ul>
<li>Para controlar la fragmentaci&oacute;n de GIOP 1.2, establezca la propiedad del sistema
<strong>com.ibm.CORBA.FragmentSize</strong>.
<p>Por ejemplo, para establecer el
tama&ntilde;o de fragmento en 4096 bytes:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.FragmentSize=4096 miapli
</pre>
<p>El tama&ntilde;o de fragmento por omisi&oacute;n es 1024 bytes. Para desactivar la
fragmentaci&oacute;n, establezca el tama&ntilde;o de fragmento en 0.</p> </li>
<li>En una red heterog&eacute;nea, la respuesta a una petici&oacute;n CORBA se puede retrasar o
perder. Puede establecer el tiempo m&aacute;ximo de espera utilizando la propiedad del
sistema <strong>com.ibm.CORBA.RequestTimeout</strong>. Asimismo, puede
utilizar <strong>com.ibm.CORBA.LocateRequestTimeout</strong> para controlar el
tiempo de espera de LocateRequests. Por ejemplo, para restringir los dos retardos a
30 segundos, escriba: 
<pre class="xmp">java -Dcom.ibm.CORBA.RequestTimeout=30 
     -Dcom.ibm.CORBA.LocateRequestTimeout=30 miapli</pre>
<p>Por omisi&oacute;n, el ORB
espera indefinidamente una respuesta. No establezca el tiempo de espera
demasiado bajo y as&iacute; evitar&aacute; que las conexiones finalicen de forma
innecesaria. </p></li>
<li>Si el programa proporciona un servicio en la red, deber&aacute; establecer el n&uacute;mero
del puerto desde el que el ORB lee las peticiones entrantes en un valor conocido.
Puede controlarlo utilizando la propiedad del sistema <strong>com.ibm.CORBA.ListenerPort</strong>.
<p> Por ejemplo, para que el ORB utilice el puerto
1050, escriba: </p>
<pre class="xmp">java -Dcom.ibm.CORBA.ListenerPort=1050 miapli</pre>
<p>Si se establece esta propiedad, el ORB empieza a escuchar tan pronto como se
inicializa. De lo contrario, empieza a escuchar s&oacute;lo cuando sea necesario. </p></li></ul>
<a name="wq66"></a>
<h3 id="wq66"><a href="#ToC_60">Permisos de seguridad de Java 2 para el ORB</a></h3>
<p>Cuando se ejecuta con Java 2 SecurityManager, la invocaci&oacute;n de algunos
m&eacute;todos en las clases de la API CORBA puede provocar comprobaciones de permisos,
que pueden generar una SecurityException. Los m&eacute;todos afectados son los
siguientes: </p>
<p></p>
<a name="corbatable"></a>
<table id="corbatable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabla 2. M&eacute;todos afectados cuando se ejecuta con Java 2 SecurityManager</caption>
<thead valign="bottom">
<tr>
<th id="wq67" width="32%" align="left">Clase/Interfaz</th>
<th id="wq68" width="32%" align="left">M&eacute;todo</th>
<th id="wq69" width="34%" align="left">Permiso necesario</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq68">
<p>init</p></td>
<td headers="wq69">
<p>java.net.SocketPermission resolve</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq68">
<p>connect</p></td>
<td headers="wq69">
<p>java.net.SocketPermission listen</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq68">
<p>resolve_initial_references</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_is_a</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_non_existent</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>OutputStream _request (String, boolean)</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_get_interface_def</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>invoke</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>send_deferred</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>send_oneway</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">javax.rmi.<br />
PortableRemoteObject<br />
</div></td>
<td headers="wq68">
<p>narrow</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
</tbody>
</table>
<p>Si el programa utiliza alguno de estos m&eacute;todos, compruebe que tenga los permisos
necesarios. </p>
<a name="wq70"></a>
<h3 id="wq70"><a href="#ToC_61">Clases de implementaci&oacute;n de ORB</a></h3>
<p>Las clases de implementaci&oacute;n de ORB en este release son: </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>Estos son los valores por omisi&oacute;n, y se recomienda no establecer estas
propiedades o hacer referencia a las clases de implementaci&oacute;n directamente. A
efectos de portabilidad, haga referencia s&oacute;lo a las clases de la API CORBA, y no a
la implementaci&oacute;n. Estos valores pueden cambiar en pr&oacute;ximos releases. </p>
<a name="rmi-iiop"></a>
<h2 id="rmi-iiop"><a href="#ToC_62">RMI a trav&eacute;s de IIOP</a></h2>
<p>La Invocaci&oacute;n a m&eacute;todo remoto (RMI) de Java proporciona un mecanismo sencillo para
realizar la programaci&oacute;n Java distribuida. RMI a trav&eacute;s de IIOP (RMI-IIOP) utiliza
el protocolo IIOP (Internet Inter-ORB Protocol) est&aacute;ndar de Common Object Request
Broker Architecture (CORBA) para ampliar la RMI Java b&aacute;sica para la comunicaci&oacute;n.
Esto permite dirigir la interacci&oacute;n con otros ORB (Object Request Brokers) de CORBA,
siempre que est&eacute;n implementados en Java o en otro lenguaje de programaci&oacute;n. </p>
<p>La siguiente documentaci&oacute;n est&aacute; disponible: </p>
<ul>
<li>La gu&iacute;a <a href="http://www.ibm.com/developerworks/java/rmi-iiop">RMI-IIOP Programmer's Guide</a> es una
introducci&oacute;n a la escritura de programas RMI-IIOP. La gu&iacute;a se instala cuando se
instala esta documentaci&oacute;n. 
<br /></li>
<li>El directorio demo  contiene: 
<ul>
<li>Un ejemplo "Hello World" que puede conmutar entre los protocolos Java Remote Method
Protocol (JRMP) e IIOP (demo\rmi-iiop\hello)
<br /></li>
<li>Un ejemplo "Hello World" que interact&uacute;a con un programa IDL est&aacute;ndar (demo\rmi-iiop\idl)
<br /></li></ul></li>
<li>El documento <em>Java Language to IDL Mapping</em> es una
especificaci&oacute;n t&eacute;cnica detallada de RMI-IIOP y se puede encontrar en: 
<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_63">Implementaci&oacute;n de la agrupaci&oacute;n de manejadores de conexiones para RMI</a></h2>
<p>La agrupaci&oacute;n de hebras para manejadores de conexiones para RMI <em>no</em> est&aacute; habilitada por
omisi&oacute;n.</p>
<p>Para habilitar la agrupaci&oacute;n de conexiones implementada a nivel TCPTransport de RMI, establezca la opci&oacute;n </p>
<pre class="xmp">-Dsun.rmi.transport.tcp.connectionPool=true (o cualquier valor no nulo)</pre>
<p>Esta versi&oacute;n del Runtime Environment no tiene ning&uacute;n valor que pueda utilizarse para limitar el n&uacute;mero de hebras en
la agrupaci&oacute;n de conexiones.</p>
<p>Para obtener m&aacute;s informaci&oacute;n, consulte el sitio de Java de Sun:
<a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq71"></a>
<h2 id="wq71"><a href="#ToC_64">Soporte BiDireccional mejorado</a></h2>
<p>El IBM SDK incluye el soporte BiDireccional mejorado. Para obtener m&aacute;s
informaci&oacute;n, consulte <a href="http://www.ibm.com/developerworks/java/jdk/bidirectional/index.html">http://www-106.ibm.com/developerworks/java/jdk/bidirectional/index.html</a>.
El Javadoc para el paquete BiDirectional se suministra con el SDK en el
archivo docs/apidoc.zip.</p>
<a name="bigd"></a>
<h2 id="bigd"><a href="#ToC_65">BigDecimal mejorado</a></h2><font color="red"><span id="changed">|</span>
<span id="changed">|</span><p>A partir de Java 5.0, la clase IBM BigDecimal ha sido adoptada por Sun como
<span id="changed">|</span>java.math.BigDecimal. IBM ya no mantiene com.ibm.math.BigDecimal y se ha etiquetado
<span id="changed">|</span>como desechado. Se recomienda migrar el c&oacute;digo Java existente para que utilice
<span id="changed">|</span>java.math.BigDecimal.</p>
<span id="changed">|</span><p>El nuevo java.math.BigDecimal utiliza los mismos m&eacute;todos que los anteriores
<span id="changed">|</span>java.math.BigDecimal y com.ibm.math.BigDecimal. El c&oacute;digo existente que utiliza
<span id="changed">|</span>java.math.BigDecimal continuar&aacute; funcionando correctamente.</p>
<span id="changed">|</span><p>Para migrar el c&oacute;digo Java existente para que utilice la clase
<span id="changed">|</span>java.math.BigDecimal, cambie la sentencia import al principio del archivo java de:
<span id="changed">|</span><tt class="xph">import com.ibm.math.*; </tt> a <tt class="xph">import java.math,*;</tt>.</p></font>
<a name="wq72"></a>
<h2 id="wq72"><a href="#ToC_66">Soporte del s&iacute;mbolo de Euro</a></h2>
<p>IBM SDK y Runtime Environment establecen  el Euro como la moneda por omisi&oacute;n para los pa&iacute;ses de la Uni&oacute;n
Monetaria Europea (EMU) a partir del 1 de enero de 2002.</p>
<p>Para utilizar la moneda nacional anterior, especifique
<tt>-Duser.variant=PREEURO</tt> en la l&iacute;nea de mandatos
Java. </p>
<p>Si ejecuta los entornos locales de ingl&eacute;s de Reino Unido, dan&eacute;s o sueco y desea
utilizar el Euro, especifique <tt>-Duser.variant=EURO</tt>
en la l&iacute;nea de mandatos Java. </p>
<a name="jcommchapter"></a>
<h1 id="jcommchapter"><a href="#ToC_67">Utilizaci&oacute;n de la API Java Communications (JavaComm)</a></h1>
<p>El paquete de la interfaz de programas de aplicaci&oacute;n (API) Java
Communications (JavaComm) es un paquete opcional que se proporciona para
su uso con Runtime Environment para Windows. JavaComm se instala de forma independiente del SDK o el Runtime
Environment.</p>
<p>La API JavaComm ofrece a las aplicaciones Java un m&eacute;todo independiente de la
plataforma para ejecutar comunicaciones de puerto paralelo y serie en tecnolog&iacute;as
como, por ejemplo, correo de voz, fax y smartcards. Despu&eacute;s de grabar comunicaciones
de puerto paralelo o serie para la aplicaci&oacute;n, puede incluir esos archivos con la
aplicaci&oacute;n.</p>
<p>La API Java Communications da soporte a puertos serie Electronic Industries
Association (EIA)-232 (RS232) y puertos paralelo Institute of Electrical and
Electronics Engineers (IEEE) 1284, y est&aacute; soportada en sistemas con IBM Runtime
Environment Versi&oacute;n 5.0.</p>
<p>Utilizando la API Java Communications puede:</p>
<ul>
<li>Listar los puertos de un sistema</li>
<li>Abrir y reclamar la propiedad de los puertos</li>
<li>Resolver los conflictos de propiedad de puertos entre las aplicaciones que
utilizan la API Java Communications. </li>
<li>Realizar la supervisi&oacute;n de puertos de E/S s&iacute;ncronos y as&iacute;ncronos mediante la
notificaci&oacute;n de eventos</li>
<li>Recibir sucesos de estilo de bean que describen los cambios de estado en el
puerto</li></ul>
<a name="instcomm"></a>
<h2 id="instcomm"><a href="#ToC_68">Instalaci&oacute;n de la API Java Communications</a></h2>
<p>Aseg&uacute;rese de que hay instalada una copia del SDK o el Runtime Environment antes
de instalar la API Java Communications. </p>
<p>Para instalar la API Java Communications desde un archivo zip:</p>
<ol type="1">
<li>Guarde el archivo zip de la API Java Communications,
ibm-java2-javacomm-50-win-i386.zip, en el directorio
donde est&eacute; instalado el SDK o el Runtime Environment. Si ha realizado la instalaci&oacute;n
en el directorio por omisi&oacute;n, el directorio es C:\Archivos de programa\IBM\Java50\.</li>
<li>Descomprima el archivo. Estos archivos se extraen de la siguiente manera:
<ul>
<li>jre\lib\ext\comm.jar</li>
<li>jre\bin\ibmcomm.dll</li>
<li>jre\lib\javax.comm.properties</li>
<li>docs\javacomm\License.html</li></ul> 
<p>Si ha aceptado el directorio por omisi&oacute;n al instalar el Runtime
Environment, el archivo comm.jar estar&aacute; en C:\Archivos de programa\IBM\Java50\jre\lib\ext.</p>
<p>Si ha
descomprimido el archivo en otro directorio, los archivos se guardar&aacute;n en la misma
estructura de directorios, pero C:\Archivos de programa\IBM\Java50\ se sustituir&aacute; por el directorio donde
haya descomprimido el archivo. </p> </li></ol>
<a name="wq74"></a>
<h2 id="wq74"><a href="#ToC_69">Configuraci&oacute;n de la API Java Communications</a></h2>
<p>Despu&eacute;s de instalar la API Java Communications, debe: </p>
<ul>
<li>Cambiar la modalidad de acceso de los puertos serie y paralelo. </li>
<li>Establecer la variable de entorno PATH, si no la ha establecido al instalar
Java. Consulte el apartado <a href="#pathcons">Establecimiento de la PATH</a>.</li></ul>
<a name="wq75"></a>
<h2 id="wq75"><a href="#ToC_70">Limitaciones de impresi&oacute;n con la API Java Communications</a></h2>
<p>Si imprime con la API Java Communications, puede que tenga que pulsar
"<strong>Alimentaci&oacute;n de papel</strong>", "<strong>Continuar</strong>" u
otra opci&oacute;n similar en la impresora. </p>
<a name="wq76"></a>
<h2 id="wq76"><a href="#ToC_71">Desinstalaci&oacute;n de la API Java Communications</a></h2>
<p>Para desinstalar la API Java Communications, suprima los siguientes archivos del
directorio donde haya instalado el Runtime Environment:</p>
<ul>
<li>jre\lib\ext\comm.jar</li>
<li>jre\bin\ibmcomm.dll</li>
<li>jre\lib\javax.comm.properties</li>
<li>docs\javacomm\License.html</li></ul>
<p>Por omisi&oacute;n, el Runtime Environment se instala en el directorio C:\Archivos de programa\IBM\Java50\.</p>
<a name="wq77"></a>
<h2 id="wq77"><a href="#ToC_72">Documentaci&oacute;n de la API Java Communications</a></h2>
<p>Puede encontrar la documentaci&oacute;n y ejemplos de la API Java Communications en el
sitio Web de Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq78"></a>
<h1 id="wq78"><a href="#ToC_73">Despliegue de aplicaciones Java</a></h1>
<a name="wq79"></a>
<h2 id="wq79"><a href="#ToC_74">Utilizaci&oacute;n del Java
Plug-in</a></h2>
<p>El Java Plug-in es un plug-in de navegador Web. Si utiliza el Java Plug-in, puede
ignorar la JVM por omisi&oacute;n del navegador Web y utilizar en su lugar el Runtime
Environment que desee para ejecutar applets o beans en el navegador.</p>
<p>Debe permitir que los applets terminen de cargarse para que el navegador
no se 'cuelgue'. Por ejemplo, si utiliza el bot&oacute;n <strong>Atr&aacute;s</strong> y, a
continuaci&oacute;n, el bot&oacute;n <strong>Adelante</strong> mientras se est&aacute; cargando un
applet, puede que no se puedan cargar las p&aacute;ginas HTML. </p>
<p>El Java Plug-in est&aacute; documentado por Sun en: <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_75">Navegadores soportados</a></h3>
<p><font color="red"><span id="changed">|</span></p>
<a name="plugintable"></a>
<table id="plugintable" width="100%" summary="" border="1" frame="border" rules="all">
<caption><span id="changed">|</span><font color="red">Tabla 3. Navegadores soportados por el Java Plug-in</font></caption>
<thead valign="bottom">
<tr>
<th id="wq80" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Sistema operativo</font></th>
<th id="wq81" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Internet Explorer</font></th>
<th id="wq82" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Netscape</font></th>
<th id="wq83" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Mozilla</font></th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows 2000</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">5.5 SP2, 6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows XP</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows Server 2003</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
</tbody>
</table><span id="changed">|</span><p class="indatacontent">Tenga en cuenta que Internet Explorer 5.01, el navegador por omisi&oacute;n en
<span id="changed">|</span>Windows 2000, no est&aacute; soportado. </font></p>
<a name="wq84"></a>
<h3 id="wq84"><a href="#ToC_76">Soporte de DOM (Document Object Model) com&uacute;n</a></h3>
<p>Debido a limitaciones en determinados navegadores, es posible que no pueda implementar
todas las funciones del paquete org.w3c.dom.html. </p>
<ul>
<li>Se genera una excepci&oacute;n sun.plugin.dom.exception.NotSupportedException en algunas de estas funciones.</li>
<li>Se genera una excepci&oacute;n sun.plugin.dom.exception.InvalidStateException cuando el navegador no soporta una funci&oacute;n
particular.</li></ul>
<a name="wq85"></a>
<h3 id="wq85"><a href="#ToC_77">Utilizaci&oacute;n de par&aacute;metros DBCS</a></h3>
<p>El Java Plug-in soporta caracteres de doble byte (por ejemplo chino tradicional BIG-5, coreano, japon&eacute;s) como
par&aacute;metros para los c&oacute;digos <tt class="xph">&lt;APPLET></tt>, <tt class="xph">&lt;OBJECT></tt> y <tt class="xph">&lt;EMBED></tt>. Debe seleccionar
la codificaci&oacute;n de caracteres correcta para el documento HTML para que el Java Plug-in
pueda analizar el par&aacute;metro. Especifique la codificaci&oacute;n de caracteres para el documento HTML utilizando el c&oacute;digo
<tt class="xph">&lt;META></tt> en la secci&oacute;n <tt class="xph">&lt;HEAD></tt> de esta forma:</p>
<pre class="xmp">&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"></pre><p class="indatacontent">Este ejemplo indica al navegador que analice el archivo HTML utilizando la
codificaci&oacute;n de caracteres chinos BIG-5. Todos los par&aacute;metros se pasan correctamente al
Java Plug-in. Sin embargo, es posible que algunas versiones antiguas de navegadores no
entiendan correctamente este c&oacute;digo. En este caso, puede forzar que el navegador ignore este c&oacute;digo, pero deber&aacute; cambiar
la codificaci&oacute;n manualmente.</p>
<p>Para especificar la codificaci&oacute;n que desea utilizar para analizar el archivo HTML:</p>
<ul>
<li><strong>Internet Explorer 5/6</strong> men&uacute; Ver -> Codificaci&oacute;n</li>
<li><strong>Netscape 4:</strong> men&uacute; Ver -> Juego de caracteres </li>
<li><strong>Netscape 6:</strong> men&uacute; Ver -> Codificaci&oacute;n de caracteres</li></ul>
<a name="wq86"></a>
<h2 id="wq86"><a href="#ToC_78">Utilizaci&oacute;n de Web Start</a></h2>
<p>Puede utilizar Java Web Start para desplegar aplicaciones Java. Web Start permite
al usuario iniciar y gestionar aplicaciones directamente desde la Web. Utilizando
Java Web Start, puede iniciar aplicaciones f&aacute;cilmente desde la Web, con la garant&iacute;a
de que ejecuta la &uacute;ltima versi&oacute;n, lo que elimina los procedimientos de instalaci&oacute;n o
actualizaci&oacute;n. Java Web Start elimina la necesidad de descargar e instalar software,
lo que permite ahorrar el tiempo de las opciones de instalaci&oacute;n. </p>
<p><font color="red"><span id="changed">|</span>Adem&aacute;s de los java-vm-args que se describen en
<span id="changed">|</span><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>,
<span id="changed">|</span>Web Start da soporte a <strong>-Xgcpolicy</strong> para establecer la pol&iacute;tica
<span id="changed">|</span>de recopilaci&oacute;n de desechos. </font></p>
<p>Para obtener informaci&oacute;n sobre los navegadores que dan soporte a Web Start,
consulte el apartado <a href="#suppbrowse">Navegadores soportados</a>.</p>
<p>Para obtener m&aacute;s informaci&oacute;n sobre Web Start, consulte:
<a href="http://java.sun.com/products/javawebstart">http://java.sun.com/products/javawebstart</a> y <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>. Para obtener m&aacute;s informaci&oacute;n sobre el despliegue de aplicaciones, consulte: <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_79">Ejecuci&oacute;n de Web Start</a></h3>
<p>Puede invocar Web Start de tres formas:</p>
<ol type="1">
<li>Seleccionar un enlace en una p&aacute;gina Web que haga referencia a un archivo
.jnlp.</li>
<li>En el indicador de
mandatos, escriba
<tt class="xph">javaws &lt;URL></tt>, donde <tt class="xph">&lt;URL></tt>  es la ubicaci&oacute;n de
un archivo .jnlp. </li>
<li><font color="red"><span id="changed">|</span>Si ya ha utilizado Java Web Start para abrir la
<span id="changed">|</span>aplicaci&oacute;n, ejecute javaws
<span id="changed">|</span>desde el directorio
<span id="changed">|</span>jre\bin, para iniciar
<span id="changed">|</span>el Visor de antememoria de aplicaciones Java.</font></li></ol>
<p>Una vez descargada una aplicaci&oacute;n, &eacute;sta se almacena en la Antememoria de
aplicaciones Java. Si se vuelve a acceder a la aplicaci&oacute;n, Java Web Start descarga
una versi&oacute;n m&aacute;s reciente de la aplicaci&oacute;n, si est&aacute; disponible, y si no, utiliza la
versi&oacute;n que hay en la antememoria. </p>
<p>Si se produce un error en un archivo .jnlp (como un nombre de c&oacute;digo no v&aacute;lido),
Web Start falla sin mostrar un mensaje de error.</p>
<a name="wq88"></a>
<h2 id="wq88"><a href="#ToC_80">Env&iacute;o de aplicaciones Java</a></h2>
<p>  Una aplicaci&oacute;n Java, a diferencia de un applet Java, no se puede basar en un
navegador Web para los servicios de instalaci&oacute;n y tiempo de ejecuci&oacute;n. Cuando se
env&iacute;a una aplicaci&oacute;n Java, el paquete de software suele estar formado por los
siguientes componentes: </p>
<ul>
<li>Sus propios archivos de datos, recursos y clases
<br /></li>
<li>Un programa o un procedimiento de instalaci&oacute;n
<br /></li></ul>
<p>Para ejecutar la aplicaci&oacute;n, un usuario necesita el Runtime Environment
para Windows. El software de SDK para Windows contiene un Runtime Environment. Sin
embargo, no puede suponer que los usuarios tienen instalado el software de
SDK para Windows. </p>
<p>La licencia de software de SDK para Windows
<strong>no</strong> permite redistribuir ninguno de los archivos del SDK con
la aplicaci&oacute;n. Aseg&uacute;rese de que la m&aacute;quina de destino tenga instalada una versi&oacute;n con
licencia de SDK para Windows. </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_81">Compartimiento de datos de clases entre JVM</a></h1>
<span id="changed">|</span><p>IBM Virtual Machine (VM) permite compartir clases de aplicaci&oacute;n y de rutina de
<span id="changed">|</span>carga entre VM, almacen&aacute;ndolas en la antememoria en una memoria compartida. El
<span id="changed">|</span>compartimiento de clases reduce el consumo general de memoria virtual cuando m&aacute;s de
<span id="changed">|</span>una VM comparte una antememoria. El compartimiento de clases tambi&eacute;n reduce el
<span id="changed">|</span>tiempo de arranque de una VM una vez creada la antememoria. La antememoria de clases
<span id="changed">|</span>compartidas es independiente de la VM activa y persiste despu&eacute;s del tiempo de vida
<span id="changed">|</span>de la VM que ha iniciado la antememoria. </p>
<span id="changed">|</span><a name="wq89"></a>
<span id="changed">|</span><h2 id="wq89"><a href="#ToC_82">Visi&oacute;n general del compartimiento de
<span id="changed">|</span>clases</a></h2>
<span id="changed">|</span><p>El IBM SDK permite compartir tantas clases como sea posible, de forma
<span id="changed">|</span>transparente para el usuario. </p>
<span id="changed">|</span><a name="wq90"></a>
<span id="changed">|</span><h3 id="wq90"><a href="#ToC_83">Contenido de la antememoria</a></h3>
<span id="changed">|</span><p>La antememoria de clases compartidas contiene datos y metadatos de clases
<span id="changed">|</span>est&aacute;ticas de s&oacute;lo lectura que describen las clases. Cualquier VM puede leer o
<span id="changed">|</span>actualizar la antememoria. Las VM que comparten clases deben ser del mismo release. 
<span id="changed">|</span>Debe tener cuidado si utiliza la modificaci&oacute;n del c&oacute;digo de bytes en el
<span id="changed">|</span>tiempo de ejecuci&oacute;n. (Consulte <a href="#runtimebytecode">Modificaci&oacute;n del c&oacute;digo de bytes en el tiempo de ejecuci&oacute;n</a>.)</p>
<span id="changed">|</span><a name="wq91"></a>
<span id="changed">|</span><h3 id="wq91"><a href="#ToC_84">Actualizaci&oacute;n din&aacute;mica de la antememoria</a></h3>
<span id="changed">|</span><p>Como la antememoria de clases compartidas persiste despu&eacute;s del tiempo de vida de
<span id="changed">|</span>la VM, la antememoria se actualiza din&aacute;micamente para reflejar las modificaciones
<span id="changed">|</span>realizadas en los JAR o en las clases del sistema de archivos. La actualizaci&oacute;n
<span id="changed">|</span>din&aacute;mica hace que la antememoria sea transparente para la aplicaci&oacute;n que la
<span id="changed">|</span>utiliza. </p>
<span id="changed">|</span><a name="wq92"></a>
<span id="changed">|</span><h3 id="wq92"><a href="#ToC_85">Habilitaci&oacute;n del compartimiento de clases</a></h3>
<span id="changed">|</span><p>Habilite el compartimiento de clases utilizando la opci&oacute;n
<span id="changed">|</span><strong>-Xshareclasses</strong> cuando inicie una VM, para que la VM se conecte
<span id="changed">|</span>a una antememoria existente o cree una si no existe. Todas las clases de
<span id="changed">|</span>aplicaci&oacute;n y de rutina de carga cargadas por la VM se comparten por omisi&oacute;n. Los
<span id="changed">|</span>cargadores de clases personalizados se comparten autom&aacute;ticamente si ampl&iacute;an el
<span id="changed">|</span>cargador de clases de la aplicaci&oacute;n; de lo contrario, deben utilizar la API Helper
<span id="changed">|</span>de Java que se proporciona con la VM para acceder a la antememoria. (Consulte el
<span id="changed">|</span>apartado <a href="#adaptingclassloaders">Adaptaci&oacute;n de cargadores de clases personalizados para compartir clases</a>.)</p>
<span id="changed">|</span><a name="wq93"></a>
<span id="changed">|</span><h3 id="wq93"><a href="#ToC_86">Seguridad de antememoria</a></h3>
<span id="changed">|</span><p>El acceso a la antememoria de clases compartidas est&aacute; limitado por
<span id="changed">|</span>permisos del sistema operativo y permisos de la seguridad Java. 
<span id="changed">|</span>S&oacute;lo un cargador de
<span id="changed">|</span>clases que se haya registrado para compartir clases puede a&ntilde;adir clases a
<span id="changed">|</span>la antememoria de clases compartidas. Si un Java SecurityManager est&aacute;
<span id="changed">|</span>instalado, los cargadores de clases, excepto los cargadores de clases por
<span id="changed">|</span>omisi&oacute;n de la extensi&oacute;n, la aplicaci&oacute;n o la rutina de carga, deben obtener
<span id="changed">|</span>permiso para compartir clases a&ntilde;adiendo SharedClassPermissions al archivo
<span id="changed">|</span>java.policy. (Consulte <a href="#usingsharedclasspermissions">Utilizaci&oacute;n de SharedClassPermissions</a>.)
<span id="changed">|</span>El RuntimePermission "createClassLoader" limita la creaci&oacute;n de nuevos
<span id="changed">|</span>cargadores de clases y, por lo tanto, restringe el acceso a la
<span id="changed">|</span>antememoria. </p>
<span id="changed">|</span><a name="wq94"></a>
<span id="changed">|</span><h3 id="wq94"><a href="#ToC_87">Ciclo de vida de la antememoria</a></h3>
<span id="changed">|</span><p>En un sistema pueden existir varias antememorias, que se especifican por el
<span id="changed">|</span>nombre como una subopci&oacute;n del mandato <strong>-Xshareclasses</strong>. 
<span id="changed">|</span>Una VM s&oacute;lo puede conectarse a una antememoria cada vez. El tama&ntilde;o de la antememoria se
<span id="changed">|</span>especifica en el arranque utilizando <strong> -Xscmx&lt;n>[k|m|g]</strong>,
<span id="changed">|</span>pero despu&eacute;s este tama&ntilde;o se fija para el tiempo de vida de la antememoria. Las
<span id="changed">|</span>antememorias existen hasta que se destruyen de forma expl&iacute;cita utilizando una
<span id="changed">|</span>subopci&oacute;n en el mandato <strong>-Xshareclasses</strong> o hasta que se reinicia
<span id="changed">|</span>el sistema. </p>
<span id="changed">|</span><a name="wq95"></a>
<span id="changed">|</span><h3 id="wq95"><a href="#ToC_88">Programas de utilidad de antememoria</a></h3>
<span id="changed">|</span><p>Todos los programas de utilidad de antememoria son
<span id="changed">|</span>subopciones en el mandato <strong>-Xshareclasses</strong>. Utilice
<span id="changed">|</span><strong>-Xshareclasses:help</strong> para ver una lista de las subopciones
<span id="changed">|</span>disponibles. </p>
<span id="changed">|</span><a name="sharedclassesxoptions"></a>
<span id="changed">|</span><h2 id="sharedclassesxoptions"><a href="#ToC_89">Utilizaci&oacute;n de las opciones de la l&iacute;nea de mandatos para el compartimiento de
<span id="changed">|</span>clases</a></h2>
<span id="changed">|</span><p>El compartimiento de clases se habilita y se configura utilizando las opciones de
<span id="changed">|</span>la l&iacute;nea de mandatos <strong>-Xshareclasses</strong> y <strong>-Xscmx</strong>. </p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>-Xscmx</strong>&lt;<em>tama&ntilde;o</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Especifica el tama&ntilde;o de la antememoria. Esta opci&oacute;n se aplica s&oacute;lo si
<span id="changed">|</span>se est&aacute; creando una antememoria y no existe ninguna antememoria con el
<span id="changed">|</span>mismo nombre. El tama&ntilde;o por omisi&oacute;n
<span id="changed">|</span>de la antememoria depende de la plataforma. Para averiguar el valor de
<span id="changed">|</span>tama&ntilde;o que se est&aacute; utilizando, a&ntilde;ada <strong>-verbose:sizes</strong> como un argumento de l&iacute;nea de mandatos. El tama&ntilde;o m&iacute;nimo de la antememoria es 4
<span id="changed">|</span>KB. El tama&ntilde;o m&aacute;ximo de la antememoria depende tambi&eacute;n de la plataforma. (Consulte el
<span id="changed">|</span>apartado <a href="#cachesizelimits">L&iacute;mites del tama&ntilde;o de antememoria</a>.)</li></ul></li>
<span id="changed">|</span><li><strong>-Xshareclasses</strong>:&lt;<em>subopci&oacute;n1</em>>[,&lt;<em>subopci&oacute;n2</em>>...]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Habilita el compartimiento de clases. Puede utilizar varias subopciones, algunas
<span id="changed">|</span>de las cuales son programas de utilidad de antememoria. Los programas de utilidad de
<span id="changed">|</span>antememoria ejecutan la operaci&oacute;n necesaria en la antememoria especificada, sin
<span id="changed">|</span>iniciar la VM. Puede combinar varias subopciones, separadas por comas, pero los
<span id="changed">|</span>programas de utilidad de antememoria son mutuamente excluyentes. </li></ul>Puede utilizar las siguientes subopciones con la opci&oacute;n
<span id="changed">|</span><strong>-Xshareclasses</strong>, por ejemplo, <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>Enumera todas las opciones de la l&iacute;nea de mandatos. </li></ul></li>
<span id="changed">|</span><li><strong>name=</strong>&lt;<em>nombre</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Se conecta a una antememoria con un nombre determinado, y la crea si no existe
<span id="changed">|</span>previamente. Utilice la opci&oacute;n de programa de utilidad
<span id="changed">|</span><strong>listAllCaches</strong> para mostrar qu&eacute; antememorias hay
<span id="changed">|</span>disponibles actualmente. Si no especifica un nombre, el nombre por omisi&oacute;n
<span id="changed">|</span>"sharedcc_" se combina con el nombre del usuario actual para crear el
<span id="changed">|</span>nombre de la antememoria. </li></ul></li>
<span id="changed">|</span><li><strong>verbose</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Verbose proporciona una salida detallada sobre la actividad de E/S de
<span id="changed">|</span>la antememoria y enumera la informaci&oacute;n sobre las clases que se almacenan
<span id="changed">|</span>y se encuentran. Se proporciona un ID exclusivo a cada cargador de clases (el cargador de
<span id="changed">|</span>clases de rutina de carga es siempre 0) y la salida muestra la jerarqu&iacute;a de
<span id="changed">|</span>cargadores de clases en el trabajo, donde los cargadores de clases deben solicitar
<span id="changed">|</span>una clase a sus padres para poder cargarla ellos. Es normal ver muchas
<span id="changed">|</span>solicitudes an&oacute;malas; este comportamiento es el esperado para la jerarqu&iacute;a
<span id="changed">|</span>de cargadores de clases. Tenga en cuenta que la opci&oacute;n est&aacute;ndar
<span id="changed">|</span><strong>-verbose:class</strong> tambi&eacute;n habilita la salida verbosa
<span id="changed">|</span>del compartimiento de clases si el compartimiento de clases est&aacute;
<span id="changed">|</span>habilitado. </li></ul></li>
<span id="changed">|</span><li><strong>modified=</strong>&lt;<em>contexto modificado</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Esta opci&oacute;n es necesaria si se instala un agente de c&oacute;digo de bytes que puede
<span id="changed">|</span>modificar el c&oacute;digo de bytes en el tiempo de ejecuci&oacute;n. Si no especifica esta opci&oacute;n
<span id="changed">|</span>y se instala un agente de c&oacute;digo de bytes, no se almacena ni se encuentra ninguna
<span id="changed">|</span>clase en la antememoria. El <em>&lt;contexto modificado></em> es un
<span id="changed">|</span>descriptor elegido por el usuario; por ejemplo, "miModificaci&oacute;n1". Esto particiona
<span id="changed">|</span>la antememoria, de forma que s&oacute;lo las JVM que utilicen el contexto miModificaci&oacute;n1
<span id="changed">|</span>pueden compartir las mismas clases. Por ejemplo, si se ejecuta "HelloWorld" con un
<span id="changed">|</span>contexto de modificaci&oacute;n y, a continuaci&oacute;n, se vuelve a ejecutar con un contexto de
<span id="changed">|</span>modificaci&oacute;n diferente, aparecer&aacute;n todas las clases almacenadas dos veces en la
<span id="changed">|</span>antememoria. </li></ul></li>
<span id="changed">|</span><li><strong>destroy</strong> (opci&oacute;n de programa de utilidad)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Destruye una antememoria utilizando el nombre especificado en la subopci&oacute;n
<span id="changed">|</span><strong>name=</strong>&lt;<em>nombre</em>>. Si no se especifica
<span id="changed">|</span>el nombre, se destruye la antememoria por omisi&oacute;n. Una
<span id="changed">|</span>antememoria s&oacute;lo se puede destruir si se concluyen todas las VM que la utilizan y el
<span id="changed">|</span>usuario tiene permisos suficientes. </li></ul></li>
<span id="changed">|</span><li><strong>destroyAll</strong> (opci&oacute;n de programa de utilidad)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Intenta destruir todas las antememorias disponibles para el usuario. Una
<span id="changed">|</span>antememoria s&oacute;lo se puede destruir si se concluyen todas las VM que la utilizan y el
<span id="changed">|</span>usuario tiene permisos suficientes. </li></ul></li>
<span id="changed">|</span><li><strong>expire=</strong>&lt;<em>tiempo en minutos</em>>
<span id="changed">|</span>(opci&oacute;n de programa de utilidad)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Destruye todas las antememorias que no se han utilizado el tiempo especificado. </li></ul></li>
<span id="changed">|</span><li><strong>listAllCaches</strong> (opci&oacute;n de programa de utilidad)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Enumera todas las antememorias del sistema, indicando si se est&aacute;n
<span id="changed">|</span>utilizando y cu&aacute;ndo se utilizaron por &uacute;ltima vez. </li></ul></li>
<span id="changed">|</span><li><strong>printStats</strong> (opci&oacute;n de programa de utilidad)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Muestra informaci&oacute;n estad&iacute;stica de resumen sobre la antememoria especificada en
<span id="changed">|</span>la subopci&oacute;n <strong>name=</strong>&lt;<em>nombre</em>>. Si
<span id="changed">|</span>no se especifica el nombre, se muestran las estad&iacute;sticas de la antememoria por
<span id="changed">|</span>omisi&oacute;n. La informaci&oacute;n m&aacute;s &uacute;til que se muestra es c&oacute;mo est&aacute; de llena la antememoria y
<span id="changed">|</span>cu&aacute;ntas clases contiene. Tenga en cuenta que las clases "obsoletas" son clases que
<span id="changed">|</span>se han actualizado en el sistema de archivos y que, por lo tanto, la antememoria ha
<span id="changed">|</span>marcado como "obsoletas". Las clases obsoletas no se depuran de la antememoria. Consulte la gu&iacute;a
<span id="changed">|</span><a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> para obtener m&aacute;s informaci&oacute;n. </li></ul></li>
<span id="changed">|</span><li><strong>printAllStats</strong> (opci&oacute;n de programa de utilidad)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Muestra informaci&oacute;n detallada sobre el contenido de la antememoria especificada
<span id="changed">|</span>en la subopci&oacute;n <strong>name=</strong>&lt;<em>nombre</em>>. Si
<span id="changed">|</span>no se especifica el nombre, se muestran las estad&iacute;sticas de la antememoria por
<span id="changed">|</span>omisi&oacute;n. Cada clase aparece en orden cronol&oacute;gico junto con una referencia a la
<span id="changed">|</span>ubicaci&oacute;n desde la que se ha cargado. Consulte la gu&iacute;a
<span id="changed">|</span><a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> para obtener m&aacute;s informaci&oacute;n. </li></ul></li></ul></li></ul>
<span id="changed">|</span><a name="wq96"></a>
<span id="changed">|</span><h2 id="wq96"><a href="#ToC_90">C&oacute;mo crear, llenar, supervisar y suprimir una antememoria</a></h2>
<span id="changed">|</span><p>Para habilitar el compartimiento de clases, a&ntilde;ada
<span id="changed">|</span><strong>-Xshareclasses[:name=&lt;nombre>]</strong> en la l&iacute;nea de mandatos de la
<span id="changed">|</span>aplicaci&oacute;n. La VM se conectar&aacute; a una antememoria existente con el nombre
<span id="changed">|</span>proporcionado o crear&aacute; una nueva antememoria con ese nombre. Si se crea
<span id="changed">|</span>una nueva antememoria, se llenar&aacute; con todas las clases de aplicaci&oacute;n y de
<span id="changed">|</span>rutina de carga que se est&aacute;n cargando hasta que se llena la antememoria. Si se inician dos o m&aacute;s VM simult&aacute;neamente, todas llenar&aacute;n la
<span id="changed">|</span>antememoria de forma simult&aacute;nea.</p>
<span id="changed">|</span><p>Para comprobar que se ha creado la antememoria, ejecute <tt class="xph">java
<span id="changed">|</span>-Xshareclasses:listAllCaches</tt>. Para ver cu&aacute;ntas clases y
<span id="changed">|</span>cu&aacute;ntos datos de clases se est&aacute;n compartiendo, ejecute <tt class="xph">java
<span id="changed">|</span>-Xshareclasses:[name=&lt;nombre>],printStats</tt>. (Estos programas de utilidad se
<span id="changed">|</span>pueden ejecutar cuando la VM de aplicaci&oacute;n haya terminado o en otra ventana de
<span id="changed">|</span>mandatos). </p>
<span id="changed">|</span><p>Para ver las clases que se est&aacute;n cargando desde la antememoria o que se han
<span id="changed">|</span>almacenado en la antememoria, a&ntilde;ada
<span id="changed">|</span><tt class="xph">-Xshareclasses:[name=&lt;nombre>],verbose</tt> en la l&iacute;nea de mandatos de la
<span id="changed">|</span>aplicaci&oacute;n. </p>
<span id="changed">|</span><p>Para suprimir la antememoria creada, ejecute <tt class="xph">java
<span id="changed">|</span>-Xshareclasses:[name=&lt;nombre>],delete</tt>. Las antememorias s&oacute;lo se deben
<span id="changed">|</span>suprimir si contienen muchas clases obsoletas o si la antememoria est&aacute; llena y desea
<span id="changed">|</span>crear una antememoria mayor. </p>
<span id="changed">|</span><p>Se recomienda que ajuste el tama&ntilde;o de antememoria para la aplicaci&oacute;n
<span id="changed">|</span>espec&iacute;fica porque es poco probable que el valor por omisi&oacute;n sea el tama&ntilde;o
<span id="changed">|</span>&oacute;ptimo. La mejor forma de determinar el tama&ntilde;o &oacute;ptimo de antememoria es
<span id="changed">|</span>especificar una antememoria grande mediante <strong> -Xscmx</strong>,
<span id="changed">|</span>ejecutar la aplicaci&oacute;n y, a continuaci&oacute;n, utilizar printStats para
<span id="changed">|</span>determinar cu&aacute;ntos datos de clases se han almacenado. A&ntilde;ada una peque&ntilde;a
<span id="changed">|</span>cantidad al valor mostrado en printStats por si se produce alguna
<span id="changed">|</span>contingencia. Tenga en cuenta que como las clases se pueden cargar en
<span id="changed">|</span>cualquier momento durante la vida de la VM, es mejor realizar este
<span id="changed">|</span>an&aacute;lisis despu&eacute;s de que la aplicaci&oacute;n haya finalizado. No
<span id="changed">|</span>obstante, una antememoria completa no tiene ning&uacute;n impacto
<span id="changed">|</span>negativo en el rendimiento o capacidad de cualquier VM conectada a
<span id="changed">|</span>ella, de modo que es leg&iacute;timo decidir un tama&ntilde;o de antememoria menor
<span id="changed">|</span>que el necesario. </p>
<span id="changed">|</span><p>Si se llena una antememoria, se emite un mensaje a la l&iacute;nea de
<span id="changed">|</span>mandatos de todas las VM que utilicen la antememoria y &eacute;stas cargan
<span id="changed">|</span>cualquier otra clase en su propia memoria de proceso. Las clases de una antememoria llena todav&iacute;a se
<span id="changed">|</span>pueden compartir, pero una antememoria llena es de s&oacute;lo lectura y no se
<span id="changed">|</span>puede actualizar con nuevas clases. </p>
<span id="changed">|</span><a name="wq97"></a>
<span id="changed">|</span><h2 id="wq97"><a href="#ToC_91">Rendimiento y consumo de memoria</a></h2>
<span id="changed">|</span><p>El compartimiento de clases es particularmente &uacute;til en los sistemas que
<span id="changed">|</span>utilizan m&aacute;s de una VM con un c&oacute;digo similar, ya que &eacute;stos se benefician
<span id="changed">|</span>del consumo reducido de memoria virtual. Tambi&eacute;n es &uacute;til en los sistemas
<span id="changed">|</span>que arrancan y concluyen las VM con frecuencia, ya que &eacute;stos se benefician
<span id="changed">|</span>de la mejora en el tiempo de arranque. </p>
<span id="changed">|</span><p>La carga adicional que supone crear y llenar una nueva antememoria es m&iacute;nima. 
<span id="changed">|</span>El coste del tiempo de arranque de la VM para una &uacute;nica VM se encuentra
<span id="changed">|</span>normalmente entre el 0 y el 5%, dependiendo de cu&aacute;ntas clases se carguen. La mejora en
<span id="changed">|</span>el tiempo de arranque de la VM con una antememoria que se ha llenado de
<span id="changed">|</span>clases se encuentra normalmente entre el 10% y el 40%, dependiendo del
<span id="changed">|</span>sistema operativo y del n&uacute;mero de clases cargadas. Varias VM en ejecuci&oacute;n
<span id="changed">|</span>de forma concurrente mostrar&aacute;n m&aacute;s ventajas relacionadas con el tiempo de
<span id="changed">|</span>arranque global. </p>
<span id="changed">|</span><p>Cuando se ejecuta la aplicaci&oacute;n con el compartimiento de clases, se pueden
<span id="changed">|</span>utilizar las herramientas del sistema operativo para ver la reducci&oacute;n en el consumo
<span id="changed">|</span>de la memoria virtual. </p>
<span id="changed">|</span><a name="wq98"></a>
<span id="changed">|</span><h2 id="wq98"><a href="#ToC_92">Limitaciones y consideraciones al utilizar el
<span id="changed">|</span>compartimiento de clases</a></h2>
<span id="changed">|</span><a name="cachesizelimits"></a>
<span id="changed">|</span><h3 id="cachesizelimits"><a href="#ToC_93">L&iacute;mites del tama&ntilde;o de antememoria</a></h3>
<span id="changed">|</span><p>El tama&ntilde;o m&aacute;ximo de antememoria te&oacute;rico es 2GB. La
<span id="changed">|</span>antememoria estar&aacute; limitada por los siguientes
<span id="changed">|</span>factores:</p>
<span id="changed">|</span><p></p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li>Espacio de disco disponible. Se crea un archivo en el disco para
<span id="changed">|</span>almacenar los datos de clases en el directorio "javasharedresources" bajo
<span id="changed">|</span>el perfil de usuario. Este
<span id="changed">|</span>directorio est&aacute; normalmente establecido en C:\Documents and
<span id="changed">|</span>Settings\&lt;nonmbreusuario>\Application Data\.
<span id="changed">|</span>Este archivo se suprime cada vez que se reinicia
<span id="changed">|</span>Windows. </li>
<span id="changed">|</span><li>Espacio de direcciones virtuales. Como el espacio de direcciones
<span id="changed">|</span>virtuales es un proceso que se comparte entre la antememoria de clases
<span id="changed">|</span>compartidas y el almacenamiento din&aacute;mico de Java, si aumenta el tama&ntilde;o
<span id="changed">|</span>m&aacute;ximo del almacenamiento din&aacute;mico Java, se reducir&aacute; el tama&ntilde;o de la
<span id="changed">|</span>antememoria de clases compartidas que puede crear.</li></ul>
<span id="changed">|</span><a name="runtimebytecode"></a>
<span id="changed">|</span><h3 id="runtimebytecode"><a href="#ToC_94">Modificaci&oacute;n del c&oacute;digo de bytes en el tiempo de ejecuci&oacute;n</a></h3>
<span id="changed">|</span><p>Una VM que utiliza un agente JVMTI que puede modificar el c&oacute;digo de bytes no
<span id="changed">|</span>puede compartir clases, a menos que se utilice la subopci&oacute;n
<span id="changed">|</span>modified=&lt;contexto_modificado> en la l&iacute;nea de mandatos (ver arriba). El contexto
<span id="changed">|</span>modificado es un descriptor especificado por el usuario que describe el tipo de
<span id="changed">|</span>modificaci&oacute;n que se est&aacute; realizando. Todas las VM que utilicen un determinado
<span id="changed">|</span>contexto modificado deben modificar el c&oacute;digo de bytes de forma predecible y
<span id="changed">|</span>repetible para cada clase, para que las clases modificadas almacenadas en la
<span id="changed">|</span>antememoria tengan las modificaciones esperadas cuando las cargue otra VM. 
<span id="changed">|</span>El motivo por el que una modificaci&oacute;n debe ser predecible es que el agente
<span id="changed">|</span>no puede volver a modificar las clases cargadas desde la antememoria de
<span id="changed">|</span>clases compartidas. Tenga en
<span id="changed">|</span>cuenta que el c&oacute;digo de bytes modificado y no modificado se puede almacenar en la
<span id="changed">|</span>misma antememoria. Consulte la gu&iacute;a <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
<span id="changed">|</span>Guide</a> para obtener m&aacute;s informaci&oacute;n sobre este tema. </p>
<span id="changed">|</span><a name="wq99"></a>
<span id="changed">|</span><h3 id="wq99"><a href="#ToC_95">Limitaciones del sistema operativo</a></h3>
<span id="changed">|</span><p>En los sistemas operativos que pueden ejecutar aplicaciones de
<span id="changed">|</span>32 bits y 64 bits, el compartimiento de clases no est&aacute; permitido entre VM de 32 bits
<span id="changed">|</span>y 64 bits. La subopci&oacute;n <strong>listAllCaches</strong> listar&aacute; las antememorias
<span id="changed">|</span>de 32 bits o 64 bits, dependiendo de la modalidad de direcci&oacute;n de la VM que se est&aacute;
<span id="changed">|</span>utilizando. </p>
<span id="changed">|</span><p>La antememoria de clases compartidas necesita espacio de disco para almacenar
<span id="changed">|</span>informaci&oacute;n de identificaci&oacute;n acerca de las antememorias que existen en el sistema.
<span id="changed">|</span>Esta informaci&oacute;n se encuentra en el directorio de perfiles de
<span id="changed">|</span>usuario.  Si se suprime el directorio de informaci&oacute;n de
<span id="changed">|</span>identificaci&oacute;n, la VM no podr&aacute; identificar las clases compartidas en el sistema y
<span id="changed">|</span>deber&aacute; volver a crear la antememoria.</p>
<span id="changed">|</span><p>Los permisos para
<span id="changed">|</span>acceder a una antememoria de clases compartidas vienen determinados por el
<span id="changed">|</span>sistema operativo. Si no se especifica un nombre de antememoria, se a&ntilde;ade el nombre de
<span id="changed">|</span>usuario al nombre por omisi&oacute;n para que varios usuarios en el mismo sistema puedan
<span id="changed">|</span>crear sus propias antememorias por omisi&oacute;n. </p>
<span id="changed">|</span><a name="usingsharedclasspermissions"></a>
<span id="changed">|</span><h3 id="usingsharedclasspermissions"><a href="#ToC_96">Utilizaci&oacute;n de SharedClassPermissions</a></h3>
<span id="changed">|</span><p>Si un SecurityManager se est&aacute; utilizando junto con el compartimiento
<span id="changed">|</span>de clases y la aplicaci&oacute;n en ejecuci&oacute;n utiliza sus propios cargadores de
<span id="changed">|</span>clases, &eacute;stos deben obtener SharedClassPermissions antes de que puedan
<span id="changed">|</span>compartir clases. Debe a&ntilde;adir SharedClassPermissions
<span id="changed">|</span>al archivo java.policy utilizando el nombre de clase del cargador de
<span id="changed">|</span>clases (se pueden utilizar comodines) y "read", "write" o "read,write"
<span id="changed">|</span>para determinar el acceso otorgado. Por ejemplo:</p>
<span id="changed">|</span><pre class="xmp">permission
<span id="changed">|</span>com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*",
<span id="changed">|</span>"read,write";</pre><p class="indatacontent">Si un cargador de clases no tiene el SharedClassPermission correcto
<span id="changed">|</span>e intenta compartir clases, se generar&aacute; una excepci&oacute;n AccessControlException. 
<span id="changed">|</span>No puede cambiar o reducir los permisos de los cargadores de clases de la
<span id="changed">|</span>extensi&oacute;n, la aplicaci&oacute;n o la rutina de carga.</p>
<span id="changed">|</span><a name="adaptingclassloaders"></a>
<span id="changed">|</span><h2 id="adaptingclassloaders"><a href="#ToC_97">Adaptaci&oacute;n de cargadores de clases personalizados para compartir clases</a></h2>
<span id="changed">|</span><p>La mayor&iacute;a de aplicaciones Java utilizar&aacute;n los propios cargadores de clases de la
<span id="changed">|</span>VM o tendr&aacute;n cargadores de clases personalizados que ampl&iacute;en
<span id="changed">|</span>java/net/URLClassLoader. Las aplicaciones que utilicen estos cargadores de
<span id="changed">|</span>clases podr&aacute;n compartir clases de rutina de carga y de aplicaci&oacute;n
<span id="changed">|</span>autom&aacute;ticamente. Los cargadores de clases
<span id="changed">|</span>personalizados que no ampl&iacute;en java/net/URLClassLoader requerir&aacute;n modificaciones para
<span id="changed">|</span>poder utilizar el compartimiento de clases. Todos los cargadores de clases
<span id="changed">|</span>personalizados deber&aacute;n obtener SharedClassPermissions si se est&aacute;
<span id="changed">|</span>utilizando un SecurityManager; para ello, consulte
<span id="changed">|</span><a href="#usingsharedclasspermissions">Utilizaci&oacute;n de SharedClassPermissions</a>. IBM proporciona
<span id="changed">|</span>varias interfaces Java para los distintos tipos de cargadores de clases
<span id="changed">|</span>personalizados, que permiten a los cargadores de clases buscar y almacenar
<span id="changed">|</span>clases en la antememoria de clases compartidas.
<span id="changed">|</span>Estas clases est&aacute;n en el paquete com.ibm.oti.shared. El Javadoc para este
<span id="changed">|</span>paquete se suministra con el SDK en el archivo docs/apidoc.zip. Consulte la gu&iacute;a
<span id="changed">|</span><a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> para obtener m&aacute;s informaci&oacute;n
<span id="changed">|</span>sobre c&oacute;mo utilizar estas interfaces. </p></font>
<a name="wq100"></a>
<h1 id="wq100"><a href="#ToC_98">Servicio y soporte de proveedores de software independientes</a></h1>
<p> Si tiene el derecho de servicios del c&oacute;digo de programa seg&uacute;n se establece en
IBM Solutions Developer Program, p&oacute;ngase en contacto con IBM Solutions Developer
Program a trav&eacute;s de su m&eacute;todo normal de acceso o en la Web en:
<a href="http://www.ibm.com/partnerworld/">http://www-1.ibm.com/partnerworld/</a>.</p>
<p>Si ha adquirido un contrato de servicio (por ejemplo, la L&iacute;nea de soporte de IBM
Personal Systems o un servicio equivalente por pa&iacute;s), los t&eacute;rminos y condiciones de
ese contrato de servicio determinan qu&eacute; servicios, si existen, tiene derecho a
recibir de acuerdo con el programa. </p>
<a name="wq101"></a>
<h1 id="wq101"><a href="#ToC_99">Accesibilidad</a></h1>
<p>Las Gu&iacute;as del usuario que se suministran con este SDK y el Runtime Environment se han
probado utilizando lectores de pantalla. Puede utilizar un lector de pantalla como
Home Page Reader o el lector de pantalla JAWS con estas Gu&iacute;as del usuario. </p>
<p>Para cambiar los tama&ntilde;os de font en las Gu&iacute;as del usuario, utilice la funci&oacute;n que
se proporciona con el navegador, que normalmente se encuentra en la opci&oacute;n de men&uacute;
<strong>Ver</strong>. </p>
<p>Los usuarios que necesiten el desplazamiento mediante teclas pueden
consultar la descripci&oacute;n de las pulsaciones m&aacute;s &uacute;tiles para las
aplicaciones Swing en "Swing Key Bindings" (Enlaces de teclas de Swing) en <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_100">Accesibilidad de iKeyman</a></h2>
<p><font color="red"><span id="changed">|</span>Adem&aacute;s de la GUI, la herramienta iKeyman proporciona la
<span id="changed">|</span>herramienta de l&iacute;nea de mandatos <strong>IKEYCMD</strong>, que tiene
<span id="changed">|</span>las mismas funciones que la GUI de iKeyman. <strong>IKEYCMD</strong> permite
<span id="changed">|</span>gestionar claves, certificados y peticiones de certificado. Puede invocar
<span id="changed">|</span><strong>IKEYCMD</strong> desde scripts de shell nativos y desde los programas
<span id="changed">|</span>que se utilizan cuando las aplicaciones necesitan a&ntilde;adir interfaces personalizadas a
<span id="changed">|</span>las tareas de gesti&oacute;n de claves y certificados. 
<span id="changed">|</span><strong>IKEYCMD</strong> puede crear archivos de base de datos de claves para
<span id="changed">|</span>todos los tipos que admite actualmente iKeyman. <strong>IKEYCMD</strong>
<span id="changed">|</span>tambi&eacute;n puede crear peticiones de certificado, importar certificados firmados por CA
<span id="changed">|</span>y gestionar certificados autofirmados. </font></p>
<p>Para ejecutar un mandato <strong>IKEYCMD</strong>, entre: </p>
<pre class="xmp">java
[-Dikeycmd.properties=&lt;archivo de propiedades>]com.ibm.gsk.ikeyman.ikeycmd
&lt;objeto> &lt;acci&oacute;n> [opciones]</pre><p class="indatacontent">donde:</p>
<dl>
<dt class="bold">&lt;objeto></dt>
<dd>es uno de los siguientes: 
<dl>
<dt class="bold">-keydb</dt>
<dd>Las acciones que se realizan en la base de datos de claves (ya sea un archivo de
base de datos de claves CMS, un archivo de conjunto de claves WebDB o una clase
SSLight)
</dd>
<dt class="bold">-cert</dt>
<dd>Acciones que se van a llevar a cabo en un certificado de una base de
claves
</dd>
<dt class="bold">-certreq</dt>
<dd>Acciones que se van a llevar a cabo en una petici&oacute;n de certificado
de una base de datos de claves
</dd>
<dt class="bold">-version</dt>
<dd>Muestra informaci&oacute;n de versi&oacute;n de <strong>IKEYCMD</strong>
</dd>
<dt class="bold">-help</dt>
<dd>Muestra la ayuda de las invocaciones de <strong>IKEYCMD</strong>. 
</dd>
</dl>
</dd>
<dt class="bold">&lt;acci&oacute;n></dt>
<dd><font color="red"><span id="changed">|</span>La acci&oacute;n espec&iacute;fica que se va a llevar a cabo en el objeto. 
<span id="changed">|</span>Para ver las acciones disponibles para un objeto, invoque
<span id="changed">|</span><strong>IKEYCMD</strong> pasando s&oacute;lo el objeto como argumento. La
<span id="changed">|</span>ayuda sensible al contexto se mostrar&aacute; indicando las acciones
<span id="changed">|</span>disponibles para ese objeto. </font>
</dd>
<dt class="bold">-Dikeycmd.properties</dt>
<dd>Especifica el nombre de un archivo de propiedades opcional que se utiliza en
esta invocaci&oacute;n Java. Se proporciona un archivo de propiedades por omisi&oacute;n,
ikeycmd.properties, como archivo de ejemplo que cualquier aplicaci&oacute;n Java puede
cambiar y utilizar. 
</dd>
</dl>
<a name="wq102"></a>
<div class="notetitle" id="wq102">Nota:</div>
<div class="notebody">Las palabras claves de objeto y acci&oacute;n deben aparecer
en la secuencia especificada. No obstante, las opciones no son posicionales y
pueden estar en cualquier secuencia, siempre que se especifiquen como un par de
opci&oacute;n y operando. </div>
<p>Para obtener m&aacute;s informaci&oacute;n, consulte la Gu&iacute;a de usuario de iKeyman
en: <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="wq103"></a>
<h2 id="wq103"><a href="#ToC_101">Recorrido del teclado de componentes JComboBox en Swing</a></h2>
<p>Si recorre la lista desplegable de un componente JComboBox con las teclas del
cursor, el bot&oacute;n o el campo editable del recuadro combinado no cambia de valor hasta
que se selecciona un elemento. Este es el comportamiento deseado para este release,
ya que mejora la accesibilidad y la utilizaci&oacute;n, al garantizar que el comportamiento
del recorrido del teclado sea coherente con el comportamiento del recorrido del
rat&oacute;n. </p>
<a name="wq104"></a>
<h2 id="wq104"><a href="#ToC_102">Accesibilidad de Web Start</a></h2>
<p>IBM Java Web Start v5.0 contiene varias mejoras de accesibilidad y utilizaci&oacute;n
con respecto al release anterior, incluido un soporte mejorado de lectores de
pantalla y un desplazamiento mediante teclas optimizado. </p>
<p>Puede utilizar la l&iacute;nea de mandatos s&oacute;lo para iniciar una aplicaci&oacute;n Java
habilitada para Web Start.  Para cambiar las opciones de preferencias, debe editar un
archivo de configuraci&oacute;n, <strong>Datos de
programa\IBM\Java\Deployment\deployment.properties</strong>
en el directorio local del usuario. Realice una copia de seguridad antes de editar
este archivo. No todas las preferencias que se pueden establecer en el Visor de
antememoria de aplicaciones Java est&aacute;n disponibles en el archivo de configuraci&oacute;n. </p>
<a name="wq105"></a>
<h1 id="wq105"><a href="#ToC_103">Nota general sobre seguridad</a></h1>
<p>Puede obtener archivos de pol&iacute;tica de jurisdicci&oacute;n no restringida de JCE en
<a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>. 
En este sitio Web tambi&eacute;n puede encontrar documentaci&oacute;n sobre los paquetes de
seguridad IBM JCE, JCEFIPS, JSSE2, JSSEFIPS, JGSS, JAAS y criptograf&iacute;a de hardware. </p>
<a name="wq106"></a>
<h1 id="wq106"><a href="#ToC_104">Limitaciones conocidas</a></h1>
<p>Tenga en cuenta estas limitaciones en IBM 32-bit SDK for Windows, v5.0:</p>
<ul>
<li>IBM 32-bit SDK for Windows, v5.0
da soporte a los siguientes entornos locales: 
<ul>
<li>Bengal&iacute; (bn_IN)</li>
<li>Malayalam (ml_IN)</li>
<li>Oriya (or_IN)</li></ul>No obstante, puede que los fonts de estos entornos locales no funcionen en
componentes AWT. 
<p></p></li>
<li>IBM 32-bit SDK for Windows, v5.0 da soporte a IPv6. <span><font color="red"><span id="changed">|</span>No obstante,
<span id="changed">|</span>como el soporte actual de IPv6 en Windows no es de pila dual, el SDK emula el
<span id="changed">|</span>comportamiento de pila dual en un sistema habilitado para IPv6. La aplicaci&oacute;n Java
<span id="changed">|</span>puede utilizar hasta dos veces el n&uacute;mero de sockets debido a la naturaleza de la
<span id="changed">|</span>emulaci&oacute;n. Para inhabilitar esta emulaci&oacute;n, inhabilite el soporte IPv6 en el SDK
<span id="changed">|</span>estableciendo la propiedad del sistema
<span id="changed">|</span><strong>java.net.preferIPv4Stack</strong> en <tt class="xph">true</tt>.</font></span>
<p></p></li>
<li>Cuando trabaje con un editor de m&eacute;todos de entrada (IME), se recomienda que complete la composici&oacute;n de
caracteres y que seleccione el candidato antes de utilizar el espacio de trabajo para cualquier otra operaci&oacute;n.
<p></p></li>
<li>La creaci&oacute;n de pares de claves DSA de longitudes inusuales puede tardar una
cantidad de tiempo considerable en las m&aacute;quinas lentas. El retardo no debe
interpretarse como que se ha colgado porque el proceso se completar&aacute; si se deja
el tiempo suficiente. El algoritmo de generaci&oacute;n de claves DSA se ha optimizado para
generar longitudes de claves est&aacute;ndar (por ejemplo, 512, 1024) m&aacute;s r&aacute;pidamente que
otras.
<p></p></li>
<li>Los cortafuegos personales pueden provocar problemas
en el c&oacute;digo NIO de Windows, lo que produce anomal&iacute;as en determinadas operaciones.
Por ejemplo, la llamada al m&eacute;todo <strong>Selector.open()</strong> puede
generar una excepci&oacute;n <tt class="xph">java.io.IOException: No se ha podido establecer la
conexi&oacute;n de bucle de retorno</tt> con la causa <tt class="xph">java.net.ConnectException:
Conexi&oacute;n denegada: connect</tt>. La excepci&oacute;n se debe a que el sistema operativo se
conecta a un puerto que est&aacute; siendo bloqueado por el cortafuegos. La JVM volver&aacute; a
intentar la operaci&oacute;n de conexi&oacute;n, solicitando al sistema operativo que elija otro
n&uacute;mero de puerto. Si despu&eacute;s de varios intentos contin&uacute;a sin poder conectarse, se
generar&aacute; la excepci&oacute;n <tt class="xph">ConnectException</tt>. 
<p>Si aparece esta excepci&oacute;n,
puede establecer la propiedad del sistema <strong>java.nio.debug=pipe</strong>
para ver qu&eacute; n&uacute;meros de puerto est&aacute;n bloqueados. </p></li>
<li>Cuando un usuario escribe texto en un AWT TextArea mientras utiliza un IME y
despu&eacute;s redimensiona la ventana de la aplicaci&oacute;n <em>antes</em> de consignar el texto, el texto se
consigna autom&aacute;ticamente.

<p></p></li>
<li>En Windows 2000 y XP, el valor por omisi&oacute;n del n&uacute;mero de
archivos que puede tener abiertos simult&aacute;neamente es demasiado bajo y dar&aacute; problemas
en las aplicaciones con una gran actividad de E/S. Para solucionar esta limitaci&oacute;n,
edite el archivo &lt;windows>\system32\CONFIG.NT y establezca los siguientes
valores: 
<ul>
<li><tt class="xph">files=200</tt></li>
<li><tt class="xph">buffers=60</tt></li></ul>donde &lt;windows> es el directorio donde se ha instalado Windows.
<p></p></li>
<li>En Windows 2000, con una profundidad de color de 32 bits, el mecanismo
DirectDraw de la JVM no vuelve a dibujar la regi&oacute;n bajo el puntero del rat&oacute;n. El
efecto es que aparecen cuadrados grises o negros en los men&uacute;s despu&eacute;s de que el
rat&oacute;n haya estado en ellos. La soluci&oacute;n es desactivar DirectDraw
(<tt> -Dsun.java2d.noddraw</tt>) o cambiar la resoluci&oacute;n de
color de la pantalla a otro valor, por ejemplo, 256 colores.
<p></p></li>
<li>Si instala la biblioteca nativa PKCS 11 en una JVM v1.4.x, debe
colocar la biblioteca en el directorio JRE bin con las otras bibliotecas nativas de
JRE. 
<p></p></li>
<li>La llamada NIO <strong>SocketChannel finishConnect()</strong> puede devolver <tt class="xph">true</tt> (el canal est&aacute; conectado) o <tt class="xph"> false</tt>
(el proceso de conexi&oacute;n no ha finalizado todav&iacute;a), o puede generar una excepci&oacute;n. En
Windows 2000, cuando se utilizan conexiones de desbloqueo, se puede devolver
<tt class="xph">false</tt> aunque previamente una llamada java a
<strong>select()</strong> haya implicado que el canal estaba preparado para el
proceso. 
<p></p></li>
<li>No puede alterar el rango de pilas de la hebra
principal Java (tambi&eacute;n conocida como hebra primordial) en el tiempo de ejecuci&oacute;n.
La hebra principal tiene un tama&ntilde;o fijo de 256 KB, determinado como el valor &oacute;ptimo
a efectos de rendimiento. Puede utilizar la opci&oacute;n <strong>-Xss</strong> para
modificar el rango de pilas s&oacute;lo en hebras distintas de la principal. Debido a este
tama&ntilde;o fijo de la hebra principal, se recomienda no forzarla con demasiada actividad
recursiva, ya que la hebra principal es m&aacute;s propensa al desbordamiento que otras
hebras. 
<p></p></li>
<li>Si escribe caracteres DBCS en un JTextArea, JTextField o JFileChooser, al cambiar de algunos IME en chino (en
particular, c&oacute;digo interno chino y Zhengma) al IME Intelligent ABC, se puede producir un volcado de la imagen de
memoria. 
<p></p></li>
<li>Los usuarios de checo deben tener en cuenta que el panel de selecci&oacute;n de idioma
de Installshield ofrece una entrada traducida en una instalaci&oacute;n que no est&aacute;
traducida. Se trata de una limitaci&oacute;n de Installshield. La serie se elige en el
sistema operativo seg&uacute;n la p&aacute;gina de c&oacute;digos. Como el polaco (para el que est&aacute;
traducida la instalaci&oacute;n) y el checo tienen los dos la p&aacute;gina de c&oacute;digos 1250,
Installshield intenta recuperar una lista de idiomas del sistema para ambos idiomas,
por lo que aparece esta serie en la lista de idiomas. 
<p></p></li>
<li>Si utiliza chino tradicional, no dirija la salida de la
aplicaci&oacute;n Java directamente al mandato <strong>more</strong>. En su lugar,
dirija la salida hacia un archivo temporal y examine el archivo por separado.

<p></p></li>
<li>Los usuarios catalanes deber&aacute;n utilizar el font Lucida Console para evitar la visualizaci&oacute;n incorrecta de las
letras may&uacute;sculas acentuadas. Esto s&oacute;lo afecta a los usuarios de Windows 2000.
<p></p></li></ul>
<a name="rcf"></a>
<h1 id="rcf"><a href="#ToC_105">Comentarios sobre esta Gu&iacute;a del usuario</a></h1>
<p>Si tiene alg&uacute;n comentario acerca de la utilidad, o no utilidad, de esta Gu&iacute;a del usuario, estaremos encantados de
conocer su opini&oacute;n a trav&eacute;s de uno de estos canales. 
Tenga en cuenta que estos canales no est&aacute;n destinados a responder consultas t&eacute;cnicas,
s&oacute;lo son para comentarios acerca de documentaci&oacute;n. Env&iacute;e sus comentarios:</p>
<ul>
<li>Por correo electr&oacute;nico a idrcf@hursley.ibm.com.</li>
<li>Por fax: 
<ul>
<li>Desde el Reino Unido: 01962 842327 </li>
<li>Desde otro lugar:&lt;c&oacute;digo internacional&gt;44 1962 842327 </li></ul> </li>
<li>Por correo a:
<div class="lines">IBM United Kingdom Ltd<br />
User Technologies,<br />
Mail Point 095<br />
Hursley Park<br />
Winchester<br />
Hampshire<br />
SO21 2JN Reino Unido <br />
</div></li></ul>
<p><strong>La letra peque&ntilde;a.</strong> Si elige enviar un mensaje a IBM, acepta que
toda la informaci&oacute;n contenida en su mensaje, incluidos los datos de respuesta, como
preguntas, comentarios, sugerencias, etc., se considerar&aacute;n no confidenciales e IBM no
tendr&aacute; ning&uacute;n tipo de obligaci&oacute;n sobre dicha informaci&oacute;n y ser&aacute; libre de reproducir,
utilizar, revelar y distribuir la informaci&oacute;n a otros sin limitaciones. Adem&aacute;s, IBM ser&aacute;
libre de utilizar cualquier idea, concepto, conocimiento o t&eacute;cnica contenido en dicha
informaci&oacute;n para cualquier tipo de prop&oacute;sito, incluyendo, pero sin limitarse al
desarrollo, fabricaci&oacute;n y marketing de productos que incluyan dicha informaci&oacute;n.</p>
<a name="notices"></a>
<h1 id="notices"><a href="#ToC_106">Avisos</a></h1>
<p> Esta informaci&oacute;n se ha desarrollado para productos y servicios que se ofrecen en los
EE.UU. IBM puede que no ofrezca los productos, servicios o caracter&iacute;sticas que se discuten en este
documento en otros pa&iacute;ses. Consulte a su representante local de IBM para obtener informaci&oacute;n
acerca de los productos y servicios actualmente disponibles en su zona. Cualquier referencia a
un producto, programa o servicio de IBM no pretende afirmar ni implica que s&oacute;lo se pueda
utilizar dicho producto, programa o servicio de IBM. En su lugar, puede utilizarse cualquier
producto, programa o servicio funcionalmente equivalente que no infrinja ninguno de los
derechos de propiedad intelectual de IBM. Sin embargo, la evaluaci&oacute;n y la verificaci&oacute;n
del funcionamiento conjuntamente con otros productos, programas o servicios que no son de
IBM es responsabilidad del usuario.</p>
<p>IBM puede tener aplicaciones patentadas o pendientes de patente que cubran el tema tratado
en este documento. La posesi&oacute;n de este documento no le otorga ninguna licencia sobre estas
patentes. Puede enviar consultas de licencias por escrito a la direcci&oacute;n siguiente:</p>
<ul>
<li>IBM Director of Licensing
<br /> IBM Corporation 
<br />North Castle Drive, Armonk 
<br />NY 10504-1758 EE.UU.
<br /></li></ul>
<p>Para consultas de licencias relacionadas con la informaci&oacute;n de doble byte (DBCS), p&oacute;ngase
en contacto con el Departamento de la propiedad intelectual de IBM de su pa&iacute;s o env&iacute;e las
consultas por escrito a la direcci&oacute;n siguiente: </p>
<ul>
<li>IBM World Trade Asia Corporation Licensing 
<br />2-31
Roppongi 3-chome, Minato-ku 
<br />Tokyo 106-0032, Jap&oacute;n
<br /></li></ul>
<p>El p&aacute;rrafo siguiente no se aplica al Reino Unido ni a cualquier otro pa&iacute;s en el que tales
disposiciones sean incoherentes con la legislaci&oacute;n nacional: </p>
<p>INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA
PUBLICACI&Oacute;N "TAL CUAL" SIN GARANT&Iacute;A DE NINGUNA CLASE, YA SEA
EXPLICITA O IMPL&Iacute;CITA, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS
GARANT&Iacute;AS IMPL&Iacute;CITAS DE NO VULNERACI&Oacute;N, COMERCIALIZACI&Oacute;N O IDONEIDAD
PARA UN PROP&Oacute;SITO DETERMINADO.
Algunos estados no contemplan la limitaci&oacute;n de responsabilidades, ni impl&iacute;citas ni expl&iacute;citas,
en determinadas transacciones, por lo que cabe la posibilidad de que esta declaraci&oacute;n no sea
aplicable en su caso.</p>
<p>Esta informaci&oacute;n puede contener imprecisiones t&eacute;cnicas o errores tipogr&aacute;ficos. 
Peri&oacute;dicamente se realizar&aacute;n modificaciones en la informaci&oacute;n aqu&iacute; contenida; dichos cambios
se incorporar&aacute;n en nuevas ediciones de la publicaci&oacute;n. IBM puede efectuar mejoras y/o cambios
en los productos y/o programas descritos en esta informaci&oacute;n en cualquier momento y sin previo
aviso.</p>
<p>Cualquier referencia hecha en esta informaci&oacute;n a sitios Web que no son de IBM se
proporciona &uacute;nicamente para su comodidad y no debe considerarse en modo alguno como promoci&oacute;n
de dichos sitios Web. Los materiales de estos sitios Web no forman parte
de los materiales de IBM para este producto y el uso que se haga de estos sitios Web es
de la entera responsabilidad del usuario.</p>
<p>IBM puede utilizar o distribuir la informaci&oacute;n que facilite de la manera que considere
apropiada sin incurrir en obligaciones con el remitente.</p>
<p>Los poseedores de la licencia de este programa que deseen obtener informaci&oacute;n acerca del
mismo con el prop&oacute;sito de permitir (i) el intercambio de informaci&oacute;n entre programas creados
independientemente y otros programas (incluido &eacute;ste) y (ii) la utilizaci&oacute;n mutua de la
informaci&oacute;n intercambiada, deben ponerse en contacto con la direcci&oacute;n siguiente:</p>
<ul>
<li>JIMMAIL@uk.ibm.com 
<br />[Contacto de Hursley Java Technology Center
(JTC)]</li></ul>
<p>Esta informaci&oacute;n estar&aacute; disponible, sujeta a los t&eacute;rminos que correspondan, lo que en
algunos casos incluir&aacute; el pago de una cuota. </p>
<p>IBM proporciona el programa con licencia descrito en este documento y todo el material con
licencia disponible para el mismo bajo los t&eacute;rminos del Acuerdo de cliente de IBM, el Acuerdo
internacional de licencia de programas IBM o cualquier acuerdo equivalente entre las dos
partes. </p>
<p>Cualquier informaci&oacute;n acerca del rendimiento que contenga el presente documento se ha
determinado en un entorno controlado. Por lo tanto, los resultados obtenidos en otros entornos
operativos pueden variar significativamente. Es posible que algunas medidas se hayan tomado en
sistemas de nivel de desarrollo y no hay garant&iacute;as de que estas medidas ser&aacute;n iguales en los
sistemas habitualmente disponibles. Asimismo, algunas mediciones pueden haber sido estimadas
mediante la extrapolaci&oacute;n. Los resultados reales pueden variar. Los usuarios de este documento
deben verificar los datos aplicables para su entorno espec&iacute;fico. </p>
<p>La informaci&oacute;n relativa a productos que no son de IBM se ha obtenido de los proveedores de
estos productos, de los anuncios p&uacute;blicos o de otras fuentes disponibles p&uacute;blicamente. IBM no
ha probado esos productos y no puede confirmar la precisi&oacute;n del rendimiento, su compatibilidad
o cualquier otra afirmaci&oacute;n relacionada con productos que no son de IBM. Las preguntas sobre
las posibilidades de los productos que no son de IBM deben dirigirse a los proveedores de
dichos productos.</p>
<a name="wq107"></a>
<h2 id="wq107"><a href="#ToC_107">Marcas registradas</a></h2>
<p>IBM es una marca registrada de International Business Machines Corporation en los
Estados Unidos y/o en otros pa&iacute;ses.</p>
<p>Java y todas las marcas y logotipos basados en Java son marcas comerciales o marcas
registradas de Sun Microsystems, Inc. en los Estados Unidos y/o en otros pa&iacute;ses. </p>
<p>Microsoft, Windows y el logotipo de Windows son
marcas registradas de Microsoft Corporation en los Estados Unidos y/o en otros
pa&iacute;ses. </p>
<p>Otros nombres de empresas, productos o servicios pueden ser marcas registradas o de
servicio de otros.</p>
<p>Este producto tambi&eacute;n est&aacute; basado en parte del trabajo de FreeType
Project. Para obtener m&aacute;s informaci&oacute;n sobre Freetype, consulte
<a href="http://www.freetype.org">http://www.freetype.org</a>.</p>
<p>Este producto incluye software desarrollado por
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>
