<?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="pt-BR" xml:lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="dc.language" scheme="rfc1766" content="pt-br" />
<meta name="dc.date" scheme="iso8601" content="2005-10-14" />
<meta name="copyright" content="(C) Direitos Autorais 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>Guia do Usu&aacute;rio</h1>
<br />
<a name="wq1"></a>
<h1 id="wq1"><a href="#ToC_1">Informa&ccedil;&otilde;es de Copyright</a></h1>
<p><strong>Nota</strong>: Antes de utilizar estas informa&ccedil;&otilde;es e o produto
que elas suportam, certifique-se de ler as informa&ccedil;&otilde;es gerais em <a href="#notices">Avisos</a>.</p>
<p>Esta edi&ccedil;&atilde;o do Guia do Usu&aacute;rio aplica-se
ao IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0 e a todos os releases, modifica&ccedil;&otilde;es e Atualiza&ccedil;&otilde;es de Servi&ccedil;os
subseq&uuml;entes, at&eacute; que seja indicado de outra maneira em novas edi&ccedil;&otilde;es.</p>
<p>(c) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo
Alto, CA 94303 USA. Todos os direitos reservados.</p>
<p>(c) Copyright International Business Machines Corporation, 1999, 2005.
Todos os direitos reservados.</p>
<p>Direitos Restritos para Usu&aacute;rios do Governo dos Estados Unidos -
Uso, duplica&ccedil;&atilde;o e divulga&ccedil;&atilde;o restritos pelo documento GSA ADP Schedule Contract
com a IBM Corporation.</p>
<a name="wq2"></a>
<h1 id="wq2"><a href="#ToC_2">Pref&aacute;cio</a></h1>
<p>Este Guia do Usu&aacute;rio oferece informa&ccedil;&otilde;es gerais sobre o IBM(R) 32-bit SDK and Runtime Environment for Windows(R), Java(TM) 2 Technology Edition, Version 5.0 e
informa&ccedil;&otilde;es espec&iacute;ficas sobre as diferen&ccedil;as da implementa&ccedil;&atilde;o da IBM comparadas
com a implementa&ccedil;&atilde;o da Sun.
Leia este Guia do Usu&aacute;rio juntamente com a documenta&ccedil;&atilde;o mais extensa encontrada no Web site da Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<p>O SDK e o Runtime Environment s&atilde;o suportados
nos seguintes produtos:</p>
<ul>
<li>       Windows 2000</li>
<li>       Windows XP</li>
<li>Windows Server 2003</li></ul>
<p>Observe que o IPv6 &eacute; suportado apenas no Windows
XP e Windows Server 2003.</p>
<p>O <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a> fornece informa&ccedil;&otilde;es
mais detalhadas sobre o IBM Virtual Machine para Java.</p>
<p>As altera&ccedil;&otilde;es t&eacute;cnicas deste Guia do Usu&aacute;rio para a Vers&atilde;o 5.0, com exce&ccedil;&atilde;o das altera&ccedil;&otilde;es menores
ou evidentes, como a atualiza&ccedil;&atilde;o de "1.4.2" para "5.0", est&atilde;o indicadas em vermelho ao
visualizar em HTML ou em uma c&oacute;pia impressa colorida e por barras verticais &agrave; esquerda das
altera&ccedil;&otilde;es.</p>
<p>Os termos "Runtime Environment" e "Java Virtual Machine" s&atilde;o utilizados alternadamente neste Guia do Usu&aacute;rio.</p>
<a name="wq3"></a>
<div id="wq3">
<h1>&Iacute;ndice</h1>
<div class="head1"><a id="ToC_1" name="ToC_1" href="#wq1" class="toclink">Informa&ccedil;&otilde;es de Copyright</a></div>
<div class="head1"><a id="ToC_2" name="ToC_2" href="#wq2" class="toclink">Pref&aacute;cio</a></div>
<div class="head1"><a id="ToC_3" name="ToC_3" href="#wq4" class="toclink">Vis&atilde;o Geral</a></div>
<div class="head2"><a id="ToC_4" name="ToC_4" href="#wq5" class="toclink">Compatibilidade entre Vers&otilde;es</a></div>
<div class="head2"><a id="ToC_5" name="ToC_5" href="#upgrading" class="toclink">Fazendo Upgrade do SDK</a></div>
<div class="head2"><a id="ToC_6" name="ToC_6" href="#wq6" class="toclink">Migrando de Outros IBM JVMs</a></div>
<div class="head1"><a id="ToC_7" name="ToC_7" href="#wq7" class="toclink">Conte&uacute;do do SDK e Runtime Environment</a></div>
<div class="head2"><a id="ToC_8" name="ToC_8" href="#wq8" class="toclink">Ferramentas do Runtime Environment</a></div>
<div class="head2"><a id="ToC_9" name="ToC_9" href="#sdktools" class="toclink">Ferramentas do SDK</a></div>
<div class="head1"><a id="ToC_10" name="ToC_10" href="#wq10" class="toclink">Instalando e Configurando o SDK e 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">Instala&ccedil;&atilde;o (Interativa) Assistida</a></div>
<div class="head3"><a id="ToC_13" name="ToC_13" href="#wq13" class="toclink">Instalando os Pacotes</a></div>
<div class="head3"><a id="ToC_14" name="ToC_14" href="#wq15" class="toclink">Instalando o Runtime Environment como a Java Virtual Machine do Sistema</a></div>
<div class="head2"><a id="ToC_15" name="ToC_15" href="#wq17" class="toclink">Instala&ccedil;&atilde;o N&atilde;o-assistida</a></div>
<div class="head2"><a id="ToC_16" name="ToC_16" href="#wq20" class="toclink">Ativando o IBM Accessibility Bridge</a></div>
<div class="head2"><a id="ToC_17" name="ToC_17" href="#wq21" class="toclink">Desativando o Suporte de Acessibilidade Java</a></div>
<div class="head2"><a id="ToC_18" name="ToC_18" href="#wq22" class="toclink">Informa&ccedil;&otilde;es para Usu&aacute;rios de Idiomas Europeus</a></div>
<div class="head2"><a id="ToC_19" name="ToC_19" href="#pathcons" class="toclink">Definindo o PATH</a></div>
<div class="head2"><a id="ToC_20" name="ToC_20" href="#wq24" class="toclink">Definindo o CLASSPATH</a></div>
<div class="head2"><a id="ToC_21" name="ToC_21" href="#wq25" class="toclink">Desinstala&ccedil;&atilde;o</a></div>
<div class="head1"><a id="ToC_22" name="ToC_22" href="#invint" class="toclink">Utilizando o Runtime Environment</a></div>
<div class="head2"><a id="ToC_23" name="ToC_23" href="#wq28" class="toclink">Op&ccedil;&otilde;es</a></div>
<div class="head3"><a id="ToC_24" name="ToC_24" href="#wq29" class="toclink">Especificando Op&ccedil;&otilde;es Java e Propriedades de Sistema</a></div>
<div class="head3"><a id="ToC_25" name="ToC_25" href="#wq31" class="toclink">Op&ccedil;&otilde;es Padr&atilde;o</a></div>
<div class="head3"><a id="ToC_26" name="ToC_26" href="#xoptions" class="toclink">Op&ccedil;&otilde;es N&atilde;o Padr&atilde;o</a></div>
<div class="head2"><a id="ToC_27" name="ToC_27" href="#wq32" class="toclink">Obtendo o N&uacute;mero de Compila&ccedil;&atilde;o e Vers&atilde;o IBM</a></div>
<div class="head2"><a id="ToC_28" name="ToC_28" href="#wq33" class="toclink">Globaliza&ccedil;&atilde;o do Comando Java</a></div>
<div class="head2"><a id="ToC_29" name="ToC_29" href="#wq34" class="toclink">Executando um Arquivo Java Automaticamente</a></div>
<div class="head2"><a id="ToC_30" name="ToC_30" href="#jaws" class="toclink">Executando Aplicativos Java com Tecnologias Auxiliares Nativas</a></div>
<div class="head2"><a id="ToC_31" name="ToC_31" href="#jit" class="toclink">O Compilador JIT (Just-In-Time)</a></div>
<div class="head3"><a id="ToC_32" name="ToC_32" href="#disjit" class="toclink">Desativando o JIT</a></div>
<div class="head3"><a id="ToC_33" name="ToC_33" href="#enajit" class="toclink">Ativando o JIT</a></div>
<div class="head3"><a id="ToC_34" name="ToC_34" href="#detjit" class="toclink">Determinando se o JIT Est&aacute; Ativado</a></div>
<div class="head2"><a id="ToC_35" name="ToC_35" href="#garbage" class="toclink">Especificando a Pol&iacute;tica de Coleta de Lixo</a></div>
<div class="head3"><a id="ToC_36" name="ToC_36" href="#wq37" class="toclink">Op&ccedil;&otilde;es de Coleta de Lixo</a></div>
<div class="head3"><a id="ToC_37" name="ToC_37" href="#wq38" class="toclink">Tempo de Pausa</a></div>
<div class="head3"><a id="ToC_38" name="ToC_38" href="#pausetimereduction" class="toclink">Redu&ccedil;&atilde;o do Tempo de Pausa</a></div>
<div class="head3"><a id="ToC_39" name="ToC_39" href="#wq39" class="toclink">Ambiente com Heaps Muito Cheios</a></div>
<div class="head2"><a id="ToC_40" name="ToC_40" href="#wq40" class="toclink">Como a JVM Processa Sinais</a></div>
<div class="head3"><a id="ToC_41" name="ToC_41" href="#sighand" class="toclink">Sinais Utilizados pela JVM </a></div>
<div class="head3"><a id="ToC_42" name="ToC_42" href="#wq46" class="toclink">Vinculando um Driver de C&oacute;digo Nativo &agrave; Biblioteca de Cadeia de Sinais</a></div>
<div class="head2"><a id="ToC_43" name="ToC_43" href="#wq47" class="toclink">Transformando Documentos XML</a></div>
<div class="head3"><a id="ToC_44" name="ToC_44" href="#wq49" class="toclink">Utilizando uma Vers&atilde;o Mais Antiga do Xerces ou Xalan</a></div>
<div class="head1"><a id="ToC_45" name="ToC_45" href="#wq50" class="toclink">Utilizando o SDK para Desenvolver os Aplicativos Java</a></div>
<div class="head2"><a id="ToC_46" name="ToC_46" href="#debugger" class="toclink">Depurando os Aplicativos Java</a></div>
<div class="head3"><a id="ToC_47" name="ToC_47" href="#jdb" class="toclink">JDB (Java Debugger)</a></div>
<div class="head2"><a id="ToC_48" name="ToC_48" href="#wq54" class="toclink">Determinando se o Aplicativo Est&aacute; Sendo Executado em uma JVM de 32 ou 64 bits </a></div>
<div class="head2"><a id="ToC_49" name="ToC_49" href="#wq55" class="toclink">Escrevendo Aplicativos JNI</a></div>
<div class="head2"><a id="ToC_50" name="ToC_50" href="#wq57" class="toclink">Trabalhando com Applets</a></div>
<div class="head3"><a id="ToC_51" name="ToC_51" href="#wq58" class="toclink">Executando Applets com o Applet Viewer</a></div>
<div class="head3"><a id="ToC_52" name="ToC_52" href="#wq59" class="toclink">Depurando Applets com o Applet Viewer</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">Configurando a Aloca&ccedil;&atilde;o da Mem&oacute;ria de P&aacute;gina Grande</a></div>
<div class="head2"><a id="ToC_54" name="ToC_54" href="#wq60" class="toclink">Suporte ao CORBA</a></div>
<div class="head3"><a id="ToC_55" name="ToC_55" href="#wq61" class="toclink">Suporte para GIOP 1.2</a></div>
<div class="head3"><a id="ToC_56" name="ToC_56" href="#wq62" class="toclink">Suporte para Interceptadores Port&aacute;teis</a></div>
<div class="head3"><a id="ToC_57" name="ToC_57" href="#wq63" class="toclink">Suporte para Servi&ccedil;o de Nomes Interoper&aacute;vel</a></div>
<div class="head3"><a id="ToC_58" name="ToC_58" href="#wq64" class="toclink">Propriedades do Sistema para Rastrear o ORB</a></div>
<div class="head3"><a id="ToC_59" name="ToC_59" href="#wq65" class="toclink">Propriedades do Sistema para Ajustar o ORB</a></div>
<div class="head3"><a id="ToC_60" name="ToC_60" href="#wq66" class="toclink">Permiss&otilde;es de Seguran&ccedil;a do Java 2 para o ORB</a></div>
<div class="head3"><a id="ToC_61" name="ToC_61" href="#wq70" class="toclink">Classes de Implementa&ccedil;&atilde;o do ORB</a></div>
<div class="head2"><a id="ToC_62" name="ToC_62" href="#rmi-iiop" class="toclink">RMI sobre IIOP</a></div>
<div class="head2"><a id="ToC_63" name="ToC_63" href="#rmi" class="toclink">Implementando o Conjunto da Rotina de Tratamento de Conex&atilde;o para RMI</a></div>
<div class="head2"><a id="ToC_64" name="ToC_64" href="#wq71" class="toclink">Suporte ao BiDirectional Avan&ccedil;ado</a></div>
<div class="head2"><a id="ToC_65" name="ToC_65" href="#bigd" class="toclink">BigDecimal Avan&ccedil;ado</a></div>
<div class="head2"><a id="ToC_66" name="ToC_66" href="#wq72" class="toclink">Suporte ao S&iacute;mbolo Euro</a></div>
<div class="head1"><a id="ToC_67" name="ToC_67" href="#jcommchapter" class="toclink">Utilizando o Java Communications API (JavaComm)</a></div>
<div class="head2"><a id="ToC_68" name="ToC_68" href="#instcomm" class="toclink">Instalando o Java Communications API</a></div>
<div class="head2"><a id="ToC_69" name="ToC_69" href="#wq74" class="toclink">Configurando o Java Communications API</a></div>
<div class="head2"><a id="ToC_70" name="ToC_70" href="#wq75" class="toclink">Limita&ccedil;&atilde;o ao Imprimir com o Java Communications API</a></div>
<div class="head2"><a id="ToC_71" name="ToC_71" href="#wq76" class="toclink">Desinstalando o Java Communications API</a></div>
<div class="head2"><a id="ToC_72" name="ToC_72" href="#wq77" class="toclink">Documenta&ccedil;&atilde;o do Java Communications API</a></div>
<div class="head1"><a id="ToC_73" name="ToC_73" href="#wq78" class="toclink">Implementando os Aplicativos Java</a></div>
<div class="head2"><a id="ToC_74" name="ToC_74" href="#wq79" class="toclink">Utilizando o Plug-in Java</a></div>
<div class="head3"><a id="ToC_75" name="ToC_75" href="#suppbrowse" class="toclink">Navegadores Suportados</a></div>
<div class="head3"><a id="ToC_76" name="ToC_76" href="#wq84" class="toclink">Suporte a DOM (Document Object Model)</a></div>
<div class="head3"><a id="ToC_77" name="ToC_77" href="#wq85" class="toclink">Utilizando Par&acirc;metros DBCS</a></div>
<div class="head2"><a id="ToC_78" name="ToC_78" href="#wq86" class="toclink">Utilizando Web Start </a></div>
<div class="head3"><a id="ToC_79" name="ToC_79" href="#installing_webstart" class="toclink">Executando o Web Start</a></div>
<div class="head2"><a id="ToC_80" name="ToC_80" href="#wq88" class="toclink">Remessa dos Aplicativos 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">Compartilhamento de Dados de Classe Entre JVMs</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_82" name="ToC_82" href="#wq89" class="toclink">Vis&atilde;o Geral sobre o Compartilhamento de Classe</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_83" name="ToC_83" href="#wq90" class="toclink">Conte&uacute;do do Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_84" name="ToC_84" href="#wq91" class="toclink">Atualiza&ccedil;&atilde;o Din&acirc;mica do Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_85" name="ToC_85" href="#wq92" class="toclink">Ativando o Compartilhamento de Classe</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_86" name="ToC_86" href="#wq93" class="toclink">Seguran&ccedil;a do Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_87" name="ToC_87" href="#wq94" class="toclink">Tempo de Vida do Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_88" name="ToC_88" href="#wq95" class="toclink">Utilit&aacute;rios do Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_89" name="ToC_89" href="#sharedclassesxoptions" class="toclink">Utilizando as Op&ccedil;&otilde;es da Linha de Comandos para Compartilhamento de Classe</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_90" name="ToC_90" href="#wq96" class="toclink">Criando, Preenchendo, Monitorando e Excluindo um Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_91" name="ToC_91" href="#wq97" class="toclink">Desempenho e Consumo de Mem&oacute;ria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_92" name="ToC_92" href="#wq98" class="toclink">Limita&ccedil;&otilde;es e Considera&ccedil;&otilde;es sobre Como Utilizar o Compartilhamento de Classe</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_93" name="ToC_93" href="#cachesizelimits" class="toclink">Limites no Tamanho do Cache</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_94" name="ToC_94" href="#runtimebytecode" class="toclink">Modifica&ccedil;&atilde;o do Bytecode de Tempo de Execu&ccedil;&atilde;o</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_95" name="ToC_95" href="#wq99" class="toclink">Limita&ccedil;&otilde;es do Sistema Operacional</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_96" name="ToC_96" href="#usingsharedclasspermissions" class="toclink">Utilizando 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">Adaptando Carregadores de Classe Personalizados &agrave;s Classes de Compartilhamento</a></div>
<div class="head1"><a id="ToC_98" name="ToC_98" href="#wq100" class="toclink">Servi&ccedil;o e Suporte para Fornecedores Independentes de Software</a></div>
<div class="head1"><a id="ToC_99" name="ToC_99" href="#wq101" class="toclink">Acessibilidade</a></div>
<div class="head2"><a id="ToC_100" name="ToC_100" href="#ikeycmd" class="toclink">Acessibilidade iKeyman</a></div>
<div class="head2"><a id="ToC_101" name="ToC_101" href="#wq103" class="toclink">Keyboard Traversal dos Componentes JComboBox no Swing</a></div>
<div class="head2"><a id="ToC_102" name="ToC_102" href="#wq104" class="toclink">Acessibilidade do Web Start </a></div>
<div class="head1"><a id="ToC_103" name="ToC_103" href="#wq105" class="toclink">Nota Geral Sobre Seguran&ccedil;a</a></div>
<div class="head1"><a id="ToC_104" name="ToC_104" href="#wq106" class="toclink">Limita&ccedil;&otilde;es Conhecidas</a></div>
<div class="head1"><a id="ToC_105" name="ToC_105" href="#rcf" class="toclink">Algum Coment&aacute;rio sobre este Guia do Usu&aacute;rio?</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">Vis&atilde;o Geral</a></h1>
<p>O IBM SDK &eacute; um ambiente de desenvolvimento
para grava&ccedil;&atilde;o e execu&ccedil;&atilde;o de applets e aplicativos compat&iacute;veis com o IBM Java 5.0 Core Application Program
Interface (API). </p>
<p>O SDK inclui o Runtime Environment para Windows, que permite
somente a execu&ccedil;&atilde;o de aplicativos Java. Se voc&ecirc; instalou o SDK, o Runtime Environment est&aacute;
inclu&iacute;do.</p>
<p>O Runtime Environment cont&eacute;m a Java Virtual Machine e os arquivos de
suporte que incluem os arquivos de classe. O Runtime Environment cont&eacute;m apenas um subconjunto das classes
localizadas no SDK e permite suportar um program Java no tempo de execu&ccedil;&atilde;o, mas
n&atilde;o permite compilar programas Java. O Runtime Environment para Windows n&atilde;o
inclui nenhuma das ferramentas de desenvolvimento, como <strong>appletviewer.exe</strong>, o compilador Java (<strong>javac.exe</strong>) ou as classes que perten&ccedil;am apenas aos sistemas de desenvolvimento.</p>
<p>Al&eacute;m das plataformas o pacote Java Communications API (Application Programming Interface)
&eacute; fornecido para utiliza&ccedil;&atilde;o com o Runtime Environment para Windows. Informa&ccedil;&otilde;es
sobre ele podem ser encontradas em <a href="#jcommchapter">Utilizando o Java Communications API (JavaComm)</a>. </p>
<a name="wq5"></a>
<h2 id="wq5"><a href="#ToC_4">Compatibilidade entre Vers&otilde;es</a></h2>
<p>Em geral, qualquer applet ou aplicativo que seja executado
com uma vers&atilde;o anterior do SDK dever&aacute; ser executado corretamente com o IBM 32-bit SDK for Windows, v5.0.
N&atilde;o h&aacute; garantia de que as classes compiladas com esta vers&atilde;o funcionem com as
vers&otilde;es anteriores.</p>
<p><font color="red"><span id="changed">|</span>O IBM 32-bit SDK for Windows, V5.0,
<span id="changed">|</span>foi criado com o Microsoft Visual Studio .NET 2003.</font></p>
<p>Para ler a documenta&ccedil;&atilde;o da Sun sobre compatibilidade, consulte o Web site da Sun em <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="upgrading"></a>
<h2 id="upgrading"><a href="#ToC_5">Fazendo Upgrade do SDK</a></h2>
<p>Se voc&ecirc; estiver fazendo upgrade do SDK de um release anterior, fa&ccedil;a backup de todos
os arquivos de configura&ccedil;&atilde;o e arquivos de pol&iacute;tica de seguran&ccedil;a antes de continuar com
o upgrade.</p>
<p>Depois do upgrade, pode ser necess&aacute;rio restaurar ou reconfigurar esses
arquivos porque o processo de upgrade pode t&ecirc;-los exclu&iacute;dos.
Verifique a sintaxe dos novos arquivos antes de restaurar os arquivos
originais porque o formato ou op&ccedil;&otilde;es de tais arquivos podem ter sido
alteradas. </p>
<a name="wq6"></a>
<h2 id="wq6"><a href="#ToC_6">Migrando de Outros IBM JVMs</a></h2>
<p>Na Vers&atilde;o
5.0, o IBM Runtime Environment para Windows cont&eacute;m novas
vers&otilde;es do IBM Java Virtual Machine e do compilador JIT (Just-In-Time). Se voc&ecirc; estiver migrando
de um IBM Runtime Environment mais antigo, observe que: </p>
<ul>
<li>A JVM biblioteca de link din&acirc;mico jvm.dll  &eacute; instalada no diret&oacute;rio jre\bin\j9vm. Isso &eacute; diferente, por
exemplo, no Runtime Environment para Windows para a Vers&atilde;o 1.4.2, onde est&aacute; instalado em jre\bin\classic. Os aplicativos nativos que utilizam a
interface de chamada JNI podem precisar incluir o novo caminho de diret&oacute;rio em sua vari&aacute;vel
ou vari&aacute;veis de ambiente para localizar a biblioteca de link din&acirc;mico JVM.</li>
<br />
<li><font color="red"><span id="changed">|</span>A JVMMI (JVM Monitoring Interface) n&atilde;o est&aacute; mais dispon&iacute;vel.
<span id="changed">|</span>Voc&ecirc; deve reescrever os aplicativos que utilizem essa API. Em vez disso, recomenda-se
<span id="changed">|</span>a utiliza&ccedil;&atilde;o da JVMTI (JVM Tool Interface). A JVMTI n&atilde;o &eacute; funcionalmente o
<span id="changed">|</span>equivalente da JVMMI. Para obter informa&ccedil;&otilde;es sobre a JVMTI, consulte <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> e o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>A nova implementa&ccedil;&atilde;o do JNI est&aacute; em conformidade com a especifica&ccedil;&atilde;o do JNI,
<span id="changed">|</span>por&eacute;m &eacute; diferente da implementa&ccedil;&atilde;o antiga. Ela retorna c&oacute;pias de objetos em vez
<span id="changed">|</span>de atribuir os objetos. Essa diferen&ccedil;a pode expor erros no c&oacute;digo do aplicativo
<span id="changed">|</span>JNI. Para obter informa&ccedil;&otilde;es sobre a depura&ccedil;&atilde;o do c&oacute;digo JNI, consulte <strong>-Xcheck:jni</strong> em <a href="#xoptions">Op&ccedil;&otilde;es N&atilde;o Padr&atilde;o</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>O formato e o conte&uacute;do dos logs detalhados do coletor de lixo obtidos
<span id="changed">|</span>utilizando <strong>-verbose:gc</strong> foram alterados. Os dados agora s&atilde;o formatados
<span id="changed">|</span>como XML. O conte&uacute;do dos dados reflete as altera&ccedil;&otilde;es na implementa&ccedil;&atilde;o da coleta de lixo
<span id="changed">|</span>na JVM, e a maioria das estat&iacute;sticas produzidas foi alterada.
<span id="changed">|</span>Voc&ecirc; deve alterar quaisquer programas que processem o resultado do GC detalhado para que
<span id="changed">|</span>funcionem com o novo formato e os novos dados. Consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a> para obter um exemplo dos novos dados do GC detalhado.</font></li>
<br />
<li>Vers&otilde;es anteriores do IBM JRE enviadas com um arquivo chamado rt.jar no
diret&oacute;rio jre/lib. No Java v1.4 e vers&otilde;es posteriores, esse arquivo foi substitu&iacute;do por
v&aacute;rios arquivos JAR que residem no diret&oacute;rio jre/lib.</li>
<br />
<li><font color="red"><span id="changed">|</span>Para obter informa&ccedil;&otilde;es adicionais sobre compatibilidade de segmento de
<span id="changed">|</span>mercado e APIs obsoletas, consulte <a href="http://java.sun.com/j2se/5.0/compatibility.html">Sun's
<span id="changed">|</span>Java 5 Compatibility Documentation </a> e
<span id="changed">|</span><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">Conte&uacute;do do SDK e Runtime Environment</a></h1>
<p>O SDK cont&eacute;m v&aacute;rias ferramentas de desenvolvimento e um JRE (Java Runtime
Environment). Esta se&ccedil;&atilde;o descreve o conte&uacute;do das ferramentas do SDK e o Runtime
Environment.</p>
<p>Os aplicativos escritos totalmente em Java <strong>n&atilde;o</strong> devem ter depend&ecirc;ncias
na estrutura de diret&oacute;rio do IBM SDK (ou arquivos desses diret&oacute;rios).  Qualquer
depend&ecirc;ncia na estrutura de diret&oacute;rio do SDK (ou os arquivos desses diret&oacute;rios)
poderiam resultar em problemas de portabilidade do aplicativo. Os aplicativos do JNI (Java Native Interface) ter&atilde;o algumas depend&ecirc;ncias menores.</p>
<a name="wq8"></a>
<h2 id="wq8"><a href="#ToC_8">Ferramentas do Runtime Environment</a></h2>
<ul>
<li>Classes Cr&iacute;ticas -- Esses s&atilde;o os arquivos das classes compartilhadas para a plataforma
e devem permanecer compactados para que o compilador e o interpretador os acessem. N&atilde;o
modifique essas classes; em vez disso, crie subclasses e substitua onde
for necess&aacute;rio. 
<br /></li>
<li>Ferramentas JRE -- As ferramentas a seguir s&atilde;o parte do Runtime Environment e est&atilde;o
no diret&oacute;rio
jre\bin, a
menos se especificado de outra forma. 
<ul>
<li> java.exe (Intepretador Java) 
<ul class="simple">
<li>Executa classes Java. O Interpretador Java executa programas que s&atilde;o escritos
na linguagem de programa&ccedil;&atilde;o Java.</li></ul>
<br /></li>
<li>javaw.exe (Interpretador Java)
<ul class="simple">
<li>Executa as classes Java da mesma forma que o comando <strong>java</strong>,
por&eacute;m n&atilde;o utiliza uma janela do console.</li></ul>
<br /></li>
<li>keytool.exe (Ferramenta de Gerenciamento de Chaves e Certificados)
<ul class="simple">
<li>Gerencia um armazenamento (banco de dados) de chaves privadas e suas cadeias
de certificados X.509 associadas que autenticam as chaves p&uacute;blicas correspondentes. </li></ul>
<br /></li>
<li>policytool.exe (Ferramenta de Cria&ccedil;&atilde;o e Gerenciamento de Arquivos
de Pol&iacute;ticas)
<ul class="simple">
<li>Cria e modifica os arquivos de configura&ccedil;&atilde;o de pol&iacute;tica externa que definem
a pol&iacute;tica de seguran&ccedil;a Java da instala&ccedil;&atilde;o.</li></ul>
<br /></li>
<li>rmid.exe (daemon do sistema de ativa&ccedil;&atilde;o do RMI)
<ul class="simple">
<li>Inicia o daemon do sistema de ativa&ccedil;&atilde;o para que esses objetos possam ser registrados
e ativados em um JVM (Java Virtual Machine).</li></ul>
<br /></li>
<li>tnameserv.exe (Servi&ccedil;o de Nomes do CORBA (Common Object Request Broker
Architecture))
<ul class="simple">
<li>Inicia o servi&ccedil;o de nomes do transiente CORBA.</li></ul>
<br /></li>
<li>rmiregistry.exe (Registro do Objeto Remoto Java)
<ul class="simple">
<li>Cria e inicia um registro de objeto remoto na porta especificada do
host atual.</li></ul>
<br /></li>
<li>ikeyman.exe (utilit&aacute;rio GUI do iKeyman)
<ul class="simple">
<li>Permite gerenciar chaves, certificados e pedidos de certificado. Para
obter mais informa&ccedil;&otilde;es, consulte o <em>Security Guide</em>
acompanhante e
<a href="http://www.ibm.com/developerworks/java/jdk/security">http://www.ibm.com/developerworks/java/jdk/security</a>. O SDK tamb&eacute;m fornece
uma vers&atilde;o da linha de comandos desse utilit&aacute;rio. Consulte <a href="#ikeycmd">Acessibilidade iKeyman</a> para obter detalhes. </li></ul>
<br /></li>
<li>jextract.exe (Extrator de dump)
<ul class="simple">
<li>Converte um dump produzido pelo sistema em um formato comum que pode ser utilizado
pelo <a href="#jformat">jdmpview</a>. Para obter mais informa&ccedil;&otilde;es, consulte <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</li></ul>
<br /></li>
<li>javaws.exe (Java
Web Start)
<ul class="simple">
<li>Ativa a implementa&ccedil;&atilde;o e a manuten&ccedil;&atilde;o autom&aacute;tica dos aplicativos Java.</li></ul>
<br /></li></ul></li></ul>
<a name="sdktools"></a>
<h2 id="sdktools"><a href="#ToC_9">Ferramentas do SDK</a></h2>
<ul>
<li>As seguintes ferramentas fazem parte do SDK e est&atilde;o localizadas no diret&oacute;rio C:\Arquivos de Programas\IBM\Java50\bin:
<ul>
<li>javac.exe (Compilador Java)
<ul class="simple">
<li>Compila programas que s&atilde;o escritos na linguagem de programa&ccedil;&atilde;o Java em
bytecodes (c&oacute;digo Java compilado).</li></ul>
<br /></li>
<li>appletviewer.exe (Java Applet Viewer)
<ul class="simple">
<li>Testa e executa applets fora de um navegador da Web.</li></ul>
<br /></li>
<li>jdb.exe (Depurador Java)
<ul class="simple">
<li>Ajuda a depurar os programas Java.</li></ul>
<br /></li>
<li>javap.exe (Class File Disassembler)
<ul class="simple">
<li>Desmonta os arquivos compilados e pode imprimir uma representa&ccedil;&atilde;o dos bytecodes.</li></ul>
<br /></li>
<li>javadoc.exe (Java Documentation Generator)
<ul class="simple">
<li>Gera p&aacute;ginas HTML da documenta&ccedil;&atilde;o de API nos arquivos de origem Java.</li></ul>
<br /></li>
<li>javah.exe (Gerador de Cabe&ccedil;alho C e Arquivo Stub)
<ul class="simple">
<li>Permite associar m&eacute;todos nativos ao c&oacute;digo escrito na linguagem de
programa&ccedil;&atilde;o Java.</li></ul>
<br /></li>
<li>jar.exe (Java Archive Tool)
<ul class="simple">
<li>Combina v&aacute;rios arquivos em um &uacute;nico arquivo JAR (Java Archive).</li></ul>
<br /></li>
<li>jarsigner.exe (Ferramenta de Assinatura e Verifica&ccedil;&atilde;o JAR)
<ul class="simple">
<li>Gera assinaturas para arquivos JAR e verifica as assinaturas dos arquivos
JAR assinados.</li></ul>
<br /></li>
<li>jconsole.exe (JConsole Monitoring and Management
Tool - experimental)
<ul class="simple">
<li>Ferramenta gr&aacute;fica compat&iacute;vel com JMX (n&atilde;o suportada) experimental para
monitoramento de JVMs locais e remotas. </li></ul>
<br /></li>
<li>native2ascii.exe (Conversor de Nativo para ASCII)
<ul class="simple">
<li>Converte um arquivo de codifica&ccedil;&atilde;o nativa em um arquivo ASCII que contenha caracteres
codificados em Latino 1 ou Unicode ou ambos.</li></ul>
<br /></li>
<li>rmic.exe (Conversor Stub do Java RMI (Remote Method
Invocation))
<ul class="simple">
<li>Gera stubs, estruturas e conex&otilde;es para objetos remotos. Inclui o suporte RMI
sobre Internet Inter-ORB Protocol (RMI-IIOP).</li></ul>
<br /></li>
<li>idlj.exe (IDL para Compilador Java)
<ul class="simple">
<li>Gera liga&ccedil;&otilde;es Java de um determinado arquivo IDL.</li></ul>
<br /></li>
<li>serialver.exe (Comando da Vers&atilde;o Serial)
<ul class="simple">
<li>Retorna o serialVersionUID para uma ou mais classes em um formato
adequado para copiar em uma classe envolvida. </li></ul>
<br /></li>
<li>extcheck.exe (Utilit&aacute;rio Extcheck)
<ul class="simple">
<li>Detecta os conflitos da vers&atilde;o entre um arquivo jar de destino e os arquivos jar
de extens&atilde;o instalados atualmente.</li></ul>
<br /></li>
<li id="jformat">
<a name="jformat"></a>jdmpview.exe (Formatador dump entre plataformas)
<ul class="simple">
<li>Uma ferramenta que permite analizar dumps. Para obter mais informa&ccedil;&otilde;es, consulte <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</li></ul>
<br /></li>
<li>htmlconverter.exe (Conversor HTML do Java Plug-in)
<ul class="simple">
<li>Converte uma p&aacute;gina HTML que contenha applets em um formato que possa utilizar o
Java Plug-in.</li></ul>
<br /></li></ul>
<br /></li>
<li>ARQUIVOS DE INCLUS&Atilde;O
<ul class="simple">
<li>Cabe&ccedil;alhos C para programas JNI.
<br /></li></ul>
<br /></li>
<li>DEMOS 
<ul class="simple">
<li>O diret&oacute;rio demo cont&eacute;m v&aacute;rios subdiret&oacute;rios que cont&ecirc;m c&oacute;digo fonte
de amostra, demos, aplicativos e applets, que voc&ecirc; pode utilizar. </li></ul>
<br /></li>
<li>DIREITOS AUTORAIS
<ul class="simple">
<li>Aviso de direitos autorais para o software SDK para Windows.</li></ul>
<br /></li>
<li>LICEN&Ccedil;A
<ul class="simple">
<li>O arquivo LICENSE,
C:\Arquivos de Programas\IBM\Java50\license, cont&eacute;m o contrato de licen&ccedil;a do software SDK para Windows
. Para exibir ou imprimir o contrato de licen&ccedil;a, abra o arquivo em um navegador da Web. </li></ul>
<br /></li></ul>
<div>
<p><strong>Nota:</strong> os Guias do Usu&aacute;rio e Javadoc, e as
 licen&ccedil;as, arquivos de direitos autorais e
diret&oacute;rio demo acompanhantes, s&atilde;o a &uacute;nica documenta&ccedil;&atilde;o inclu&iacute;da nesse
SDK para Windows. No Web site da Sun, &eacute; poss&iacute;vel tanto visualizar quanto
fazer download do pacote de documenta&ccedil;&atilde;o de software da Sun:
<a href="http://java.sun.com">http://java.sun.com</a>.</p></div>
<a name="wq10"></a>
<h1 id="wq10"><a href="#ToC_10">Instalando e Configurando o SDK e Runtime Environment</a></h1>
<a name="wq11"></a>
<h2 id="wq11"><a href="#ToC_11">Antes de Instalar</a></h2>
<p>Para instalar o pacote SDK ou Runtime Environment, fa&ccedil;a download do pacote de
instala&ccedil;&atilde;o pertinente. Certifique-se de fazer o download de todos os pacotes para o mesmo diret&oacute;rio.
Os pacotes
e seus nomes de arquivo s&atilde;o listados em <a href="#attended_installation">Instala&ccedil;&atilde;o (Interativa) Assistida</a>; n&atilde;o
altere os nomes dos arquivos dos pacotes. </p>
<p>Antes de iniciar a instala&ccedil;&atilde;o, certifique-se de que h&aacute; espa&ccedil;o suficiente no
diret&oacute;rio C:\WINDOWS\TEMP para uso durante a instala&ccedil;&atilde;o. A quantidade de espa&ccedil;o tempor&aacute;rio
necess&aacute;ria no diret&oacute;rio TEMP durante a instala&ccedil;&atilde;o &eacute;:
</p>
<ul>
<li>Pacote SDK instal&aacute;vel: 130 MB</li>
<li>Pacote Runtime Environment instal&aacute;vel: 85 MB </li></ul><p class="indatacontent">Se n&atilde;o existir espa&ccedil;o tempor&aacute;rio suficiente, o programa de
instala&ccedil;&atilde;o gerar&aacute; um erro e interromper&aacute; a instala&ccedil;&atilde;o.
Se voc&ecirc; realmente tiver espa&ccedil;o tempor&aacute;rio suficiente,
mas ainda visualizar esta mensagem, verifique se os pacotes que est&aacute;
tentando instalar foram transferidos completamente por download. Para fazer isto, compare os tamanhos dos arquivos
de seus pacotes com os tamanhos dos arquivos mostrados nas p&aacute;ginas
da Web utilizadas para download dos pacotes. </p>
<a name="attended_installation"></a>
<h2 id="attended_installation"><a href="#ToC_12">Instala&ccedil;&atilde;o (Interativa) Assistida</a></h2>
<div>
<p>Os pacotes que voc&ecirc; pode instalar s&atilde;o:</p>
<ul>
<li>Pacote SDK instal&aacute;vel: ibm-java2-sdk-50-win-i386.exe</li>
<li>Pacote Runtime Environment instal&aacute;vel: ibm-java2-jre-50-win-i386.exe</li>
<li>Pacote Runtime Environment instal&aacute;vel (somente hardware IBM): ibm-java2-jre-50-ibmpc-win-i386.exe</li></ul>
<p>Outros pacotes s&atilde;o fornecidos como arquivos zip:</p>
<ul>
<li>Pacote Runtime Environment: ibm-java2-jre-50-win-i386.zip</li>
<li>Pacote SDK: ibm-java2-sdk-50-win-i386.zip</li>
<li>Pacote Java Communications API (Application Programming Interface)
para Windows: ibm-java2-javacomm-50-win-i386.zip.
Consulte a se&ccedil;&atilde;o <a href="#instcomm">Instalando o Java Communications API</a> para obter instru&ccedil;&otilde;es de instala&ccedil;&atilde;o.</li>
<li>Pacote de documenta&ccedil;&atilde;o: ibm-java2-docs-50-win-i386.zip</li>
<li>Pacote Demos: ibm-java2-demos-50-win-i386.zip</li></ul></div>
<a name="wq13"></a>
<h3 id="wq13"><a href="#ToC_13">Instalando os Pacotes</a></h3>
<p></p>
<ol type="1">
<li>Ative o ibm-java2-sdk-50-win-i386.exe (para o SDK) ou
ibm-java2-jre-50-win-i386.exe (para o Runtime Environment somente).</li>
<li>Siga as instru&ccedil;&otilde;es do assistente de instala&ccedil;&atilde;o.</li></ol><p class="indatacontent">O Runtime Environment &eacute; instalado por padr&atilde;o no diret&oacute;rio C:\Arquivos de Programas\IBM\Java50\jre.</p>
<p>Se voc&ecirc; fizer download do pacote SDK instal&aacute;vel, poder&aacute; optar por
instalar:</p>
<ul>
<li>As ferramentas de desenvolvimento SDK (por exemplo, o compilador Java)</li>
<li>O Runtime Environment</li>
<li>O c&oacute;digo fonte das bibliotecas de classes da Sun, utilizadas por algumas ferramentas para depurar
aplicativos.</li></ul><p class="indatacontent">&Eacute; poss&iacute;vel instalar os componentes individualmente ou em combina&ccedil;&otilde;es.</p>
<p>No assistente de instala&ccedil;&atilde;o, s&atilde;o apresentadas as seguintes op&ccedil;&otilde;es:</p>
<ul>
<li><strong>T&iacute;pica</strong> - essa op&ccedil;&atilde;o instala os tr&ecirc;s componentes.</li>
<li><strong>Compacta</strong> - essa op&ccedil;&atilde;o instala apenas o Runtime
Environment.</li>
<li><strong>Personalizada</strong> - essa op&ccedil;&atilde;o permite escolher quais componentes ser&atilde;o
instalados.</li></ul>
<a name="wq15"></a>
<h3 id="wq15"><a href="#ToC_14">Instalando o Runtime Environment como a Java Virtual Machine do Sistema</a></h3>
<p>Durante a instala&ccedil;&atilde;o do Runtime Environment (como parte do pacote instal&aacute;vel
SDK ou a partir do pacote instal&aacute;vel Runtime Environment),
o programa pergunta se voc&ecirc; deseja instalar o Runtime Environment como
a JVM (Java Virtual Machine) do sistema. Se voc&ecirc; o instalar como a JVM do sistema, o programa
de instala&ccedil;&atilde;o copia os arquivos java.exe e javaw.exe no diret&oacute;rio do sistema Windows.
Se
existir atualmente uma vers&atilde;o do java.exe ou javaw.exe no diret&oacute;rio
do sistema Windows, ser&aacute; solicitado que voc&ecirc; substitua a vers&atilde;o existente
pela vers&atilde;o atual. A instala&ccedil;&atilde;o destes arquivos no diret&oacute;rio do sistema
Windows torna esse Runtime Environment a JVM padr&atilde;o do sistema. Al&eacute;m disso, a chave
de registro "Current Version" &eacute; definida para corresponder a esta instala&ccedil;&atilde;o.</p>
<a name="wq16"></a>
<div class="notetitle" id="wq16">Nota:</div>
<div class="notebody">A instala&ccedil;&atilde;o do Runtime Environment como a JVM do sistema copia
somente o java.exe e javaw.exe para o diret&oacute;rio de sistema do Windows. Nenhum outro execut&aacute;vel
(como javac.exe ou appletviewer.exe) &eacute; copiado.</div>
<a name="wq17"></a>
<h2 id="wq17"><a href="#ToC_15">Instala&ccedil;&atilde;o N&atilde;o-assistida</a></h2>
<p>Para criar uma instala&ccedil;&atilde;o n&atilde;o-assistida, &eacute; necess&aacute;rio concluir
primeiro uma instala&ccedil;&atilde;o assistida e criar um arquivo de resposta
(setup.iss) que registra as op&ccedil;&otilde;es feitas durante a instala&ccedil;&atilde;o.
O arquivo de resposta criado precisa ser correto
para os computadores em que ser&aacute; utilizado. Se necess&aacute;rio, crie v&aacute;rios arquivos de resposta para instala&ccedil;&atilde;o
de pacotes em computadores que tenham diferentes configura&ccedil;&otilde;es.</p>
<p>Para criar um arquivo de resposta durante a instala&ccedil;&atilde;o,
em um prompt de comandos digite: </p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /r</pre><p class="indatacontent">                     ou
</p>
<pre class="xmp">ibm-java2-jre-50-win-i386 /r</pre>
<p>Dependendo de seu produto Windows, um arquivo de resposta (setup.iss) &eacute; criado
no diret&oacute;rio C:\Windows ou C:\Winnt, em que C: &eacute; a unidade de inicializa&ccedil;&atilde;o.</p>
<p>A seguinte mensagem poder&aacute; ser exibida durante uma
instala&ccedil;&atilde;o interativa: </p>
<p></p>
<pre class="xmp">Outro Java Runtime Environment est&aacute; atualmente
   instalado como o System JVM. Selecione Sim para
   substituir esta vers&atilde;o ou N&atilde;o para sair desta
   instala&ccedil;&atilde;o.</pre>
<p>Se esta mensagem for exibida, selecione <strong>N&atilde;o</strong> e saia da
instala&ccedil;&atilde;o. V&aacute; para o diret&oacute;rio do sistema Windows e exclua os seguintes dois
arquivos: </p>
<ul>
<li>java.exe</li>
<li>javaw.exe</li></ul>
<p>Ap&oacute;s ter exclu&iacute;do os arquivos, reinicie a instala&ccedil;&atilde;o interativa,
utilizando o comando mostrado no in&iacute;cio desta se&ccedil;&atilde;o.</p>
<p>No sistema no qual voc&ecirc; executar&aacute; a instala&ccedil;&atilde;o n&atilde;o-assistida, copie o
arquivo de resposta setup.iss no diret&oacute;rio C:\Windows. Depois de copiar o arquivo,
em um prompt de comandos digite:</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>N&atilde;o h&aacute; espa&ccedil;os ap&oacute;s <tt>/f1</tt> ou <tt>/f2</tt>.</li>
<li>O sinalizador <tt>/f1</tt> especifica o nome e a localiza&ccedil;&atilde;o
do arquivo de resposta. O sinalizador <tt>/f2</tt> especifica o
nome e a localiza&ccedil;&atilde;o do arquivo de log.</li>
</ol>
<p>Se a instala&ccedil;&atilde;o for bem-sucedida, o arquivo de log conter&aacute; a cadeia <tt>ResultCode=0</tt>.</p>
<a name="wq20"></a>
<h2 id="wq20"><a href="#ToC_16">Ativando o IBM Accessibility Bridge</a></h2>
<p>O IBM Accessibility Bridge &eacute; instalado mas, por padr&atilde;o, fica desativado. Para ativar o
IBM Accessibility Bridge, exclua o sinal de n&uacute;mero do in&iacute;cio da
seguinte linha no arquivo Accessibility.properties, no diret&oacute;rio jre/lib:</p>
<p></p>
<pre class="xmp">#assistive_technologies=JawBridge</pre>
<p>Este Web site informa sobre os Utilit&aacute;rios de Acessibilidade:</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">Desativando o Suporte de Acessibilidade Java</a></h2>
<p>&Eacute; poss&iacute;vel desativar o suporte de Acessibilidade Java para melhorar o desempenho de carregamento
dos aplicativos Java da JVM que n&atilde;o fornecem suporte de tecnologia assistida Java,
especialmente em links da rede.</p>
<p>Para desativar o suporte de Acessibilidade Java, defina a vari&aacute;vel de ambiente <strong>JAVA_ASSISTIVE</strong> como OFF. Uma tecnologia assistida, como o JawBridge,
n&atilde;o ficar&aacute; dispon&iacute;vel se essa vari&aacute;vel de ambiente for definida como OFF, mesmo que a tecnologia
esteja ativada no arquivo Accessibility.properties.</p>
<a name="wq22"></a>
<h2 id="wq22"><a href="#ToC_18">Informa&ccedil;&otilde;es para Usu&aacute;rios de Idiomas Europeus</a></h2>
<p>No Windows, um processo tem duas p&aacute;ginas de c&oacute;digos: o p&aacute;gina de c&oacute;digos ANSI (ou Windows)
e a p&aacute;gina de c&oacute;digos OEM (ou DOS).</p>
<p>A janela de comandos normalmente utiliza a p&aacute;gina de c&oacute;digos OEM. A sa&iacute;da do console Java
utiliza a p&aacute;gina de c&oacute;digos da janela de comandos a partir da qual o Java &eacute; iniciado. No entanto,
o comando <strong>javaw</strong> sempre utiliza a p&aacute;gina de c&oacute;digos ANSI. Voc&ecirc; especifica
a p&aacute;gina de c&oacute;digos para utilizar para a sa&iacute;da do console com a op&ccedil;&atilde;o <strong>-Dconsole.encoding</strong> no comando <strong>java</strong>. Por exemplo, <strong>-Dconsole.encoding=Cp1252</strong> faz com que todas as
sa&iacute;das do console estejam na p&aacute;gina de c&oacute;digos ANSI Latino 1 (1252) do Windows.</p>
<a name="pathcons"></a>
<h2 id="pathcons"><a href="#ToC_19">Definindo o PATH</a></h2>
<p>Observe que, se voc&ecirc; alterar a vari&aacute;vel de ambiente PATH como descrito a seguir,
substituir&aacute; quaisquer arquivos execut&aacute;veis Java existentes em seu caminho. </p>
<p>Depois de instalar o SDK, voc&ecirc; poder&aacute; executar uma ferramenta digitando seu nome em um
aviso de shell com um nome de arquivo como um argumento.</p>
<p>&Eacute; poss&iacute;vel especificar o caminho para uma ferramenta digitando a cada vez o caminho antes
do nome da ferramenta. Por exemplo, se o SDK para Windows estiver instalado em C:\Arquivos de Programas\IBM\Java50\bin, voc&ecirc; poder&aacute; compilar um arquivo denominado myfile.java,
digitando o seguinte em um prompt de comando:</p>
<pre class="xmp">  "C:\Arquivos de Programas\IBM\Java50\bin\javac" myfile.java</pre>
<p>Para evitar que o caminho completo seja digitado a cada vez:</p>
<ol type="1">
<li>Inclua os seguintes diret&oacute;rios na vari&aacute;vel de ambiente <strong>PATH</strong>:

<ul class="simple">
<li>C:\Arquivos de Programas\IBM\Java50\bin (somente SDK)</li>
<li>C:\Arquivos de Programas\IBM\Java50\jre\bin (SDK e Runtime Environment)</li></ul>
<p>Se voc&ecirc; instalou o SDK ou Runtime Environment em um diret&oacute;rio diferente, substitua C:\Arquivos de Programas\IBM\Java50\ pelo
diret&oacute;rio em que instalou o SDK ou Runtime Environment</p>
<br /></li>
<li>Compile o arquivo com a ferramenta <strong>javac</strong>. Por exemplo,
para compilar o arquivo myfile.java, em um prompt de comando, digite: 
<pre class="xmp">  javac myfile.java</pre> 
<p>A vari&aacute;vel de ambiente <strong>PATH</strong> ativa o Windows para localizar arquivos execut&aacute;veis, como
javac, java e javadoc, de qualquer diret&oacute;rio atual. Para exibir o valor
atual de seu <strong>PATH</strong>, digite o seguinte em um prompt de comandos:</p>
<pre class="xmp">  echo %PATH%</pre> </li></ol>
<a name="wq24"></a>
<h2 id="wq24"><a href="#ToC_20">Definindo o CLASSPATH</a></h2>
<p>O <strong>CLASSPATH</strong> informa as ferramentas do SDK, como <strong>java</strong>, <strong>javac</strong> e <strong>javadoc</strong>, onde localizar as bibliotecas da classe Java.</p>
<p>Ser&aacute; necess&aacute;rio definir o <strong>CLASSPATH</strong> explicitamente somente se
uma das seguintes op&ccedil;&otilde;es se aplicar:</p>
<ul>
<li>Voc&ecirc; requer uma biblioteca ou arquivo de classe diferente, como aquela que voc&ecirc; desenvolveu,
mas ela n&atilde;o est&aacute; no diret&oacute;rio atual. 
<br /></li>
<li>Voc&ecirc; altera o local dos diret&oacute;rios <strong>bin</strong> e <strong>lib</strong> de forma que eles n&atilde;o tenham mais o mesmo diret&oacute;rio pai
comum. 
<br /></li>
<li>Voc&ecirc; pretende desenvolver ou executar aplicativos que est&atilde;o utilizando ambientes de
tempo de execu&ccedil;&atilde;o diferentes no mesmo sistema. 
<br /></li></ul>
<p>Para exibir o valor atual do <strong>CLASSPATH</strong>, digite
o seguinte em um prompt de comandos:</p>
<pre class="xmp">  echo %CLASSPATH%</pre>
<p>Se pretende desenvolver e executar aplicativos que utilizem ambientes de tempo de execu&ccedil;&atilde;o
diferentes, incluindo outras vers&otilde;es que voc&ecirc; tenha instalado separadamente,
dever&aacute; definir o <strong>CLASSPATH</strong> (e o <strong>PATH</strong>) explicitamente para cada aplicativo. Se voc&ecirc; pretende executar v&aacute;rios aplicativos
simultaneamente e utilizar ambientes de tempo de execu&ccedil;&atilde;o diferentes, cada aplicativo dever&aacute;
ser executado em sua pr&oacute;pria janela de comandos.</p>
<p>Se voc&ecirc; pretende executar apenas uma vers&atilde;o do Java por vez, poder&aacute; utilizar um script batch para alternar entre
os ambientes de tempo de execu&ccedil;&atilde;o diferentes. </p>
<br />
<a name="wq25"></a>
<h2 id="wq25"><a href="#ToC_21">Desinstala&ccedil;&atilde;o</a></h2>
<p>Para desinstalar o SDK, caso o tenha instalado utilizando a instala&ccedil;&atilde;o assistida
ou n&atilde;o-assistida:</p>
<ol type="1">
<li>Clique duas vezes em <strong>Meu Computador</strong> no desktop do Windows.</li>
<li>Clique duas vezes em <strong>Painel de Controle</strong>.</li>
<li>D&ecirc; um clique duplo em <strong>Adicionar ou Remover programas</strong>.</li>
<li>Clique em <strong>IBM 32-bit SDK for Java 2 V5.0</strong> na
lista e depois clique em <strong>Alterar/Remover</strong>.</li>
<li>Clique em <strong>OK</strong>.</li></ol>
<p>Esse procedimento remove todos os pacotes que est&atilde;o instalados com o
Instalador. Ele <em>n&atilde;o</em> remove o pacote Java Communications
API (consulte <a href="http://www.javasoft.com/products/javacomm/">Java Communications API</a>) ou
quaisquer arquivos adicionais que foram extra&iacute;dos dos pacotes zip.</p>
<a name="wq27"></a>
<div class="notetitle" id="wq27">Nota:</div>
<div class="notebody">Mensagens de aviso podem ser exibidas notificando que nem todos os arquivos,
ou entradas de registro, ou ambos, foram removidos. Esses avisos s&atilde;o emitidos porque
o Windows considera que determinados arquivos ainda est&atilde;o em uso; esses arquivos ou entradas de
registro, ou ambos, ser&atilde;o removidos durante a pr&oacute;xima reinicializa&ccedil;&atilde;o.</div>
<p>Quando v&aacute;rias instala&ccedil;&otilde;es entre o IBM 32-bit SDK for Windows, v5.0 e as vers&otilde;es V1.3.1 e anteriores s&atilde;o mantidas,
se voc&ecirc; desinstalar a vers&atilde;o anterior enquanto uma vers&atilde;o V5.0 ainda est&aacute;
instalada no sistema, o desinstalador da V1.3.1 remover&aacute; as seguintes chaves de registro, e
todas as subchaves, que s&atilde;o exigidas pela vers&atilde;o V5.0, corrompendo, portanto, a instala&ccedil;&atilde;o do 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">Portanto, reinstale o V5.0 depois de desinstalar a vers&atilde;o V1.3.1.
Essa limita&ccedil;&atilde;o do desinstalador foi corrigida na V1.4.0 e em todas as vers&otilde;es subseq&uuml;entes.</p>
<a name="invint"></a>
<h1 id="invint"><a href="#ToC_22">Utilizando o Runtime Environment</a></h1>
<p>A ferramenta <strong>java</strong> ativa um aplicativo Java iniciando
um Java Runtime Environment e carregando uma classe especificada. </p>
<p>A JVM procura a classe inicial (e outras classes utilizadas)
em tr&ecirc;s conjuntos de locais: no caminho de classe de auto-inicializa&ccedil;&atilde;o, nas extens&otilde;es instaladas
e no caminho de classe do usu&aacute;rio. Os argumentos especificados ap&oacute;s o nome da classe
ou o nome do arquivo JAR s&atilde;o passados para a fun&ccedil;&atilde;o principal.</p>
<p>O comando <strong>javaw</strong> &eacute; id&ecirc;ntico ao <strong>java</strong>, exceto
que o <strong>javaw</strong> n&atilde;o possui janela de console associada. Utilize <strong>javaw</strong> quando n&atilde;o desejar que uma janela de prompt de comandos seja
exibida. O ativador <strong>javaw</strong> exibir&aacute; uma caixa de di&aacute;logo com
informa&ccedil;&otilde;es sobre erros se houver falha na ativa&ccedil;&atilde;o. </p>
<p>Os comandos <strong>java</strong> e <strong>javaw</strong> utilizam a seguinte sintaxe: </p>
<pre class="xmp">java [ op&ccedil;&otilde;es ] <em>class</em> [ argumentos ... ]
java [ op&ccedil;&otilde;es ] -jar <em>file.jar</em> [ argumentos ... ]
javaw [ op&ccedil;&otilde;es ] <em>class</em> [ argumentos ... ]
javaw [ op&ccedil;&otilde;es ] -jar <em>file.jar</em> [ argumentos ... ]
</pre><p class="indatacontent">Os itens entre colchetes s&atilde;o opcionais.</p>
<p></p>
<dl class="parml">
<dt class="bold">op&ccedil;&otilde;es</dt>
<dd>Op&ccedil;&otilde;es de linha de comandos.
</dd>
<dt class="bold">class</dt>
<dd>Nome da classe a ser chamada.
</dd>
<dt class="bold">file.jar</dt>
<dd>Nome do arquivo jar a ser chamado. Ele &eacute; utilizado apenas com <strong>-jar</strong>.
</dd>
<dt class="bold">argumentos</dt>
<dd>Argumentos passados para a fun&ccedil;&atilde;o <strong>main</strong>.
</dd>
</dl>
<p>Se a op&ccedil;&atilde;o <strong>-jar</strong> for especificada, o arquivo JAR nomeado ir&aacute;
conter arquivos de classe e recurso para os aplicativos com a classe de inicializa&ccedil;&atilde;o indicada pelo cabe&ccedil;alho do manifesto Main-Class.  </p>
<a name="wq28"></a>
<h2 id="wq28"><a href="#ToC_23">Op&ccedil;&otilde;es</a></h2>
<p>O ativador possui um conjunto de op&ccedil;&otilde;es padr&atilde;o suportadas no ambiente de tempo
de execu&ccedil;&atilde;o atual e que ser&atilde;o suportadas em releases futuros. Al&eacute;m disso,
h&aacute; um conjunto de op&ccedil;&otilde;es fora do padr&atilde;o. As op&ccedil;&otilde;es padr&atilde;o foram escolhidas
para o melhor uso geral. Uma a&ccedil;&atilde;o deve ser tomada se decidir fazer
altera&ccedil;&otilde;es.</p>
<a name="wq29"></a>
<h3 id="wq29"><a href="#ToC_24">Especificando Op&ccedil;&otilde;es Java e Propriedades de Sistema</a></h3>
<p>Voc&ecirc; pode especificar as op&ccedil;&otilde;es do Java e as propriedades do sistema de
3 diferentes modos.
S&atilde;o, por ordem de prefer&ecirc;ncia:</p>
<ol type="1">
<li>Especificar a op&ccedil;&atilde;o ou propriedade na linha de comando, por
exemplo<tt class="xph"> java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump
MyJavaClass</tt>.</li>
<li>Criar um arquivo que contenha as op&ccedil;&otilde;es e especific&aacute;-lo na linha de
comando com
<strong>-Xoptionsfile=<em>&lt;filename> </em></strong>.</li>
<li>Criar uma vari&aacute;vel de ambiente denominada
<strong>IBM_JAVA_OPTIONS </strong> contendo as op&ccedil;&otilde;es, por exemplo,
<tt class="xph">set IBM_JAVA_OPTIONS=&quot;-Dmysysprop1=tcpip -Dmysysprop2=wait
-Xdisablejavadump&quot;</tt>. </li></ol>
<p>As op&ccedil;&otilde;es mais &agrave; direita na linha de comandos t&ecirc;m prefer&ecirc;ncia em
rela&ccedil;&atilde;o &agrave;s mais a esquerda; por exemplo, se especificar as op&ccedil;&otilde;es
<tt class="xph">-Xint -Xjit myClass</tt>, <strong>-Xjit</strong> tem a
prefer&ecirc;ncia. </p>
<a name="wq31"></a>
<h3 id="wq31"><a href="#ToC_25">Op&ccedil;&otilde;es Padr&atilde;o</a></h3>
<ul class="simple">
<li>
<span class="term"><strong>-D</strong>&lt;<em>property_name</em>>=&lt;<em>valor</em>></span>
<ul class="simple">
<li>Define uma propriedade do sistema.</li></ul></li>
<li><strong>-assert</strong>
<ul class="simple">
<li>Imprime ajuda para op&ccedil;&otilde;es relacionadas &agrave; declara&ccedil;&atilde;o.</li></ul></li>
<li><strong>-cp</strong> ou <strong>-classpath</strong> &lt;<em>diret&oacute;rios e arquivos zip ou jar separados por ;></em>
<ul class="simple">
<li>Define o caminho da procura por classes e recursos de aplicativos. Se as op&ccedil;&otilde;es <strong>-classpath </strong> e <strong>-cp</strong> n&atilde;o forem utilizadas e <strong>CLASSPATH</strong> n&atilde;o estiver definido, o usu&aacute;rio classpath ser&aacute;, por padr&atilde;o, o diret&oacute;rio atual (.).</li></ul></li>
<li><strong>-help</strong> ou <strong>-?</strong>
<ul class="simple">
<li>Exibe uma mensagem de utiliza&ccedil;&atilde;o.</li></ul></li>
<li><strong>-showversion</strong>
<ul class="simple">
<li>Imprime a vers&atilde;o do produto e continua.</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>Ativa a sa&iacute;da verbosa.</li></ul></li>
<li><strong>-version</strong>
<ul class="simple">
<li>Exibe a vers&atilde;o do produto.</li></ul></li>
<li><strong>-version:</strong><em>&lt;value></em>
<ul class="simple">
<li>Requer a vers&atilde;o especificada para ser executado. </li></ul></li>
<li><strong>-jre-restrict-search</strong>
<ul class="simple">
<li>Inclui JREs privados do usu&aacute;rio na procura de vers&atilde;o</li></ul></li>
<li><strong>-no-jre-restrict-search</strong>
<ul class="simple">
<li>Exclui JREs privados do usu&aacute;rio da procura de vers&atilde;o</li></ul></li>
<li><strong>-agentlib:</strong>&lt;<em>libname</em>>[=&lt;<em>options</em>>]
<ul class="simple">
<li>carrega a biblioteca de agentes nativos &lt;libname>, por exemplo
<strong> -agentlib:hprof</strong>.  Para obter mais informa&ccedil;&otilde;es,
especifique <strong>-agentlib:jdwp=help </strong> e
<strong>-agentlib:hprof=help</strong> na linha de comandos.</li></ul></li>
<li><strong>-agentpath:</strong><em>libname</em>[=&lt;<em>options</em>>]
<ul class="simple">
<li>Carregar biblioteca de agentes nativos por nome de caminho completo</li></ul></li>
<li><strong>-javaagent:</strong>&lt;<em>jarpath</em>>[=&lt;<em>options</em>>]
<ul class="simple">
<li>Carregar agente da linguagem de programa&ccedil;&atilde;o Java; para obter mais
informa&ccedil;&otilde;es; consulte a documenta&ccedil;&atilde;o da API java.lang.instrument. </li></ul></li>
<li><strong>-X</strong>
<ul class="simple">
<li>Imprime a ajuda sobre op&ccedil;&otilde;es n&atilde;o padr&atilde;o.</li></ul></li></ul>
<a name="xoptions"></a>
<h3 id="xoptions"><a href="#ToC_26">Op&ccedil;&otilde;es N&atilde;o Padr&atilde;o</a></h3>
<p>As op&ccedil;&otilde;es <strong>-X</strong> listadas a seguir n&atilde;o s&atilde;o op&ccedil;&otilde;es padr&atilde;o e, portanto, est&atilde;o sujeitas a altera&ccedil;&otilde;es sem aviso pr&eacute;vio. </p>
<p>Para op&ccedil;&otilde;es que utilizam o par&acirc;metro <em>&lt;tamanho></em>, voc&ecirc;
deve sufixar o n&uacute;mero com "k" ou "K" para indicar kilobytes, "m" ou "M"
para indicar megabytes ou "g" ou "G" para indicar gigabytes.</p>
<ul class="simple">
<li><strong>-Xargencoding</strong>
<ul class="simple">
<li>Permite colocar seq&uuml;&ecirc;ncias de escape Unicode na lista de argumentos. Por padr&atilde;o, essa
op&ccedil;&atilde;o &eacute; definida como desligada.</li></ul></li>
<li><strong>-Xbootclasspath:</strong>&lt;<em>diret&oacute;rios
e arquivos zip ou jar separados por ;</em>>
<ul class="simple">
<li>Define o caminho da procura por classes e recursos de auto-inicializa&ccedil;&atilde;o. O padr&atilde;o &eacute; procurar
classes e recursos de auto-inicializa&ccedil;&atilde;o dentro dos diret&oacute;rios internos da VM e dos arquivos .jar.</li></ul></li>
<li><strong>-Xbootclasspath/a:</strong>&lt;<em>diret&oacute;rios
e arquivos zip ou jar separados por ;</em>>
<ul class="simple">
<li>Anexa os diret&oacute;rios, arquivos zip ou arquivos jar especificados ao final do caminho de classe de auto-inicializa&ccedil;&atilde;o. O padr&atilde;o &eacute; procurar
classes e recursos de auto-inicializa&ccedil;&atilde;o dentro dos diret&oacute;rios internos da VM e dos arquivos .jar.</li></ul></li>
<li><strong>-Xbootclasspath/p:</strong>&lt;<em>diret&oacute;rios
e arquivos zip ou jar separados por ;</em>>
<ul class="simple">
<li>Anexa os diret&oacute;rios, arquivos zip ou arquivos jar especificados ao come&ccedil;o do caminho de classe de auto-inicializa&ccedil;&atilde;o. N&atilde;o implemente aplicativos que utilizem a op&ccedil;&atilde;o <strong>-Xbootclasspath:</strong> ou <strong>-Xbootclasspath/p:</strong> para
substituir uma classe na API padr&atilde;o, pois tal implementa&ccedil;&atilde;o violaria
a licen&ccedil;a do c&oacute;digo bin&aacute;rio do Java 2 Runtime Environment. O padr&atilde;o &eacute; procurar
classes e recursos de auto-inicializa&ccedil;&atilde;o dentro dos diret&oacute;rios internos da VM e dos arquivos .jar.</li></ul></li>
<li id="xcheckjni">
<a name="xcheckjni"></a><strong>-Xcheck:jni</strong>
<ul class="simple">
<li>Executa verifica&ccedil;&otilde;es adicionais das fun&ccedil;&otilde;es JNI. Tamb&eacute;m &eacute; poss&iacute;vel utilizar <a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a>. Por padr&atilde;o, nenhuma
verifica&ccedil;&atilde;o &eacute; executada. </li></ul></li>
<li><strong>-Xcheck:nabounds</strong>
<ul class="simple">
<li>Executa verifica&ccedil;&otilde;es adicionais das opera&ccedil;&otilde;es de array JNI. Tamb&eacute;m &eacute; poss&iacute;vel utilizar <a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a>. Por padr&atilde;o, nenhuma
verifica&ccedil;&atilde;o &eacute; executada. </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>Essa op&ccedil;&atilde;o ativa a coleta de objetos de classe em cada coleta de lixo.
<span id="changed">|</span>Essa op&ccedil;&atilde;o est&aacute;, por padr&atilde;o, ativada.</li></ul></font></li>
<li id="compactexplicitgc">
<a name="compactexplicitgc"></a><strong>-Xcompactexplicitgc</strong>
<ul class="simple">
<li>Compacta todas as chamadas para <tt class="xph">System.gc()</tt>. Consulte tamb&eacute;m <a href="#nocompactexplicitgc"><strong>-Xnocompactexplicitgc</strong></a>. Por padr&atilde;o, a compacta&ccedil;&atilde;o ocorre
somente quando acionada internamente. </li></ul></li>
<li id="compactgc">
<a name="compactgc"></a><strong>-Xcompactgc</strong>
<ul class="simple">
<li>Compacta todos os ciclos do Coletor de Lixo. Consulte tamb&eacute;m <a href="#nocompactgc"><strong>-Xnocompactgc</strong></a>. Por padr&atilde;o, a compacta&ccedil;&atilde;o ocorre
somente quando acionada internamente. </li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentbackground</strong> <em>&lt;number></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Essa op&ccedil;&atilde;o especifica o n&uacute;mero de encadeamentos de segundo plano de baixa prioridade conectados
<span id="changed">|</span>para ajudar os encadeamentos mutadores na marca&ccedil;&atilde;o simult&acirc;nea. O padr&atilde;o &eacute; 1. </li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentlevel</strong> <em>&lt;number></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Essa op&ccedil;&atilde;o especifica a taxa de aloca&ccedil;&atilde;o "tax".  Ela indica a propor&ccedil;&atilde;o
<span id="changed">|</span>entre a quantidade de heap alocado e a quantidade de heap marcado.  O padr&atilde;o &eacute; 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>Essa op&ccedil;&atilde;o determina qual uso da &aacute;rea, LOA ou SOA, &eacute; medido e,
<span id="changed">|</span>portanto, quais aloca&ccedil;&otilde;es s&atilde;o taxadas durante a marca&ccedil;&atilde;o simult&acirc;nea. A utiliza&ccedil;&atilde;o de <strong>-Xconmeter:soa</strong> aplica-se &agrave; taxa de aloca&ccedil;&atilde;o de SOA (&Aacute;rea de
<span id="changed">|</span>Objeto Pequena); a utiliza&ccedil;&atilde;o de <strong>-Xconmeter:loa</strong> aplica-se &agrave;
<span id="changed">|</span>taxa de aloca&ccedil;&atilde;o de LOA (&Aacute;rea de Objeto Grande). Se <strong>-Xconmeter:dynamic </strong>	for especificado, o coletor determinar&aacute; dinamicamente
<span id="changed">|</span>qual &aacute;rea ser&aacute; medida, com base em qual &aacute;rea &eacute; esgotada primeiro, se &eacute;
<span id="changed">|</span>a SOA ou a LOA. A op&ccedil;&atilde;o est&aacute; configurada, por padr&atilde;o, como <strong>-Xconmeter:soa</strong>.</li></ul></font></li>
<li id="xdbg">
<a name="xdbg"></a><strong>-Xdbg:</strong>&lt;<em>op&ccedil;&otilde;es</em>>
<ul class="simple">
<li>Carrega bibliotecas de depura&ccedil;&atilde;o para suporte da depura&ccedil;&atilde;o remota de aplicativos.
Equivale a <a href="#runjdwp"><strong>-Xrunjdwp</strong></a>.
Por padr&atilde;o, as bibliotecas de depura&ccedil;&atilde;o n&atilde;o s&atilde;o carregadas e a inst&acirc;ncia VM n&atilde;o
&eacute; ativada para depura&ccedil;&atilde;o.</li></ul></li>
<li><strong>-Xdbginfo:</strong>&lt;<em>caminho para arquivo de s&iacute;mbolos</em>>
<ul class="simple">
<li>Carrega e transmite op&ccedil;&otilde;es para o servidor de informa&ccedil;&otilde;es de depura&ccedil;&atilde;o. Por padr&atilde;o,
o servidor de informa&ccedil;&otilde;es de depura&ccedil;&atilde;o &eacute; desativado. </li></ul></li>
<li><strong>-Xdebug</strong>
<ul class="simple">
<li>Inicia a JVM com o depurador ativado. Por padr&atilde;o, o depurador &eacute;
desativado.</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>Essa op&ccedil;&atilde;o desativa a emiss&atilde;o de uma exce&ccedil;&atilde;o OutOfMemory se for gasto
<span id="changed">|</span>tempo excessivo no GC. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; desativada.</li></ul></font></li>
<li><strong>-Xdisableexplicitgc</strong>
<ul class="simple">
<li>Informa a VM que as chamadas para <tt class="xph">System.gc()</tt> n&atilde;o devem ter
nenhum efeito. Por padr&atilde;o, as chamadas para <tt class="xph">System.gc()</tt> acionam uma coleta de lixo.</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>Essa op&ccedil;&atilde;o impede que as cadeias existentes na tabela interna de cadeias sejam coletadas.
<span id="changed">|</span>Essa op&ccedil;&atilde;o est&aacute;, por padr&atilde;o, desativada.</li></ul></font></li>
<li><strong>-Xdisablejavadump</strong>
<ul class="simple">
<li>Desliga a gera&ccedil;&atilde;o de javadump em erros e sinais. Por padr&atilde;o, a gera&ccedil;&atilde;o de javadump
&eacute; ativada.</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>Se for gasto um tempo excessivo no GC, essa op&ccedil;&atilde;o retornar&aacute; NULL para um
<span id="changed">|</span>pedido de aloca&ccedil;&atilde;o e far&aacute; com que uma exce&ccedil;&atilde;o OutOfMemory seja emitida. Essa a&ccedil;&atilde;o
<span id="changed">|</span>ocorre somente quando o heap tiver sido totalmente expandido e o tempo gasto
<span id="changed">|</span>estiver completando no m&iacute;nimo 95%. Esse comportamento &eacute; o padr&atilde;o.</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>Essa op&ccedil;&atilde;o ativa as cadeias da tabela interna de cadeias a serem coletadas.
<span id="changed">|</span>Essa op&ccedil;&atilde;o est&aacute;, por padr&atilde;o, ativada.</li></ul></font></li>
<li><strong>-Xfuture</strong>
<ul class="simple">
<li>Ativa verifica&ccedil;&otilde;es completas em formatos de arquivos de classe. Utilize esse sinalizador ao desenvolver
um novo c&oacute;digo, pois verifica&ccedil;&otilde;es mais completas ser&atilde;o o padr&atilde;o em releases futuros. Por padr&atilde;o, as verifica&ccedil;&otilde;es completas de formato s&atilde;o desativadas. </li></ul></li>
<li><strong>-Xgcpolicy:[optthruput]|[optavgpause]|[gencon]</strong>
<ul class="simple">
<li>Controla o comportamento do Coletor de Lixo. A op&ccedil;&atilde;o <em>optthruput</em> &eacute; a padr&atilde;o e proporciona um rendimento do processamento muito alto aos aplicativos, embora isso implique a ocorr&ecirc;ncia de pausas ocasionais. A op&ccedil;&atilde;o <em>optavgpause</em> reduz o tempo gasto nessas pausas para coleta de lixo e limita o efeito do aumento do tamanho de heap durante a pausa para coleta de lixo. Utilize <em>optavgpause</em> se a sua configura&ccedil;&atilde;o apresentar um heap muito grande. A op&ccedil;&atilde;o <em>gencon</em>
solicita o uso combinado de GC simult&acirc;neo e geracional para ajudar a minimizar
o tempo gasto com qualquer pausa para coleta de lixo.  Para obter informa&ccedil;&otilde;es adicionais, consulte <a href="#garbage">Especificando a Pol&iacute;tica de Coleta de Lixo</a>.</li></ul></li>
<li><strong>-Xgcthreads</strong>&lt;<em>n&uacute;mero de encadeamentos</em>>
<ul class="simple">
<li>Define o n&uacute;mero de encadeamentos auxiliares que s&atilde;o utilizados para opera&ccedil;&otilde;es paralelas
durante a coleta de lixo. Por padr&atilde;o, o n&uacute;mero de encadeamentos &eacute; definido como o
n&uacute;mero de CPUs f&iacute;sicas presentes -1, com um m&iacute;nimo de 1.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xgcworkpackets</strong> <em>&lt;number></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Essa op&ccedil;&atilde;o especifica o n&uacute;mero total de pacotes de trabalho dispon&iacute;veis no
<span id="changed">|</span>coletor global. Se n&atilde;o for especificado, o coletor alocar&aacute; um n&uacute;mero de pacotes
<span id="changed">|</span>com base no tamanho m&aacute;ximo de heap.</li></ul></font></li>
<li><strong>-Xint</strong>
<ul class="simple">
<li>Faz com que a JVM utilize apenas o Interpretador, desativando o
compilador JIT (Just-In-Time). Por padr&atilde;o, o compilador JIT &eacute; ativado.</li></ul></li>
<li><strong>-Xiss</strong><em>&lt;size></em>
<ul class="simple">
<li>Define o tamanho inicial da pilha de encadeamentos Java. Por padr&atilde;o, 2 kilobytes.</li></ul></li>
<li id="xjit">
<a name="xjit"></a><strong>-Xjit</strong>[:&lt;<em>suboption</em>>,&lt;<em>suboption</em>>,...]
<ul class="simple">
<li>Ativa o JIT. Para obter detalhes sobre as subop&ccedil;&otilde;es, consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>. Consulte tamb&eacute;m <a href="#xnojit"><strong>-Xnojit</strong></a>. Por padr&atilde;o, o JIT &eacute; ativado.</li></ul></li>
<li id="xlinenumbers">
<a name="xlinenumbers"></a><strong>-Xlinenumbers</strong>
<ul class="simple">
<li>Exibe os n&uacute;meros das linhas nos rastreios de pilha, para depura&ccedil;&atilde;o. Consulte tamb&eacute;m <a href="#xnolinenumbers"><strong>-Xnolinenumbers</strong></a>. Por padr&atilde;o, os n&uacute;meros de linhas s&atilde;o ativados. </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 op&ccedil;&atilde;o aloca uma LOA (&Aacute;rea de Objeto Grande). Os objetos ser&atilde;o
<span id="changed">|</span>alocados nessa LOA em vez de no SOA. Por padr&atilde;o, a LOA &eacute; ativada para todas as pol&iacute;ticas
<span id="changed">|</span>GC, exceto para subconjunto, em que a LOA n&atilde;o est&aacute; dispon&iacute;vel. Consulte
<span id="changed">|</span>tamb&eacute;m <a href="#noloa"><strong>-Xnoloa</strong></a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloainitial</strong> <em>&lt;number></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;number> entre 0 e 0,95, especifica a porcentagem inicial do espa&ccedil;o
<span id="changed">|</span>permitido atual alocado para a LOA (&Aacute;rea de Objeto Grande). O padr&atilde;o &eacute; 0,05 ou 5%. </li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloamaximum</strong> <em>&lt;number></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;number> entre 0 e 0,95, especifica a porcentagem m&aacute;xima do espa&ccedil;o
<span id="changed">|</span>permitido atual alocado para a LOA (&Aacute;rea de Objeto Grande). O padr&atilde;o &eacute; 0,5 ou 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 &agrave; JVM para alocar o heap Java com p&aacute;ginas grandes. Se p&aacute;ginas
<span id="changed">|</span>grandes n&atilde;o estiverem dispon&iacute;veis, a JVM n&atilde;o ser&aacute; iniciado, exibindo a mensagem de erro <tt class="xph">GC: a configura&ccedil;&atilde;o do sistema n&atilde;o suporta a op&ccedil;&atilde;o --> '-Xlp'</tt>. P&aacute;ginas
<span id="changed">|</span>grandes suportadas por sistemas executando o Windows 2003, quando o
<span id="changed">|</span>sistema operacional est&aacute; configurado para utiliz&aacute;-las. Por padr&atilde;o,
<span id="changed">|</span>as p&aacute;ginas grandes n&atilde;o s&atilde;o utilizadas. Consulte <a href="#alloc_large_page">Configurando a Aloca&ccedil;&atilde;o da Mem&oacute;ria de P&aacute;gina Grande</a>.</li></ul></font></li>
<li><strong>-Xmaxe</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Define o tamanho m&aacute;ximo de acordo com o qual o coletor de lixo expande o heap.
Normalmente, o coletor de lixo expande o heap quando a quantidade de
espa&ccedil;o livre cai abaixo de 30% (ou a quantidade especificada com
<strong> -Xminf</strong>), at&eacute; atingir a quantidade necess&aacute;ria para
restaurar o espa&ccedil;o livre para 30%. A op&ccedil;&atilde;o <strong>-Xmaxe</strong> limita a expans&atilde;o ao valor especificado; por exemplo, <tt class="xph">-Xmaxe10M</tt> limita a expans&atilde;o a 10 MB. Por padr&atilde;o,
n&atilde;o h&aacute; um tamanho m&aacute;ximo de expans&atilde;o.</li></ul></li>
<li><strong>-Xmaxf</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Especifica a porcentagem m&aacute;xima de heap que deve estar livre ap&oacute;s uma coleta de lixo.  Se o espa&ccedil;o livre exceder esse valor, a JVM tentar&aacute; reduzir o heap. Especifique o tamanho como um valor decimal no intervalo de 0 a 1. Por exemplo, <tt class="xph">-Xmaxf0.5</tt> define o espa&ccedil;o livre m&aacute;ximo como 50%. O valor padr&atilde;o &eacute; 0,6
(60%).</li></ul></li>
<li><strong>-Xmca</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Define a etapa de expans&atilde;o para a mem&oacute;ria alocada para armazenar a parte RAM
das classes carregadas. Toda vez que mais mem&oacute;ria for necess&aacute;ria para armazenar classes na RAM,
a mem&oacute;ria alocada ser&aacute; aumentada de acordo com essa quantidade. Por padr&atilde;o, a etapa
de expans&atilde;o &eacute; 32 K.</li></ul></li>
<li><strong>-Xmco</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Define a etapa de expans&atilde;o para a mem&oacute;ria alocada para armazenar a parte ROM
das classes carregadas. Toda vez que mais mem&oacute;ria for necess&aacute;ria para armazenar classes na ROM,
a mem&oacute;ria alocada ser&aacute; aumentada de acordo com essa quantidade. Por padr&atilde;o, a etapa
de expans&atilde;o &eacute; 128 K.</li></ul></li>
<li><strong>-Xmine</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Define o tamanho m&iacute;nimo de acordo com o qual o Coletor de Lixo expande o heap.
Normalmente, o coletor de lixo expande o heap de acordo com a quantidade
necess&aacute;ria para restaurar o espa&ccedil;o livre para 30% (ou a quantidade
especificada com o uso de <strong>-Xminf</strong>). A op&ccedil;&atilde;o <strong>-Xmine</strong> define a expans&atilde;o de forma que ela corresponda no m&iacute;nimo ao valor especificado; por exemplo, <tt class="xph">-Xmine50M </tt>define o tamanho da expans&atilde;o como um m&iacute;nimo de 50 MB. Por padr&atilde;o, o tamanho m&iacute;nimo de expans&atilde;o
&eacute; 1 MB.</li></ul></li>
<li><strong>-Xminf</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Especifica a porcentagem m&iacute;nima de heap que deve estar livre ap&oacute;s uma coleta de lixo.  Se o espa&ccedil;o livre estiver abaixo desse valor, a JVM tentar&aacute; expandir o heap. Especifique o tamanho como um valor decimal no intervalo de 0 a 1;
por exemplo, um valor de <tt class="xph">-Xminf0.3</tt> solicita que o espa&ccedil;o livre m&iacute;nimo
corresponda a 30% do heap. Por padr&atilde;o, o valor m&iacute;nimo &eacute; 0,3.</li></ul></li>
<li><strong>-Xmn</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura os tamanhos inicial e m&aacute;ximo do novo heap (nursery) para o valor
especificado ao utilizar <strong>-Xgcpolicy:gencon</strong>. Equivale &agrave; defini&ccedil;&atilde;o de ambos <strong>-Xmns</strong> e <strong>-Xmnx</strong>.  <span><font color="red"><span id="changed">|</span>Se voc&ecirc; definir <strong>-Xmns</strong> ou <strong>-Xmnx</strong>, n&atilde;o poder&aacute; definir <strong>-Xmn</strong>. Se voc&ecirc;
<span id="changed">|</span>tentar definir <strong>-Xmn</strong> com <strong>-Xmns</strong> ou <strong>-Xmnx</strong>, a VM n&atilde;o ser&aacute; iniciada e retornar&aacute; um
<span id="changed">|</span>erro.</font></span> Por padr&atilde;o, <strong>-Xmn</strong> &eacute; selecionado internamente
de acordo com a capacidade do sistema. &Eacute; poss&iacute;vel utilizar a op&ccedil;&atilde;o <strong>-verbose:sizes</strong> para encontrar os valores que a VM est&aacute; utilizando atualmente. </li></ul></li>
<li><strong>-Xmns</strong>&lt;<em>size</em>>
<ul class="simple">
<li>Configura o tamanho inicial do novo heap (nursery) para o valor especificado
ao utilizar <strong>-Xgcpolicy:gencon</strong>. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; selecionada internamente de acordo com a capacidade do
sistema. <span><font color="red"><span id="changed">|</span>Essa op&ccedil;&atilde;o retornar&aacute; um erro se voc&ecirc; tentar
<span id="changed">|</span>utiliz&aacute;-la com <strong>-Xmn</strong>.</font></span></li></ul></li>
<li><strong>-Xmnx</strong>&lt;<em>size</em>>
<ul class="simple">
<li>Configura o tamanho m&aacute;ximo do novo heap (nursery) para o valor especificado
ao utilizar <strong>-Xgcpolicy:gencon</strong>. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; selecionada internamente de acordo com a capacidade do
sistema. <span><font color="red"><span id="changed">|</span>Essa op&ccedil;&atilde;o retornar&aacute; um erro se voc&ecirc; tentar
<span id="changed">|</span>utiliz&aacute;-la com <strong>-Xmn</strong>.</font></span></li></ul></li>
<li id="xmo">
<a name="xmo"></a><strong>-Xmo</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura os tamanhos inicial e m&aacute;ximo do heap antigo (tenured) para o valor
especificado ao utilizar <strong>-Xgcpolicy:gencon</strong>. Equivale &agrave; defini&ccedil;&atilde;o de ambos <strong>-Xmos</strong> e <strong>-Xmox</strong>.  <span><font color="red"><span id="changed">|</span>Se voc&ecirc; definir <strong>-Xmos</strong> ou <strong>-Xmox</strong>, n&atilde;o poder&aacute; definir <strong>-Xmo</strong>. Se voc&ecirc;
<span id="changed">|</span>tentar definir <strong>-Xmo</strong> com <strong>-Xmos</strong> ou <strong>-Xmox</strong>, a VM n&atilde;o ser&aacute; iniciada e retornar&aacute; um
<span id="changed">|</span>erro.</font></span> Por padr&atilde;o, <strong>-Xmo</strong> &eacute; selecionado internamente
de acordo com a capacidade do sistema. &Eacute; poss&iacute;vel utilizar a op&ccedil;&atilde;o <strong>-verbose:sizes</strong> para encontrar os valores que a VM est&aacute; utilizando atualmente. </li></ul></li>
<li><strong>-Xmos</strong>&lt;<em>size</em>>
<ul class="simple">
<li>Configura o tamanho inicial do heap antigo (tenure) para o valor especificado
ao utilizar <strong>-Xgcpolicy:gencon</strong>. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; selecionada internamente de acordo com a capacidade do
sistema. <span><font color="red"><span id="changed">|</span>Essa op&ccedil;&atilde;o retornar&aacute; um erro se voc&ecirc; tentar
<span id="changed">|</span>utiliz&aacute;-la com <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmox</strong>&lt;<em>size</em>>
<ul class="simple">
<li>Configura o tamanho inicial do heap antigo (tenure) para o valor especificado
ao utilizar <strong>-Xgcpolicy:gencon</strong>. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; selecionada internamente de acordo com a capacidade do
sistema. <span><font color="red"><span id="changed">|</span>Essa op&ccedil;&atilde;o retornar&aacute; um erro se voc&ecirc; tentar
<span id="changed">|</span>utiliz&aacute;-la com <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmoi</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura o valor de incremento do heap Java ao utilizar <strong>-Xgcpolicy:gencon</strong>. Se for definida como zero, nenhuma expans&atilde;o
ser&aacute; permitida. Por padr&atilde;o, o tamanho do incremento &eacute; calculado sobre o tamanho
da expans&atilde;o, <strong>-Xmine</strong> e <strong>-Xminf</strong>.</li></ul></li>
<li><strong>-Xmr</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura o tamanho do "conjunto memorizado" de Coleta de Lixo ao utilizar <strong>-Xgcpolicy:gencon</strong>. Essa &eacute; a lista
de objetos no heap antigo (tenured) que possui refer&ecirc;ncias aos objetos no
novo (nursery) heap. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; definida como 16 kilobytes.</li></ul></li>
<li id="xms">
<a name="xms"></a><strong>-Xms</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Define o tamanho de heap Java inicial.  &Eacute; poss&iacute;vel tamb&eacute;m utilizar <a href="#xmo"><strong>-Xmo</strong></a>. O padr&atilde;o &eacute; definir internamente de acordo com a capacidade do
sistema. </li></ul></li>
<li><strong>-Xmso</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura o tamanho da pilha C dos encadeamentos Java bifurcados. Por padr&atilde;o,
essa op&ccedil;&atilde;o &eacute; definida como 32 kilobytes em plataformas de 32 bits e 256 kilobytes em
plataformas de 64 bits.</li></ul></li>
<li><strong>-Xmx</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Define o tamanho m&aacute;ximo do heap Java. Por padr&atilde;o, essa op&ccedil;&atilde;o &eacute; definida internamente de acordo com a
capacidade do sistema.</li></ul></li>
<li id="noclassgc">
<a name="noclassgc"></a><strong>-Xnoclassgc</strong>
<ul class="simple">
<li>Desativa coleta de lixo da classe. Isso desativa a coleta de lixo do armazenamento associado a classes Java que deixaram de ser utilizadas pela JVM. O comportamento padr&atilde;o &eacute; <strong>-Xclassgc</strong>.</li></ul></li>
<li id="nocompactgc">
<a name="nocompactgc"></a><strong>-Xnocompactgc</strong>
<ul class="simple">
<li>Desativa a compacta&ccedil;&atilde;o para o Coletor de Lixo. Consulte tamb&eacute;m <a href="#compactgc"><strong>-Xcompactgc</strong></a>. Por padr&atilde;o, a compacta&ccedil;&atilde;o &eacute; ativada.</li></ul></li>
<li id="nocompactexplicitgc">
<a name="nocompactexplicitgc"></a><strong>-Xnocompactexplicitgc</strong>
<ul class="simple">
<li>Desativa a compacta&ccedil;&atilde;o numa chamada para <tt class="xph">System.gc()</tt>. Consulte tamb&eacute;m <a href="#compactexplicitgc"><strong>-Xcompactexplicitgc</strong></a>. Por padr&atilde;o, a compacta&ccedil;&atilde;o &eacute; ativada
em chamadas para <tt class="xph">System.gc()</tt>.</li></ul></li>
<li id="xnojit">
<a name="xnojit"></a><strong>-Xnojit</strong>
<ul class="simple">
<li>Desativa o compilador JIT. Consulte tamb&eacute;m <a href="#xjit"><strong>-Xjit</strong></a>. Por padr&atilde;o, o compilador JIT &eacute; ativado.</li></ul></li>
<li id="xnolinenumbers">
<a name="xnolinenumbers"></a><strong>-Xnolinenumbers</strong>
<ul class="simple">
<li>Desativa os n&uacute;meros de linhas para depura&ccedil;&atilde;o. Consulte tamb&eacute;m <a href="#xlinenumbers"><strong>-Xlinenumbers</strong></a>. Por padr&atilde;o, os n&uacute;meros de linhas s&atilde;o ativados. </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 op&ccedil;&atilde;o impede a aloca&ccedil;&atilde;o de uma LOA (&Aacute;rea de Objeto Grande). Todos os
<span id="changed">|</span>objetos ser&atilde;o alocados no SOA. Por padr&atilde;o, a LOA &eacute; ativada para todas as pol&iacute;ticas
<span id="changed">|</span>GC, exceto para subconjunto, em que a LOA n&atilde;o est&aacute; dispon&iacute;vel. Consulte
<span id="changed">|</span>tamb&eacute;m <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>Desativa a compacta&ccedil;&atilde;o incremental. Consulte tamb&eacute;m <a href="#partialcompactgc"><strong>-Xpartialcompactgc</strong></a>. Por padr&atilde;o, essa op&ccedil;&atilde;o n&atilde;o &eacute; definida,
portanto, todas as compacta&ccedil;&otilde;es s&atilde;o completas. </li></ul></li>
<li id="nosigcatch">
<a name="nosigcatch"></a><strong>-Xnosigcatch</strong>
<ul class="simple">
<li>Desativa o c&oacute;digo de manipula&ccedil;&atilde;o de sinal da JVM. Consulte tamb&eacute;m <a href="#sigcatch"><strong>-Xsigcatch</strong></a>. Por padr&atilde;o, a manipula&ccedil;&atilde;o de sinal &eacute; ativada.</li></ul></li>
<li id="nosigchain">
<a name="nosigchain"></a><strong>-Xnosigchain</strong>
<ul class="simple">
<li>Desativa o encadeamento da rotina de tratamento de sinal. Consulte tamb&eacute;m <a href="#sigchain"><strong>-Xsigchain</strong></a>. Por padr&atilde;o, o encadeamento da rotina de tratamento de sinal &eacute; ativado.</li></ul></li>
<li><strong>-Xoptionsfile</strong>=&lt;<em>file</em>>
<ul class="simple">
<li>Especifica um arquivo que cont&eacute;m op&ccedil;&otilde;es e defini&ccedil;&otilde;es JVM. Por padr&atilde;o, nenhum
arquivo de op&ccedil;&otilde;es &eacute; utilizado.</li></ul></li>
<li><strong>-Xoss</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura o tamanho da pilha Java e da pilha C para qualquer encadeamento. 
Essa op&ccedil;&atilde;o &eacute; fornecida para compatibilidade e &eacute; equivalente a configurar
tanto <strong> -Xss</strong> quanto <strong>-Xmso</strong> para
o valor especificado. </li></ul></li>
<li id="partialcompactgc">
<a name="partialcompactgc"></a><strong>-Xpartialcompactgc</strong>
<ul class="simple">
<li>Ativa a compacta&ccedil;&atilde;o parcial. Consulte tamb&eacute;m <a href="#nopartialcompactgc"><strong>-Xnopartialcompactgc</strong></a>.</li></ul></li>
<li><strong>-Xquickstart</strong>
<ul class="simple">
<li>Melhora o tempo de inicializa&ccedil;&atilde;o atrasando a compila&ccedil;&atilde;o JIT e as otimiza&ccedil;&otilde;es. Por padr&atilde;o,
o in&iacute;cio r&aacute;pido &eacute; desativado e n&atilde;o h&aacute; retardo na compila&ccedil;&atilde;o JIT.</li></ul></li>
<li><strong>-Xrdbginfo:</strong><em>&lt;host></em>:<em>&lt;port></em>
<ul class="simple">
<li>Carrega e transmite op&ccedil;&otilde;es para o servidor remoto de informa&ccedil;&otilde;es de depura&ccedil;&atilde;o. Por padr&atilde;o,
o servidor remoto de informa&ccedil;&otilde;es de depura&ccedil;&atilde;o &eacute; desativado. </li></ul></li>
<li><strong>-Xrs</strong>
<ul class="simple">
<li>Reduz o uso de sinais de sistema operacional. Por padr&atilde;o, a VM
utiliza totalmente os sinais do sistema operacional, consulte <a href="#sighand">Sinais Utilizados pela JVM </a>.</li></ul></li>
<li><strong>-Xrun</strong><em>&lt;library name></em>[:options]
<ul class="simple">
<li>Carrega bibliotecas assistentes. Para carregar m&uacute;ltiplas bibliotecas, especifique-a
mais de uma vez na linha de comandos. Exemplos dessas bibliotecas s&atilde;o:
<ul>
<li><strong>-Xrunhprof</strong>[:help] | [:&lt;<em>op&ccedil;&atilde;o</em>>=&lt;<em>valor</em>>, ...]
<ul class="simple">
<li>Executa o perfil do heap, da CPU ou do monitor. Para obter mais informa&ccedil;&otilde;es, consulte <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</li></ul></li>
<li id="runjdwp">
<a name="runjdwp"></a><strong>-Xrunjdwp</strong>[:help] | [:&lt;<em>op&ccedil;&atilde;o</em>>=&lt;<em>valor</em>>, ...]
<ul class="simple">
<li>Carrega bibliotecas de depura&ccedil;&atilde;o para suporte da depura&ccedil;&atilde;o remota de aplicativos.
Equivale a <a href="#xdbg"><strong>-Xdbg</strong></a>. Para obter informa&ccedil;&otilde;es adicionais, consulte <a href="#debugger">Depurando os Aplicativos Java</a>.</li></ul></li>
<li><a name="xrunjnichk"></a><strong id="xrunjnichk">-Xrunjnichk</strong>[:help] | [:&lt;<em>option</em>>=&lt;<em>value</em>>, ...]
<ul class="simple">
<li>Executa verifica&ccedil;&otilde;es adicionais nas fun&ccedil;&otilde;es do JNI para rastrear erros em programas
nativos que acessam a JVM utilizando o JNI. Para obter mais informa&ccedil;&otilde;es, consulte <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</li></ul></li></ul></li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xscmx</strong>&lt;<em>size</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Para obter detalhes sobre o <strong>-Xscmx</strong>, consulte <a href="#sharedclassesxoptions">Utilizando as Op&ccedil;&otilde;es da Linha de Comandos para Compartilhamento de Classe</a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xshareclasses:</strong>&lt;<em>subop&ccedil;&otilde;es</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Para obter detalhes sobre as subop&ccedil;&otilde;es <strong>-Xshareclasses</strong>, consulte <a href="#sharedclassesxoptions">Utilizando as Op&ccedil;&otilde;es da Linha de Comandos para Compartilhamento de Classe</a>.</li></ul></font></li>
<li id="sigcatch">
<a name="sigcatch"></a><strong>-Xsigcatch</strong>
<ul class="simple">
<li>Ativa o c&oacute;digo de manipula&ccedil;&atilde;o de sinal da VM. Consulte tamb&eacute;m <a href="#nosigcatch"><strong>-Xnosigcatch</strong></a>. Por padr&atilde;o, a manipula&ccedil;&atilde;o de sinal &eacute; ativada</li></ul></li>
<li id="sigchain">
<a name="sigchain"></a><strong>-Xsigchain</strong>
<ul class="simple">
<li>Ativa o encadeamento da rotina de tratamento de sinal. Consulte tamb&eacute;m <a href="#nosigchain"><strong>-Xnosigchain</strong></a>. Por padr&atilde;o, o encadeamento da rotina de tratamento de sinal &eacute;
ativado.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xsoftrefthreshold</strong>&lt;<em>number</em>> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Essa op&ccedil;&atilde;o define o n&uacute;mero de GCs ap&oacute;s o qual uma refer&ecirc;ncia do software ser&aacute;
<span id="changed">|</span>limpa se seu referente n&atilde;o tiver sido marcado. O padr&atilde;o &eacute; 3; isso significa que
<span id="changed">|</span>no terceiro GC onde o referente n&atilde;o &eacute; marcado a refer&ecirc;ncia do software ser&aacute;
<span id="changed">|</span>limpa.</li></ul></font></li>
<li><strong>-Xss</strong>&lt;<em>tamanho</em>>
<ul class="simple">
<li>Configura o tamanho de pilha Java m&aacute;ximo para qualquer encadeamento.  Por padr&atilde;o, essa op&ccedil;&atilde;o est&aacute; definida para 256 KB.</li></ul></li>
<li><strong>-Xthr:</strong>&lt;<em>options</em>>
<ul class="simple">
<li>Define op&ccedil;&otilde;es de encadeamento.</li></ul></li>
<li><strong>-Xverbosegclog</strong>:&lt;<em>caminho para o arquivo</em>>&lt;<em>nome do arquivo</em>>[X, Y]
<ul class="simple">
<li>Faz com que a sa&iacute;da verboseGC seja gravada no arquivo especificado. Se o arquivo
sair, ele ser&aacute; sobrescrito. Caso contr&aacute;rio, se um arquivo existente n&atilde;o puder
ser aberto ou um novo arquivo n&atilde;o puder ser criado, a sa&iacute;da ser&aacute; redirecionada
para stderr. Se voc&ecirc; especificar os argumentos X e Y (ambos inteiros), a sa&iacute;da
verboseGC ser&aacute; redirecionada ao n&uacute;mero X de arquivos, cada um contendo o n&uacute;mero Y de
ciclos de coleta de lixo adequados para a sa&iacute;da verboseGC. Esses arquivos possuem o formato <em>nome de arquivo1, nome de arquivo2</em> e assim por diante. Por padr&atilde;o, nenhum log de coleta de lixo detalhado
ocorre.</li></ul></li>
<li><strong>-Xverify</strong>
<ul class="simple">
<li>Ativa a verifica&ccedil;&atilde;o completa de classes para cada classe carregada. Por padr&atilde;o,
a verifica&ccedil;&atilde;o completa de classes &eacute; desativada. </li></ul></li>
<li><strong>-Xverify:none</strong>
<ul class="simple">
<li>Desativa a verifica&ccedil;&atilde;o completa de classes. Por padr&atilde;o,
a verifica&ccedil;&atilde;o completa de classes &eacute; desativada. </li></ul></li></ul>
<a name="wq32"></a>
<h2 id="wq32"><a href="#ToC_27">Obtendo o N&uacute;mero de Compila&ccedil;&atilde;o e Vers&atilde;o IBM</a></h2>
<p>Para obter o n&uacute;mero de constru&ccedil;&atilde;o e vers&atilde;o IBM, em um prompt
de comando command, digite:</p>
<pre class="xmp">java -version</pre>
<a name="wq33"></a>
<h2 id="wq33"><a href="#ToC_28">Globaliza&ccedil;&atilde;o do Comando Java</a></h2>
<p>O comando <strong>java</strong> e outros comandos do ativador java
(por exemplo, <strong>javaw</strong>) permitem que um nome de classe
seja especificado com qualquer caractere pertencente ao conjunto de
caracteres do c&oacute;digo de idioma atual. </p>
<p>Tamb&eacute;m &eacute; poss&iacute;vel especificar qualquer caractere Unicode nos argumentos e no nome
de classe utilizando seq&uuml;&ecirc;ncias de escape java. Para faz&ecirc;-lo, ser&aacute; necess&aacute;rio especificar <strong>-Xargencoding</strong>. Para
especificar um caractere Unicode, utilize seq&uuml;&ecirc;ncias de escape no formato <tt>\u####</tt>, em que # &eacute; um d&iacute;gito hexadecimal (0 a 9, A a F).</p>
<p>Como alternativa, para especificar que o nome de classe e os argumentos de comando possuem a codifica&ccedil;&atilde;o UTF8, utilize <strong>-Xargencoding:utf8</strong> ou, na codifica&ccedil;&atilde;o ISO8859_1, utilize <strong>-Xargencoding:latin</strong>.</p>
<p>Por exemplo, para especificar uma classe denominada "HelloWorld" utilizando a codifica&ccedil;&atilde;o Unicode
para ambas as letras mai&uacute;sculas, utilize este comando:</p>
<pre class="xmp">java -Xargencoding '\u0048ello\u0057orld'</pre>
<p>Os comandos <strong>java</strong> e <strong>javaw</strong> fornecem mensagens de sa&iacute;da traduzidas. Essas mensagens s&atilde;o diferentes com base no c&oacute;digo do idioma em que o Java est&aacute; sendo executado. As descri&ccedil;&otilde;es detalhadas de erros e outras informa&ccedil;&otilde;es de depura&ccedil;&atilde;o retornadas por <strong>java</strong> est&atilde;o em ingl&ecirc;s.</p>
<a name="wq34"></a>
<h2 id="wq34"><a href="#ToC_29">Executando um Arquivo Java Automaticamente</a></h2>
<p>Para definir uma classe java ou arquivo jar para execu&ccedil;&atilde;o autom&aacute;tica a partir do arquivo, utilize a op&ccedil;&atilde;o <strong>Ferramentas->Op&ccedil;&otilde;es de Pasta->Tipos de Arquivo</strong>
do Windows Explorer. Como alternativa, voc&ecirc; pode digitar em um prompt de comandos: </p>
<pre class="xmp">assoc .class=javaclass
ftype javaclass=C:\Arquivos de Programas\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> &eacute; a letra l e n&atilde;o o n&uacute;mero 1.</li>
<li>Se o Java estiver instalado em um diret&oacute;rio que n&atilde;o seja o C:\Arquivos de Programas\IBM\Java50\, substitua o
diret&oacute;rio.</li>
</ol>
<a name="jaws"></a>
<h2 id="jaws"><a href="#ToC_30">Executando Aplicativos Java com Tecnologias Auxiliares Nativas</a></h2>
<p>A Sun fornece o Java Access Bridge para fornecer tecnologias auxiliares nativas
do Windows, tais como leitoras de tela, acesso ao suporte de Acessibilidade Java em um aplicativo Java. Essas tecnologias auxiliares nativas do Windows devem suportar chamadas ao Java Access Bridge.</p>
<p>O Java Access Bridge, dispon&iacute;vel na Sun, inclui um instalador que coloca cinco arquivos nos
diret&oacute;rios corretos: access-bridge.jar, jaccess.jar, accessibility.properties,
JavaAccessBridge.dll e WindowsAccessBridge.dll. A IBM envia uma c&oacute;pia do jaccess.jar no diret&oacute;rio apropriado para ser utilizada com o JawBridge.</p>
<p>Se voc&ecirc; j&aacute; tiver ativado o IBM Accessibility Bridge (JawBridge), o qual
permite que a Lente de Aumento do Windows 2000 funcione com aplicativos Swing,
e desejar ativar o JawBridge ao mesmo tempo que o Java Access Bridge, edite
a linha no arquivo accessibility.properties para ler o seguinte:</p>
<p></p>
<pre class="xmp">assistive_technologies=com.sun.java.accessibility.AccessBridge, 
JawBridge</pre>
<p>Marque a linha como coment&aacute;rio inserindo um <tt>#</tt> no come&ccedil;o
da linha para desativar ambas as pontes. Este site mostra como fazer download do 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">O Compilador JIT (Just-In-Time)</a></h2>
<p>O compilador IBM Just-In-Time (JIT) gera dinamicamente o c&oacute;digo da m&aacute;quina
para seq&uuml;&ecirc;ncias de bytecodes utilizadas com freq&uuml;&ecirc;ncia em aplicativos e
applets Java durante a execu&ccedil;&atilde;o. <span><font color="red"><span id="changed">|</span>O compilador JIT V5.0
<span id="changed">|</span>entrega novas otimiza&ccedil;&otilde;es como resultado da pesquisa do compilador,
<span id="changed">|</span>melhora as otimiza&ccedil;&otilde;es implementadas em vers&otilde;es anteriores do JIT e fornece
<span id="changed">|</span>explora&ccedil;&atilde;o de hardware aprimorada. </font></span></p>
<p>O IBM SDK e o Runtime Environment incluem o JIT, que est&aacute; ativado por
padr&atilde;o tanto nos aplicativos de usu&aacute;rio quanto nas ferramentas SDK. 
Normalmente, n&atilde;o h&aacute; nenhuma necessidade de chamar explicitamente o JIT; a
compila&ccedil;&atilde;o do bytecode Java para o c&oacute;digo da m&aacute;quina ocorre de modo
transparente. Contudo, se encontrar um problema com o Runtime Environment
durante a execu&ccedil;&atilde;o de um aplicativo ou applet Java, h&aacute; a possibilidade de
desativar o JIT para facilitar o isolamento do problema. A desativa&ccedil;&atilde;o do
JIT deve ser um medida tempor&aacute;ria apenas; ele &eacute; necess&aacute;rio para um
desempenho adequado. </p>
<a name="disjit"></a>
<h3 id="disjit"><a href="#ToC_32">Desativando o JIT</a></h3>
<p>H&aacute; tr&ecirc;s maneiras de desativar o JIT:</p>
<ul>
<li>Configurar a vari&aacute;vel de ambiente do <strong>JAVA_COMPILER</strong>
para "NONE", ou esvaziar a cadeia antes da execu&ccedil;&atilde;o do aplicativo Java. 
<p>No prompt de comandos no qual o aplicativo est&aacute; executando, digite: </p>
<pre class="xmp">set JAVA_COMPILER=NONE</pre><p class="indatacontent">&Eacute; poss&iacute;vel, tamb&eacute;m, configurar permanentemente
<strong>JAVA_COMPILER</strong>, por meio da interface gr&aacute;fica com o
usu&aacute;rio. Abra o <strong>Painel de Controle</strong>, selecione
<strong>Sistema</strong> e, na guia <strong>Avan&ccedil;adas</strong>,
selecione <strong>Vari&aacute;veis de Ambiente</strong>. </p></li>
<li>Utilize a op&ccedil;&atilde;o <strong>-D</strong> n linha de comandos da JVM para
configurar a propriedade <strong>java.compiler</strong> para "NONE",
ou para uma cadeia vazia: 
<pre class="xmp">java -Djava.compiler=NONE MyApp</pre></li>
<li>Utilize a op&ccedil;&atilde;o <strong>-Xint</strong> na linha de comandos da JVM. Exemplo:
<pre class="xmp">java -Xint MyApp</pre></li></ul>
<p>Ambas as op&ccedil;&otilde;es da linha de comandos substituem a vari&aacute;vel de ambiente
<strong>JAVA_COMPILER</strong>. </p>
<a name="enajit"></a>
<h3 id="enajit"><a href="#ToC_33">Ativando o JIT</a></h3>
<p>Para ativar o JIT explicitamente, configure a vari&aacute;vel de ambiente
<strong>JAVA_COMPILER</strong> como "jitc" ou utilize a op&ccedil;&atilde;o
<strong>-D</strong> para configurar a propriedade
<strong>java.compiler</strong> como "jitc". Como alternativa, utilize a op&ccedil;&atilde;o
<strong>-Xjit</strong> (e omita a op&ccedil;&atilde;o <strong>-Xint</strong>)
na linha de comandos da JVM para ativar o JIT. </p>
<p>Se a vari&aacute;vel de ambiente <strong>JAVA_COMPILER</strong> ou a
propriedade <strong>java.compiler</strong> estiver definida para ""
(cadeia vazia), o JIT permanecer&aacute; desativado. Para remover a configura&ccedil;&atilde;o
da vari&aacute;vel de ambiente apropriadamente, digite <tt class="xph">set
JAVA_COMPILER=</tt> no prompt de comandos.  </p>
<a name="detjit"></a>
<h3 id="detjit"><a href="#ToC_34">Determinando se o JIT Est&aacute; Ativado</a></h3>
<p>Para determinar se o JIT est&aacute; ativado, digite o seguinte no prompt de
comandos: </p>
<pre class="xmp">java -version</pre>
<p>Se o JIT n&atilde;o estiver sendo utilizado, ser&aacute; exibida uma mensagem que inclui o seguinte:
</p>
<pre class="xmp">(JIT disabled)</pre>
<p>Se o JIT estiver sendo utilizado, ser&aacute; exibida uma mensagem que inclui o seguinte: </p>
<pre class="xmp">(JIT ativado)</pre><p class="indatacontent"> </p>
<p>Para obter mais informa&ccedil;&otilde;es sobre o JIT, consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</p>
<a name="garbage"></a>
<h2 id="garbage"><a href="#ToC_35">Especificando a Pol&iacute;tica de Coleta de Lixo</a></h2>
<p>O Coletor de Lixo gerencia a mem&oacute;ria utilizada pelo Java e pelos aplicativos
em execu&ccedil;&atilde;o na VM.</p>
<p>Quando o Coletor de Lixo recebe um pedido para armazenamento, a mem&oacute;ria n&atilde;o utilizada
no heap ser&aacute; colocada &agrave; parte -  "allocation".  O Coletor de Lixo tamb&eacute;m procura
por &aacute;reas de mem&oacute;ria que n&atilde;o s&atilde;o mais referenciadas e libera-as para reutiliza&ccedil;&atilde;o
- "collection".</p>
<p>A fase de coleta pode ser acionada por um falha na aloca&ccedil;&atilde;o de mem&oacute;ria, que
ocorre quando n&atilde;o &eacute; deixado espa&ccedil;o para um pedido de armazenamento ou por uma chamada System.gc()
expl&iacute;cita.</p>
<p>A coleta de lixo pode afetar significativamente o desempenho do aplicativo; portanto,
o IBM Virtual Machine oferece v&aacute;rios m&eacute;todos de otimizar a forma com que a coleta
de lixo &eacute; executada, reduzindo, dessa forma, o efeito no aplicativo.</p>
<p>Para obter informa&ccedil;&otilde;es mais detalhadas sobre a coleta de lixo, consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</p>
<a name="wq37"></a>
<h3 id="wq37"><a href="#ToC_36">Op&ccedil;&otilde;es de Coleta de Lixo</a></h3>
<p>A op&ccedil;&atilde;o <strong>-Xgcpolicy</strong> especifica a pol&iacute;tica de coleta de
lixo.</p>
<p><strong>-Xgcpolicy</strong> utiliza os valores <strong>optthruput</strong> (o padr&atilde;o e o valor recomendado), <strong>optavgpause</strong> ou <strong>gencon</strong>.  A op&ccedil;&atilde;o controla o
comportamento do coletor de lixo, fazendo trocas entre o throughput do aplicativo e o
sistema geral, e faz com que os tempos de pausa sejam causados pela coleta de lixo.</p>
<p>O formato da op&ccedil;&atilde;o e seus valores s&atilde;o: </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">Tempo de Pausa</a></h3>
<p>Quando a tentativa de um aplicativo em criar um objeto n&atilde;o pode ser atendida
imediatamente no espa&ccedil;o dispon&iacute;vel no heap, o coletor de lixo &eacute; respons&aacute;vel pela
identifica&ccedil;&atilde;o de objetos n&atilde;o referidos (lixo), por exclu&iacute;-los e retornar o heap para um
estado no qual pedidos de aloca&ccedil;&atilde;o imediatos e subseq&uuml;entes possam ser atendidos
rapidamente. Tais ciclos de coleta de lixo introduzem pausas inesperadas ocasionais na
execu&ccedil;&atilde;o do c&oacute;digo do aplicativo. Como os aplicativos aumentam de tamanho e
complexidade e os heaps tornam-se correspondentemente maiores, esse tempo de pausa
da coleta de lixo tende a aumentar de tamanho e import&acirc;ncia. O
valor padr&atilde;o da coleta de lixo, <strong>-Xgcpolicy:optthruput</strong>,
fornece um rendimento alto para aplicativos, mas com o
custo das pausas ocasionais, que podem variar de alguns milissegundos at&eacute; v&aacute;rios
segundos, dependendo do tamanho do heap e da quantidade de lixo. </p>
<a name="pausetimereduction"></a>
<h3 id="pausetimereduction"><a href="#ToC_38">Redu&ccedil;&atilde;o do Tempo de Pausa</a></h3>
<p>A JVM utiliza duas t&eacute;cnicas para reduzir tempos de pausa:</p>
<ul>
<li>Coleta de lixo simult&acirc;nea</li>
<li>Coleta de lixo com base em gera&ccedil;&otilde;es</li></ul>
<p>A op&ccedil;&atilde;o de linha de comandos <strong>-Xgcpolicy:optavgpause</strong> solicita o uso da coleta de lixo simult&acirc;nea para reduzir significativamente o tempo gasto em pausas para coletas de lixo. A Coleta de Lixo Simult&acirc;nea reduz o tempo de pausa executando algumas atividades de coleta de lixo simultaneamente &agrave; execu&ccedil;&atilde;o normal de programas para minimizar a interrup&ccedil;&atilde;o causada pela coleta do heap.  A op&ccedil;&atilde;o <strong>-Xgcpolicy:optavgpause</strong> tamb&eacute;m limita o efeito do aumento do tamanho de heap durante a pausa para coleta de lixo. A op&ccedil;&atilde;o <strong>-Xgcpolicy:optavgpause</strong> &eacute; mais &uacute;til para configura&ccedil;&otilde;es que apresentam grandes heaps. Com o tempo de pausa reduzido, voc&ecirc; poder&aacute; perceber uma certa redu&ccedil;&atilde;o no rendimento do processamento dos aplicativos.</p>
<p>Durante a coleta de lixo simult&acirc;nea, um tempo significativo &eacute; gasto com a identifica&ccedil;&atilde;o de objetos relativamente resistentes que n&atilde;o conseguem ser coletados.
 Se a Coleta de Lixo concentrar-se apenas nos objetos com a maior tend&ecirc;ncia de serem recicl&aacute;veis, ser&aacute; poss&iacute;vel reduzir ainda mais os tempos de pausa de alguns aplicativos. A Coleta de Lixo com Base em Gera&ccedil;&otilde;es obt&eacute;m o mesmo resultado dividindo o heap em duas "gera&ccedil;&otilde;es", as &aacute;reas de "desenvolvimento" e "estabilidade". Os objetos s&atilde;o colocados em uma dessas &aacute;reas dependendo da dura&ccedil;&atilde;o. A &aacute;rea de desenvolvimento &eacute; a menor e cont&eacute;m objetos mais recentes, enquanto a &aacute;rea de estabilidade &eacute; maior e cont&eacute;m objetos mais antigos. Os objetos s&atilde;o alocados primeiro &agrave; &aacute;rea de desenvolvimento; se persistirem por um per&iacute;odo suficiente, avan&ccedil;ar&atilde;o em algum momento para a &aacute;rea de estabilidade. </p>
<p>A Coleta de Lixo com Base em Gera&ccedil;&otilde;es depende da curta dura&ccedil;&atilde;o da maioria dos objetos. Ela reduz os tempos de pausa concentrando-se na tentativa de reivindicar o armazenamento na &aacute;rea de desenvolvimento, pois essa &aacute;rea inclui a maioria do espa&ccedil;o recicl&aacute;vel. Em vez de tempos de pausa ocasionais, mas demorados, para coletar todo o heap, a &aacute;rea de desenvolvimento &eacute; coletada com mais freq&uuml;&ecirc;ncia e, se essa &aacute;rea for pequena o bastante, os tempos de pausa ser&atilde;o relativamente menores. Entretanto, a Coleta de Lixo com Base em Gera&ccedil;&otilde;es apresenta a desvantagem da possibilidade de que, com o passar do tempo, a &aacute;rea de estabilidade fique lotada se v&aacute;rios objetos persistirem por muito tempo.  Para minimizar o tempo de pausa quando essa situa&ccedil;&atilde;o ocorrer, utilize uma combina&ccedil;&atilde;o da Coleta de Lixo Simult&acirc;nea com a Coleta de Lixo com Base em Gera&ccedil;&otilde;es. A op&ccedil;&atilde;o <strong>-Xgcpolicy:gencon</strong> solicita o uso combinado dessas duas t&eacute;cnicas para ajudar a minimizar o tempo gasto com qualquer pausa para coleta de lixo.</p>
<a name="wq39"></a>
<h3 id="wq39"><a href="#ToC_39">Ambiente com Heaps Muito Cheios</a></h3>
<p>Se o heap Java estiver quase cheio, e houver pouco lixo para ser recuperado, os
pedidos de novos objetos poder&atilde;o n&atilde;o ser atendidos rapidamente por n&atilde;o haver espa&ccedil;o
dispon&iacute;vel de imediato. Se o heap for operado com capacidade quase cheia, o desempenho
do aplicativo poder&aacute; ser afetado, independentemente de quais op&ccedil;&otilde;es anteriores forem
utilizadas; e, se os pedidos de mais espa&ccedil;o para o heap continuarem a ser feitos, o
aplicativo receber&aacute; uma exce&ccedil;&atilde;o OutofMemory, o que resultar&aacute; na finaliza&ccedil;&atilde;o da JVM
caso a exce&ccedil;&atilde;o n&atilde;o seja capturada e tratada. Nesse ponto, a JVM produz um arquivo
de diagn&oacute;sticos "javadump". Nessas condi&ccedil;&otilde;es, recomenda-se aumentar o
tamanho do heap utilizando a op&ccedil;&atilde;o <strong>-Xmx</strong> ou reduzir o n&uacute;mero de
objetos do aplicativo em uso. Para obter mais informa&ccedil;&otilde;es, consulte <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a>.</p>
<a name="wq40"></a>
<h2 id="wq40"><a href="#ToC_40">Como a JVM Processa Sinais</a></h2>
<p>Quando surge um sinal que &eacute; do interesse da JVM, uma rotina de tratamento de sinais &eacute;
chamada. Essa rotina de tratamento de sinais determina se o sinal foi chamado por causa
de um encadeamento Java ou n&atilde;o-Java. </p>
<p>Se o sinal for por causa de um encadeamento Java, a
JVM assumir&aacute; o controle do tratamento do sinal. Se uma rotina de tratamento de aplicativo para esse sinal for instalada e voc&ecirc; n&atilde;o tiver especificado a op&ccedil;&atilde;o de linha de comandos <strong>-Xnosigchain</strong>, ap&oacute;s o t&eacute;rmino do processamento da JVM, essa rotina de tratamento ser&aacute; chamada. </p>
<p>Se o sinal for por causa de um encadeamento n&atilde;o-Java e
o aplicativo que instalou a JVM tiver instalado anteriormente sua pr&oacute;pria rotina de tratamento
para o sinal, o controle ser&aacute; fornecido a essa rotina de tratamento. Caso contr&aacute;rio, se o sinal for solicitado pela JVM ou pelo aplicativo Java, ele ser&aacute; ignorado ou a a&ccedil;&atilde;o padr&atilde;o ser&aacute; executada. </p>
<p>A exce&ccedil;&atilde;o a essa regra est&aacute; no Windows, em que
para um sinal gerado externamente (por exemplo, quando voc&ecirc; pressiona CTRL-BREAK)
um novo encadeamento &eacute; criado para executar a rotina de tratamento de sinais. Nesse caso, a rotina de tratamento de sinal da JVM executa seu processamento e, se uma rotina de tratamento de aplicativo para esse sinal for instalada e voc&ecirc; n&atilde;o tiver especificado a op&ccedil;&atilde;o de linha de comandos <strong>-Xnosigchain</strong>, essa rotina de tratamento de aplicativo ser&aacute; chamada.</p>
<p>Com rela&ccedil;&atilde;o aos sinais de exce&ccedil;&atilde;o e erro, a JVM: </p>
<ul>
<li>Trata a condi&ccedil;&atilde;o e se recupera, ou</li>
<li>Insere uma seq&uuml;&ecirc;ncia de encerramento controlado em que ela: 
<ol type="1">
<li>Produz um Javadump, para descrever o estado da JVM em um ponto da falha</li>
<li>Chama a rotina de tratamento de sinais do aplicativo em raz&atilde;o desse sinal.</li>
<li>Chama todos os ganchos de interrup&ccedil;&atilde;o instalados pelo aplicativo.</li>
<li>Executa a limpeza necess&aacute;ria para fornecer um encerramento limpo.</li></ol></li></ul> Para obter informa&ccedil;&otilde;es sobre como gravar um ativador que especifique os ganchos acima, consulte: <a href="http://www.ibm.com/developerworks/java/library/i-signalhandling/">http://www-106.ibm.com/developerworks/java/library/i-signalhandling/</a>. Esse item foi gravado para o Java V1.3.1, mais ainda se aplica a vers&otilde;es mais recentes.
<p>Com rela&ccedil;&atilde;o aos sinais de interrup&ccedil;&atilde;o, a JVM insere tamb&eacute;m uma seq&uuml;&ecirc;ncia de
encerramento controlado, mas dessa vez ela &eacute; tratada como uma termina&ccedil;&atilde;o normal: </p>
<ul>
<li>Chama a rotina de tratamento de sinais do aplicativo em raz&atilde;o desse sinal.</li>
<li>Executa todos os ganchos de encerramento do aplicativo.</li>
<li>Chama todos os ganchos de sa&iacute;da instalados pelo aplicativo.</li>
<li>Executa a limpeza necess&aacute;ria da JVM.</li></ul>
<p>O encerramento &eacute; id&ecirc;ntico ao encerramento iniciado por uma chamada para o m&eacute;todo
<tt class="xph">System.exit()</tt>. </p>
<p>Outros sinais utilizados pela JVM destinam-se a prop&oacute;sitos de controle interno e
n&atilde;o causam a sua termina&ccedil;&atilde;o. O &uacute;nico sinal de controle de interesse &eacute; SIGBREAK, o que faz com que um
Javadump seja gerado. </p>
<a name="sighand"></a>
<h3 id="sighand"><a href="#ToC_41">Sinais Utilizados pela JVM </a></h3>
<p>A <a href="#sig_table">Tabela 1</a> a seguir mostra os sinais utilizados pela JVM. Os sinais
s&atilde;o agrupados na tabela por tipo ou uso, como se segue:</p>
<ul>
<li><strong>Exce&ccedil;&otilde;es:</strong> O sistema operacional faz surgir sincronicamente um
sinal de exce&ccedil;&atilde;o apropriado sempre que uma condi&ccedil;&atilde;o fatal ocorre. </li>
<li><strong>Erro:</strong> A JVM far&aacute; surgir um SIGABRT caso detecte uma condi&ccedil;&atilde;o
da qual ela n&atilde;o pode recuperar-se. </li>
<li><strong>Interrup&ccedil;&otilde;es:</strong> Os sinais de interrup&ccedil;&atilde;o surgem de maneira
ass&iacute;ncrona, de fora de um processo JVM, para solicitar encerramento. </li>
<li><strong>Controles:</strong> Outros sinais s&atilde;o utilizados pela JVM para
prop&oacute;sitos de controle. </li></ul>
<a name="sig_table"></a>
<table id="sig_table" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabela 1. Sinais Utilizados pela JVM</caption>
<thead valign="bottom">
<tr>
<th id="wq42" width="25%" align="left">Nome do Sinal</th>
<th id="wq43" width="25%" align="left">Tipo de Sinal</th>
<th id="wq44" width="25%" align="left">Descri&ccedil;&atilde;o</th>
<th id="wq45" width="25%" align="left">Desativado pelo -Xrs</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq42"><strong>SIGINT</strong></td>
<td headers="wq43">Interrup&ccedil;&atilde;o</td>
<td headers="wq44">Aten&ccedil;&atilde;o interativa (CTRL-C). A JVM sai normalmente.</td>
<td align="center" headers="wq45">Sim</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGTERM</strong></td>
<td headers="wq43">Interrup&ccedil;&atilde;o</td>
<td headers="wq44">Pedido de finaliza&ccedil;&atilde;o. A JVM sair&aacute; normalmente.</td>
<td align="center" headers="wq45">Sim</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGBREAK</strong></td>
<td headers="wq43">Controle</td>
<td headers="wq44">Um sinal de pausa proveniente de um terminal. A JVM utiliza isso para efetuar
Javadumps.</td>
<td align="center" headers="wq45">Sim</td>
</tr>
</tbody>
</table><span><font color="red"><span id="changed">|</span>O IBM JVM utiliza a manipula&ccedil;&atilde;o de exce&ccedil;&atilde;o estruturada e as APIs
<span id="changed">|</span>SetConsoleCtrlHandler(). Essas s&atilde;o desativadas com <strong>-Xrs</strong>. <strong>-Xnosigchain</strong> &eacute; ignorado no Windows.</font></span>
<p>Utilize a op&ccedil;&atilde;o <strong>-Xrs</strong> (reduz uso de sinais) para evitar que
a JVM manipule a maior parte dos sinais. Para obter informa&ccedil;&otilde;es adicionais, consulte a p&aacute;gina
do ativador de aplicativos Java da Sun em <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>Os sinais <tt class="xph">2 (SIGINT)</tt> e <tt class="xph">15 (SIGTERM)</tt> nos
encadeamentos da JVM fazem com que ela seja encerrada. Assim, uma rotina
de tratamento de sinais de aplicativo n&atilde;o deve tentar uma recupera&ccedil;&atilde;o
desse sinal a menos que a JVM n&atilde;o seja mais necess&aacute;ria. </p>
<a name="wq46"></a>
<h3 id="wq46"><a href="#ToC_42">Vinculando um Driver de C&oacute;digo Nativo &agrave; Biblioteca de Cadeia de Sinais</a></h3>
<p>O Runtime Environment cont&eacute;m um recurso de encadeamento de sinais. A cadeia de
sinais permite que a JVM interopere mais eficazmente com o c&oacute;digo nativo que instala suas
pr&oacute;prias rotinas de tratamento de sinais.</p>
<p>O recurso de encadeamento de sinais permite que um aplicativo estabele&ccedil;a um v&iacute;nculo e carregue a biblioteca compartilhada jsig.dll antes da biblioteca compartilhada msvcrt.dll. A biblioteca jsig.dll
assegura que as chamadas para <tt class="xph">signal()</tt> sejam interceptadas para que suas
rotinas de tratamento n&atilde;o substituam as rotinas de tratamento de sinais da JVM. Em vez disso, essas chamadas
salvam as novas rotinas de tratamento de sinais ou as "encadeia" ocultas sob as
rotinas de tratamento instaladas pela JVM. Mais tarde, quando qualquer um desses
sinais surgir e for verificado que eles n&atilde;o se destinam &agrave; JVM, as rotinas de
tratamento pr&eacute;-instaladas ser&atilde;o chamadas.</p>
<p>Para utilizar jsig.dll, efetue o link com o aplicativo que cria ou
incorpora uma JVM.</p>
<a name="wq47"></a>
<h2 id="wq47"><a href="#ToC_43">Transformando Documentos XML</a></h2>
<p>O IBM SDK cont&eacute;m o processador XSLT4J e o analisador XML4J que est&atilde;o em conformidade
com a <a href="http://java.sun.com/xml/jaxp/">especifica&ccedil;&atilde;o do JAXP 1.3</a>. Essas ferramentas permitem que voc&ecirc;
analise e transforme documentos XML, independentemente de qualquer implementa&ccedil;&atilde;o de processamento
XML espec&iacute;fico. Ao utilizar "Factory Finders" para localizar as implementa&ccedil;&otilde;es SAXParserFactory,
 DocumentBuilderFactory e TransformerFactory, seu aplicativo
poder&aacute; alternar entre diferentes implementa&ccedil;&otilde;es sem precisar alterar qualquer c&oacute;digo.</p>
<p><font color="red"><span id="changed">|</span>A tecnologia XML inclu&iacute;da com o IBM SDK &eacute; semelhante ao
<span id="changed">|</span>Apache Xerces Java e Apache Xalan Java.  Consulte
<span id="changed">|</span><a href="http://xml.apache.org/xerces2-j/"> http://xml.apache.org/xerces2-j/</a> e
<span id="changed">|</span><a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/ </a> para obter
<span id="changed">|</span>mais informa&ccedil;&otilde;es. </font></p>
<p>O processador XSLT4J permite que voc&ecirc; escolha entre o processador Interpretativo XSLT
original ou o novo processador de Compila&ccedil;&atilde;o XSLT. O processador Interpretativo
foi projetado para aprimorar e depurar ambientes. Ele suporta as fun&ccedil;&otilde;es de extens&atilde;o
XSLT n&atilde;o suportadas pelo processador de Compila&ccedil;&atilde;o XSLT. O processador de Compila&ccedil;&atilde;o XSLT
foi projetado para ambientes de tempo de execu&ccedil;&atilde;o de alto desempenho;
ele gera um mecanismo de transforma&ccedil;&atilde;o, ou <em>translet</em>,
 de uma folha de estilo XSL. Essa abordagem separa a interpreta&ccedil;&atilde;o das instru&ccedil;&otilde;es da
folha de estilo de seu aplicativo de tempo de execu&ccedil;&atilde;o para dados XML.  </p>
<p>O processador Interpretativo XSLT &eacute; o processador padr&atilde;o. Para selecionar o
processador de Compila&ccedil;&atilde;o XSLT voc&ecirc; pode: </p>
<ul>
<li>Alterar a entrada no arquivo jaxp.properties (localizado
em C:\Arquivos de Programas\IBM\Java50\jre\lib), ou </li>
<li>Definir a propriedade do sistema da chave javax.xml.transform.TransformerFactory
para org.apache.xalan.xsltc.trax.TransformerFactoryImpl.</li></ul><p class="indatacontent">  </p>
<p>Para implementar propriedades no arquivo jaxp.properties, copie jaxp.properties.sample
para jaxp.properties em C:\Arquivos de Programas\IBM\Java50\. Esse arquivo tamb&eacute;m cont&eacute;m detalhes
completos sobre o procedimento utilizado para determinar as implementa&ccedil;&otilde;es que ser&atilde;o utilizadas
para o TransformerFactory, o SAXParserFactory e o DocumentBuilderFactory.</p>
<p>Para melhorar o desempenho ao transformar um objeto StreamSource
com um processador de Compila&ccedil;&atilde;o XSLT, especifique a classe com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager
como o fornecedor do servi&ccedil;o org.apache.xalan.xsltc.dom.XSLTCDTMManager.
 Para determinar o fornecedor de servi&ccedil;os, tente cada uma das etapas at&eacute; localizar org.apache.xalan.xsltc.dom.XSLTCDTMManager:</p>
<ol type="1">
<li>Verifique a configura&ccedil;&atilde;o da propriedade de sistema org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li>
<li>Verifique o valor da propriedade org.apache.xalan.xsltc.dom.XSLTCDTMManager
no arquivo C:\Arquivos de Programas\IBM\Java50\lib\xalan.properties.</li>
<li>Verifique o conte&uacute;do do arquivo META-INF\services\org.apache.xalan.xsltc.dom.XSLTCDTMManager
para um nome de classe.</li>
<li>Utilize o fornecedor de servi&ccedil;os padr&atilde;o, org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li></ol><p class="indatacontent">O processador de Compila&ccedil;&atilde;o XSLT detecta o fornecedor de servi&ccedil;os para o servi&ccedil;o org.apache.xalan.xsltc.dom.XSLTCDTMManager
quando um objeto javax.xml.transform.TransformerFactory &eacute; criado.
Quaisquer objetos javax.xml.transform.Transformer ou javax.xml.transform.sax.TransformerHandler
criados utilizando esse objeto TransformerFactory utilizar&atilde;o
o mesmo fornecedor de servi&ccedil;os. Os fornecedores de servi&ccedil;os s&oacute; podem ser alterados modificando
uma das configura&ccedil;&otilde;es descritas acima e depois criando um novo objeto
TransformerFactory.</p>
<a name="wq49"></a>
<h3 id="wq49"><a href="#ToC_44">Utilizando uma Vers&atilde;o Mais Antiga do Xerces ou Xalan</a></h3>
<p>Se voc&ecirc; estiver utilizando uma vers&atilde;o mais antiga do Tomcat, essa limita&ccedil;&atilde;o poder&aacute; existir.</p>
<p>Se voc&ecirc; estiver utilizando uma vers&atilde;o mais antiga do Xerces (anterior a 2.0) ou Xalan (anterior
a 2.3) na substitui&ccedil;&atilde;o confirmada, poder&aacute; obter uma exce&ccedil;&atilde;o de ponteiro nulo quando
ativar o aplicativo. Essa exce&ccedil;&atilde;o ocorre porque essas vers&otilde;es mais antigas
n&atilde;o manipulam o arquivo jaxp.properties corretamente. </p>
<p>Para evitar essa situa&ccedil;&atilde;o, utilize uma das seguintes solu&ccedil;&otilde;es alternativas:</p>
<ul>
<li>Fa&ccedil;a upgrade para uma vers&atilde;o mais recente do aplicativo que implemente a especifica&ccedil;&atilde;o do
Java API para XML Programming (JAXP) mais recente (http://java.sun.com/xml/jaxp/index.html).
<br /></li>
<li>Remova o arquivo jaxp.properties de C:\Arquivos de Programas\IBM\Java50\jre\lib.
<br /></li>
<li>Remova o coment&aacute;rio das entradas do arquivo jaxp.properties em C:\Arquivos de Programas\IBM\Java50\jre\lib.
<br /></li>
<li>Defina explicitamente o SAX Parser, DocumentBuilder ou Transformer Factory
utilizando a vari&aacute;vel de ambiente <strong>IBM_JAVA_OPTIONS</strong>. Exemplo:
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
  org.apache.xerces.jaxp.SAXParserFactoryImpl </pre>                     ou

<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</pre>                     ou

<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
  org.apache.xalan.processor.TransformerFactoryImpl  </pre>
<br /></li>
<li>Defina a propriedade do sistema para
<strong>javax.xml.parsers.SAXParserFactory </strong>,
<strong>javax.xml.parsers.DocumentBuilderFactory</strong> ou
<strong>javax.xml.transform.TransformerFactory</strong> a partir do
seu c&oacute;digo de aplicativo. Para obter um exemplo, consulte a especifica&ccedil;&atilde;o JAXP 1.3.
<br /></li></ul>
<a name="wq50"></a>
<h1 id="wq50"><a href="#ToC_45">Utilizando o SDK para Desenvolver os Aplicativos Java</a></h1>
<p>As se&ccedil;&otilde;es a seguir fornecem informa&ccedil;&otilde;es sobre como utilizar o SDK para Windows para
desenvolver aplicativos Java. Consulte <a href="#sdktools">Ferramentas do SDK</a> para obter detalhes
sobre as ferramentas dispon&iacute;veis.</p>
<a name="debugger"></a>
<h2 id="debugger"><a href="#ToC_46">Depurando os Aplicativos Java</a></h2>
<p>Para depurar os programas Java, utilize o aplicativo JDB (Java Debugger)
ou outros depuradores que comunicam utilizando o JPDA (Java Platform Debugger Architecture)
fornecido pelo SDK para Windows.</p>
<a name="jdb"></a>
<h3 id="jdb"><a href="#ToC_47">JDB (Java Debugger)</a></h3>
<p>O JDB (Java Debugger) &eacute; inclu&iacute;do no SDK para Windows. O depurador
&eacute; chamado pelo comando <strong>jdb</strong>; ele "conecta-se" &agrave;
JVM utilizando o JPDA. Para depurar um aplicativo Java:</p>
<ol type="1">
<li>Inicie a JVM com as seguintes op&ccedil;&otilde;es:
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<em>&lt;port></em>
     MyApp <em>&lt;MyApp args></em></pre></li>
<li>A JVM &eacute; iniciada, por&eacute;m suspende a execu&ccedil;&atilde;o antes de iniciar o aplicativo Java.
Em uma sess&atilde;o separada, voc&ecirc; pode conectar o depurador &agrave; JVM:
<pre class="xmp">jdb -attach <em>&lt;n&uacute;mero da porta></em></pre>O depurador ser&aacute; conectado &agrave; JVM e voc&ecirc;, agora, poder&aacute; emitir uma s&eacute;rie de comandos para examinar e controlar o
aplicativo Java; por exemplo, digite <tt class="xph">run</tt> para permitir a execu&ccedil;&atilde;o do aplicativo
Java. </li></ol>
<p>Para obter mais informa&ccedil;&otilde;es sobre as op&ccedil;&otilde;es do JDB, digite:</p>
<pre class="xmp">jdb -help</pre><p class="indatacontent">Para obter mais informa&ccedil;&otilde;es
sobre os comandos do JDB:</p>
<ol type="1">
<li>Digite <tt class="xph">jdb</tt></li>
<li>No prompt do jdb, digite <tt class="xph">help</tt></li></ol><p class="indatacontent"> </p>
<p>O JDB tamb&eacute;m pode ser utilizado para depurar aplicativos JDB em JPDA de
m&aacute;quinas remotas que utilizem um soquete TCP/IP para se conectar &agrave; JVM
remota. </p>
<ol type="1">
<li>Inicie a JVM como antes.</li>
<li>Conecte o depurador &agrave; m&aacute;quina remota:
<pre class="xmp">jdb -attach <em>&lt;nome da m&aacute;quina ou endere&ccedil;o ip></em>:<em>&lt;n&uacute;mero da porta></em></pre></li></ol>
<p>Ao ativar uma sess&atilde;o de depura&ccedil;&atilde;o utilizando o transporte dt_socket, verifique
se as portas especificadas est&atilde;o livres para utiliza&ccedil;&atilde;o. </p>
<p><font color="red"><span id="changed">|</span>A JVMDI (Java Virtual Machine Debugging Interface)
<span id="changed">|</span><em>n&atilde;o</em> &eacute; suportada neste release. Ela foi substitu&iacute;da pela JVMTI (Java
<span id="changed">|</span>Virtual Machine Tool Interface). </font></p>
<p>Para obter mais informa&ccedil;&otilde;es sobre o JDB e o JPDA e seu uso, consulte estes Web sites: </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">Determinando se o Aplicativo Est&aacute; Sendo
Executado em uma JVM de 32 ou 64 bits </a></h2>
<p>Alguns aplicativos Java devem ser capazes de determinar se est&atilde;o sendo
executados em uma JVM de 32
ou de 64 bits. Por exemplo, se o aplicativo tiver uma biblioteca de
c&oacute;digos nativos, ela dever&aacute; ser compilada separadamente nos formatos
32 e 64 bits das
plataformas que suportam ambos os modos de opera&ccedil;&atilde;o,
32 e 64 bits. Nesse caso,
seu aplicativo dever&aacute; carregar a biblioteca correta no tempo de execu&ccedil;&atilde;o,
pois n&atilde;o ser&aacute; poss&iacute;vel misturar c&oacute;digo de
32 e 64 bits. </p>
<p>A propriedade de sistema <strong>com.ibm.vm.bitmode</strong> permite que os aplicativos
determinem o modo em que a JVM est&aacute; executando. Ela retorna os seguintes
valores: </p>
<ul>
<li>32 - a JVM est&aacute; executando no modo de
32 bits</li>
<li>64 - a JVM est&aacute; executando no modo de 64 bits</li></ul><p class="indatacontent">Voc&ecirc; pode verificar o <strong>com.ibm.vm.bitmode</strong> a partir
do c&oacute;digo do aplicativo utilizando a chamada:</p>
<pre class="xmp">System.getProperty("com.ibm.vm.bitmode");</pre>
<a name="wq55"></a>
<h2 id="wq55"><a href="#ToC_49">Escrevendo Aplicativos JNI</a></h2>
<p>Os n&uacute;meros de vers&atilde;o v&aacute;lidos do JNI que os programas nativos podem especificar na chamada de API JNI_CreateJavaVM()
s&atilde;o:</p>
<ul>
<li>JNI_VERSION_1_2(0x00010002)</li>
<li>JNI_VERSION_1_4(0x00010004)</li></ul><p class="indatacontent">Esse n&uacute;mero de vers&atilde;o determina somente o n&iacute;vel da interface nativa do JNI
a ser utilizada. O n&iacute;vel real da JVM criado &eacute; especificado pelas bibliotecas J2SE
(isto &eacute;, v5.0). A API da interface do JNI <em>n&atilde;o</em> afeta a especifica&ccedil;&atilde;o de idioma implementada pela JVM, as
APIs da biblioteca de classes ou qualquer outra &aacute;rea do comportamento da JVM.  Para obter informa&ccedil;&otilde;es adicionais,
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>Se seu aplicativo precisar de duas bibliotecas do JNI,
uma criada para 32 bits e outra para 64 bits, utilize a propriedade do sistema <strong>com.ibm.vm.bitmode</strong> para determinar se est&aacute; executando com um JVM de 32 bits ou 64 bits
e escolha a biblioteca de propriedades. </p>
<a name="wq56"></a>
<div class="notetitle" id="wq56">Nota:</div>
<div class="notebody">A Vers&atilde;o 1.1 do JNI (Java Native Interface) n&atilde;o &eacute; suportada.</div>
<a name="wq57"></a>
<h2 id="wq57"><a href="#ToC_50">Trabalhando com Applets</a></h2>
<p>Com o Applet Viewer, voc&ecirc; pode executar um ou mais applets que
sejam chamados pela refer&ecirc;ncia em uma p&aacute;gina da Web (arquivo HTML) utilizando a tag APPLET.
O Applet Viewer localiza as tags APPLET no arquivo HTML e executa os applets,
em janelas separadas, como especificado pelas tags.</p>
<p>Como o Applet Viewer
destina-se &agrave; visualiza&ccedil;&atilde;o de applets, ele n&atilde;o pode exibir uma p&aacute;gina da Web inteira que contenha muitas
tags HTML. Ele analisa apenas as tags APPLET e nenhum outro HTML na p&aacute;gina da Web.</p>
<a name="wq58"></a>
<h3 id="wq58"><a href="#ToC_51">Executando Applets com o Applet Viewer</a></h3>
<p>Para executar um applet com o Applet Viewer, digite o seguinte em um prompt de  shell:</p>
<pre class="xmp">   appletviewer <em>nome</em></pre>
<p>em que <em>nome</em> &eacute; uma das seguintes op&ccedil;&otilde;es:</p>
<ul>
<li>O nome de um arquivo HTML que chama um applet</li>
<li>A URL de uma p&aacute;gina da Web que chama um applet</li></ul>
<p>Por exemplo, para chamar o Applet Viewer em um arquivo HTML que chama um
applet, digite em um prompt de  shell:</p>
<p></p>
<pre class="xmp">appletviewer &lt;demo>\GraphLayout\example1.html</pre><p class="indatacontent"> em que <em>&lt;demo></em> &eacute; substitu&iacute;do pelo caminho completo onde voc&ecirc; descompactou o pacote demo.</p>
<p>Por exemplo, <tt>http://java.sun.com/applets/NervousText/example1.html</tt> &eacute; a URL de uma p&aacute;gina da Web que chama um applet. Para chamar o
Applet Viewer nessa p&aacute;gina da Web, digite em um prompt shell:</p>
<p></p>
<pre class="xmp">appletviewer http://java.sun.com/applets/NervousText/example1.html</pre><p class="indatacontent"> </p>
<p>O Applet Viewer n&atilde;o reconhece a op&ccedil;&atilde;o <strong>charset</strong>
da tag &lt;META>. Se o arquivo que o appletviewer carregar n&atilde;o for codificado como
o padr&atilde;o do sistema, poder&aacute; ocorrer uma exce&ccedil;&atilde;o de E/S. Para evitar a exce&ccedil;&atilde;o,
utilize a op&ccedil;&atilde;o <strong>-encoding</strong> ao executar o appletviewer.
 Exemplo: </p>
<pre class="xmp">appletviewer -encoding JISAutoDetect sample.html</pre>
<a name="wq59"></a>
<h3 id="wq59"><a href="#ToC_52">Depurando Applets com o Applet Viewer</a></h3>
<p>&Eacute; poss&iacute;vel depurar applets utilizando a op&ccedil;&atilde;o <strong>-debug</strong>
do Applet Viewer. Ao depurar applets, ser&aacute; recomendado que voc&ecirc; chame o
Applet Viewer do diret&oacute;rio que cont&eacute;m o arquivo HTML que chama o
applet. Exemplo:</p>
<p></p>
<pre class="xmp">cd &lt;demo>\TicTacToe
appletviewer -debug example1.html</pre>
<p>Onde <em>&lt;demo></em> &eacute; substitu&iacute;do pelo
caminho completo onde voc&ecirc; descompactou o pacote demo.</p>
<p>A documenta&ccedil;&atilde;o sobre como depurar applets utilizando o Applet Viewer
pode ser localizada no Web site da 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">Configurando a Aloca&ccedil;&atilde;o da Mem&oacute;ria de P&aacute;gina Grande</a></h2>
<span id="changed">|</span><p>&Eacute; poss&iacute;vel ativar o suporte a p&aacute;ginas grandes, nos sistemas com suporte
<span id="changed">|</span>para tal, iniciando o Java com a op&ccedil;&atilde;o <strong>-Xlp</strong>. </p>
<span id="changed">|</span><p>O uso da p&aacute;gina grande &eacute; pretendido principalmente para fornecer melhorias de desempenho
<span id="changed">|</span>para aplicativos que aloquem muita mem&oacute;ria e freq&uuml;entemente acessem essa mem&oacute;ria.
<span id="changed">|</span>As melhorias de desempenho de p&aacute;gina grande s&atilde;o ocasionadas principalmente pelo n&uacute;mero reduzido
<span id="changed">|</span>de falhas no TLB (Translation Lookaside Buffer). Os TLB mapeia um intervalo maior
<span id="changed">|</span>de mem&oacute;ria virtual e, portanto, causa esse aprimoramento. </p>
<span id="changed">|</span><p>Para que a JVM utilize p&aacute;ginas grandes, seu sistema dever&aacute; ter um n&uacute;mero adequado
<span id="changed">|</span>de p&aacute;ginas grandes cont&iacute;guas dispon&iacute;veis. Se, mesmo quando h&aacute; paginas
<span id="changed">|</span>suficientes dispon&iacute;veis, n&atilde;o foi poss&iacute;vel alocar p&aacute;ginas grandes,
<span id="changed">|</span>possivelmente as p&aacute;ginas grandes n&atilde;o s&atilde;o cont&iacute;guas.</p>
<span id="changed">|</span><p>Aloca&ccedil;&otilde;es grandes de p&aacute;gina obter&atilde;o &ecirc;xito somente se a pol&iacute;tica
<span id="changed">|</span>administrativa local do usu&aacute;rio JVM estiver configurada para permitir
<span id="changed">|</span>"Lock pages in memory". </p></font>
<a name="wq60"></a>
<h2 id="wq60"><a href="#ToC_54">Suporte ao CORBA</a></h2>
<p>O Java 2 Platform, Standard Edition (J2SE) suporta, pelo menos, as
especifica&ccedil;&otilde;es definidas em <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/doc-files/compliance.html">Official
Specifications for CORBA support in J2SE (V1.5)</a>. Em alguns casos, o IBM J2SE ORB suporta as vers&otilde;es mais recentes das
especifica&ccedil;&otilde;es.</p>
<a name="wq61"></a>
<h3 id="wq61"><a href="#ToC_55">Suporte para GIOP 1.2</a></h3>
<p>Este SDK suporta todas as vers&otilde;es de GIOP, como definido nos cap&iacute;tulos 13 e
15 da especifica&ccedil;&atilde;o do CORBA 2.3.1, documento OMG <em>formal/99-10-07</em>, o qual pode ser obtido em:</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>O GIOP bidirecional n&atilde;o &eacute; suportado.</p>
<a name="wq62"></a>
<h3 id="wq62"><a href="#ToC_56">Suporte para Interceptadores Port&aacute;teis</a></h3>
<p>Este SDK suporta Interceptadores Port&aacute;teis, como definido pelo OMG no
documento <em>ptc/01-03-04</em>, o qual pode ser obtido
em:</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>Os Interceptadores Port&aacute;teis s&atilde;o ganchos para o ORB por meio dos quais os servi&ccedil;os ORB
podem interceptar o fluxo normal de execu&ccedil;&atilde;o do ORB.</p>
<a name="wq63"></a>
<h3 id="wq63"><a href="#ToC_57">Suporte para Servi&ccedil;o de Nomes Interoper&aacute;vel</a></h3>
<p>Este SDK suporta o Servi&ccedil;o de Nomes Interoper&aacute;vel, como definido pelo
OMG no documento <em>ptc/00-08-07</em>, o qual pode ser obtido
em:</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>A porta padr&atilde;o utilizada pelo Servidor de Nomes Transientes (o comando <tt>tnameserv</tt>), quando nenhum par&acirc;metro <strong>ORBInitialPort</strong>
&eacute; fornecido, foi alterada de <em>900</em> para <em>2809</em>, que &eacute; o n&uacute;mero da porta registrado no IANA (Internet
Assigned Number Authority) para um Servi&ccedil;o de Nomes do CORBA. Os programas que dependem
desse padr&atilde;o podem precisar ser atualizados para funcionarem com esta vers&atilde;o. </p>
<p>O contexto inicial retornado do Servidor de Nomes Transientes agora
&eacute; <tt>org.omg.CosNaming.NamingContextExt</tt>. Os programas
existentes que reduzem a refer&ecirc;ncia a um contexto <tt>org.omg.CosNaming.NamingContext</tt> ainda funcionam e n&atilde;o precisam ser recompilados. </p>
<p>O ORB suporta os par&acirc;metros <strong>-ORBInitRef</strong> e <strong>-ORBDefaultInitRef</strong> que s&atilde;o definidos pela especifica&ccedil;&atilde;o do Servi&ccedil;o de Nomes
Interoper&aacute;vel; a opera&ccedil;&atilde;o ORB::string_to_object agora suporta
os formatos de cadeia ObjectURL (corbaloc: e corbaname:) que s&atilde;o definidos pela
especifica&ccedil;&atilde;o do Servi&ccedil;o de Nomes Interoper&aacute;vel. </p>
<p>O OMG especifica um m&eacute;todo ORB::register_initial_reference para registrar
um servi&ccedil;o no Servi&ccedil;o de Nomes Interoper&aacute;vel. No entanto, esse m&eacute;todo n&atilde;o est&aacute;
dispon&iacute;vel na API do Sun Java Core em Vers&atilde;o 5.0. Os programas que precisam registrar
um servi&ccedil;o na vers&atilde;o atual devem chamar esse m&eacute;todo na classe de implementa&ccedil;&atilde;o
do ORB interno da IBM. Por exemplo, para registrar um servi&ccedil;o "MyService":</p>
<p></p>
<pre class="xmp">((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MyService",
serviceRef); </pre>
<p>em que <tt>orb</tt> &eacute; uma inst&acirc;ncia de
<tt> org.omg.CORBA.ORB</tt>, retornada de
<tt>ORB.init() </tt>, e
<tt>serviceRef</tt> &eacute; um objeto CORBA, conectado ao
ORB. Esse &eacute; um mecanismo intermedi&aacute;rio, e n&atilde;o &eacute; compat&iacute;vel com vers&otilde;es
futuras ou port&aacute;teis para ORBs n&atilde;o-IBM. </p>
<a name="wq64"></a>
<h3 id="wq64"><a href="#ToC_58">Propriedades do Sistema para Rastrear o ORB</a></h3>
<p>Um recurso de depura&ccedil;&atilde;o de tempo de execu&ccedil;&atilde;o fornece capacidade de utiliza&ccedil;&atilde;o aprimorada. Voc&ecirc; pode consider&aacute;-lo
&uacute;til para diagn&oacute;stico de problemas ou ele pode ser solicitado pela equipe de servi&ccedil;os da IBM.
O rastreio &eacute; controlado por tr&ecirc;s propriedades de sistema. </p>
<ul>
<li>Para ativar o rastreio, defina <tt><strong>com.ibm.CORBA.Debug</strong>=true</tt> .</li>
<li>Para formatar e incluir nas mensagens GIOP de rastreio enviadas e recebidas, defina <tt><strong>com.ibm.CORBA.CommTrace</strong>=true</tt>.
Por padr&atilde;o, o rastreio ORB busca arquivos que possuem nomes no formato orbtrc.DDMMYYYY.HHmm.SS.txt.</li>
<li>Para envi&aacute;-lo para um outro arquivo, defina <tt><strong>com.ibm.CORBA.Debug.Output</strong>=&lt;nome do arquivo></tt>. </li></ul><p class="indatacontent"> Por exemplo, para rastrear eventos e mensagens GIOP formatadas, digite:</p>
<pre class="xmp"> java -Dcom.ibm.CORBA.Debug=true
		-Dcom.ibm.CORBA.CommTrace=true myapp   </pre><p class="indatacontent"> </p>
<p>N&atilde;o ative o rastreio para opera&ccedil;&atilde;o normal, pois ele pode causar degrada&ccedil;&atilde;o no
desempenho. Mesmo que voc&ecirc; tenha desativado o rastreio, o FFDC (First Failure
Data Capture) ainda funciona, de forma que apenas os erros s&eacute;rios sejam relatados.
Se um arquivo de sa&iacute;da de depura&ccedil;&atilde;o for gerado, examine-o para analisar o problema. Por
exemplo, o servidor pode ter parado sem executar um ORB.shutdown().</p>
<p>O conte&uacute;do e o formato da sa&iacute;da de rastreio variam de acordo com a vers&atilde;o.</p>
<a name="wq65"></a>
<h3 id="wq65"><a href="#ToC_59">Propriedades do Sistema para Ajustar o ORB</a></h3>
<p>As seguintes propriedades ajudam voc&ecirc; a ajustar o ORB:</p>
<ul>
<li>Para controlar a fragmenta&ccedil;&atilde;o do GIOP 1.2, defina a propriedade de sistema <strong>com.ibm.CORBA.FragmentSize</strong>.
<p>Por exemplo, para definir o tamanho do fragmento para
4096 bytes:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.FragmentSize=4096 myapp
</pre>
<p>O tamanho padr&atilde;o do fragmento &eacute; 1024 bytes. Voc&ecirc; pode desativar a fragmenta&ccedil;&atilde;o
definindo o tamanho do fragmento como 0.</p> </li>
<li>Em uma rede heterog&ecirc;nea, a resposta para um Pedido CORBA pode ser retardada
ou perdida. Voc&ecirc; pode definir o tempo m&aacute;ximo de espera utilizando a propriedade de sistema <strong>com.ibm.CORBA.RequestTimeout</strong>. Pode tamb&eacute;m utilizar <strong>com.ibm.CORBA.LocateRequestTimeout</strong> para controlar o tempo limite para LocateRequests.
Por exemplo, para restringir ambos os retardos para 30 segundos, digite:
<pre class="xmp">java -Dcom.ibm.CORBA.RequestTimeout=30
     -Dcom.ibm.CORBA.LocateRequestTimeout=30 myapp</pre>
<p>Por padr&atilde;o, o
ORB aguarda indefinidamente por uma resposta. Para impedir que as conex&otilde;es
sejam encerradas desnecessariamente, n&atilde;o defina um valor muito baixo para
o tempo limite. </p></li>
<li>Se seu programa estiver fornecendo um servi&ccedil;o na rede, poder&aacute; ser necess&aacute;rio
definir, para um valor conhecido, o n&uacute;mero da porta da qual o ORB l&ecirc;
os pedidos recebidos. Isso pode ser controlado utilizando a propriedade de sistema <strong>com.ibm.CORBA.ListenerPort</strong>.
<p> Por exemplo, para que o ORB utilize a porta
1050, digite:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.ListenerPort=1050 myapp</pre>
<p>Se essa propriedade for definida, o ORB come&ccedil;ar&aacute; a atender assim que for inicializado.
Caso contr&aacute;rio, ele come&ccedil;ar&aacute; a atender somente quando for solicitado. </p></li></ul>
<a name="wq66"></a>
<h3 id="wq66"><a href="#ToC_60">Permiss&otilde;es de Seguran&ccedil;a do Java 2 para o ORB</a></h3>
<p>Ao executar um Java 2 SecurityManager, a chamada de alguns m&eacute;todos
nas classes de API do CORBA pode fazer com que seja feita verifica&ccedil;&otilde;es de permiss&otilde;es, o que
pode resultar em um SecurityException. Os m&eacute;todos afetados incluem o seguinte:</p>
<p></p>
<a name="corbatable"></a>
<table id="corbatable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabela 2. M&eacute;todos afetados ao executar com o Java 2 SecurityManager</caption>
<thead valign="bottom">
<tr>
<th id="wq67" width="32%" align="left">Classe/Interface</th>
<th id="wq68" width="32%" align="left">M&eacute;todo</th>
<th id="wq69" width="34%" align="left">Permiss&atilde;o Necess&aacute;ria</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 />
Pedido<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 />
Pedido<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 />
Pedido<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>Se seu programa utilizar qualquer um desses m&eacute;todos, assegure-se de que ele tenha as
permiss&otilde;es necess&aacute;rias. </p>
<a name="wq70"></a>
<h3 id="wq70"><a href="#ToC_61">Classes de Implementa&ccedil;&atilde;o do ORB</a></h3>
<p>As classes de implementa&ccedil;&atilde;o do ORB neste release s&atilde;o:</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>Esses s&atilde;o os valores padr&atilde;o e &eacute; aconselh&aacute;vel que voc&ecirc; n&atilde;o defina essas propriedades
ou fa&ccedil;a refer&ecirc;ncia &agrave;s classes de implementa&ccedil;&atilde;o diretamente.  Para obter portabilidade, fa&ccedil;a refer&ecirc;ncia
somente &agrave;s classes de API do CORBA e n&atilde;o &agrave; implementa&ccedil;&atilde;o. Esses valores
podem ser alterados em releases futuros. </p>
<a name="rmi-iiop"></a>
<h2 id="rmi-iiop"><a href="#ToC_62">RMI sobre IIOP</a></h2>
<p>O Java RMI (Remote Method Invocation) fornece um mecanismo simples para executar a programa&ccedil;&atilde;o
Java distribu&iacute;da. O RMI sobre IIOP (RMI-IIOP) utiliza o protocolo IIOP
(Internet Inter-ORB) padr&atilde;o do CORBA (Common Object Request Broker Architecture)
para estender o Java RMI base para executar a comunica&ccedil;&atilde;o. Isso permite direcionar a intera&ccedil;&atilde;o
com quaisquer outros ORBs (Object Request Brokers) do CORBA, independentemente de terem sido implementados
no Java ou em outra linguagem de programa&ccedil;&atilde;o. </p>
<p>A seguinte documenta&ccedil;&atilde;o est&aacute; dispon&iacute;vel:</p>
<ul>
<li>O <a href="http://www.ibm.com/developerworks/java/rmi-iiop">Guia do Programador do RMI-IIOP</a> &eacute; uma
introdu&ccedil;&atilde;o para escrever programas RMI-IIOP. O guia &eacute; instalado quando voc&ecirc;
instala esta documenta&ccedil;&atilde;o. 
<br /></li>
<li>O diret&oacute;rio demo  cont&eacute;m:
<ul>
<li>Um exemplo "Hello World" que pode alternar entre o JRMP (Java Remote Method
Protocol) e os protocolos IIOP (demo\rmi-iiop\hello)
<br /></li>
<li>Um exemplo "Hello World" que interage com um programa IDL padr&atilde;o (demo\rmi-iiop\idl)
<br /></li></ul></li>
<li>O documento <em>Linguagem Java para Mapeamento IDL</em> &eacute; uma
especifica&ccedil;&atilde;o t&eacute;cnica detalhada do RMI-IIOP e pode ser encontrado em:
<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">Implementando o Conjunto da Rotina de Tratamento de Conex&atilde;o para RMI</a></h2>
<p>O conjunto de encadeamento para as Rotinas de Tratamento de Conex&atilde;o do RMI <em>n&atilde;o</em> &eacute;
ativado por padr&atilde;o.</p>
<p>Para ativar o conjunto de conex&atilde;o implementado no n&iacute;vel TCPTransport do RMI,
defina a op&ccedil;&atilde;o </p>
<pre class="xmp">-Dsun.rmi.transport.tcp.connectionPool=true (ou qualquer valor que n&atilde;o seja nulo)</pre>
<p>Essa vers&atilde;o do Runtime Environment n&atilde;o possui nenhuma defini&ccedil;&atilde;o que
voc&ecirc; possa utilizar para limitar o n&uacute;mero de encadeamentos no conjunto de conex&atilde;o.</p>
<p>Para obter informa&ccedil;&otilde;es adicionais, consulte o site do Java da Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq71"></a>
<h2 id="wq71"><a href="#ToC_64">Suporte ao BiDirectional Avan&ccedil;ado</a></h2>
<p>O IBM SDK inclui suporte ao BiDirectional avan&ccedil;ado. Para obter mais informa&ccedil;&otilde;es,
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>.O Javadoc para o pacote BiDirectional &eacute; fornecido com o SDK no arquivo docs/apidoc.zip.</p>
<a name="bigd"></a>
<h2 id="bigd"><a href="#ToC_65">BigDecimal Avan&ccedil;ado</a></h2><font color="red"><span id="changed">|</span>
<span id="changed">|</span><p>No Java 5.0, a classe IBM BigDecimal foi adotada pela Sun como java.math.BigDecimal.
<span id="changed">|</span> A IBM n&atilde;o mant&eacute;m mais o com.ibm.math.BigDecimal e est&aacute; sinalizado como desaprovado.
<span id="changed">|</span> Recomenda-se migrar o c&oacute;digo Java existente para utilizar o java.math.BigDecimal.</p>
<span id="changed">|</span><p>O novo java.math.BigDecimal utiliza os mesmos m&eacute;todos que o
<span id="changed">|</span>java.math.BigDecimal e o com.ibm.math.BigDecimal anteriores.  O c&oacute;digo existente que utiliza o java.math.BigDecimal
<span id="changed">|</span>continua funcionando corretamente.</p>
<span id="changed">|</span><p>Para migrar o c&oacute;digo Java existente para utilizar a classe java.math.BigDecimal, altere
<span id="changed">|</span>a instru&ccedil;&atilde;o de importa&ccedil;&atilde;o no in&iacute;cio do arquivo java de: <tt class="xph">importar com.ibm.math.*;</tt> para <tt class="xph">importar java.math,*;</tt>.</p></font>
<a name="wq72"></a>
<h2 id="wq72"><a href="#ToC_66">Suporte ao S&iacute;mbolo Euro</a></h2>
<p>O IBM SDK and Runtime Environment define   o Euro como a moeda padr&atilde;o para os pa&iacute;ses da EMU
(Uni&atilde;o Monet&aacute;ria Europ&eacute;ia) para datas em ou ap&oacute;s 1&ordm; de janeiro de 2002.</p>
<p>Para utilizar a moeda nacional antiga, especifique <tt>-Duser.variant=PREEURO</tt> na linha de comandos Java.</p>
<p>Se voc&ecirc; estiver executando os c&oacute;digos do idioma ingl&ecirc;s (Reino Unido), dinamarqu&ecirc;s ou su&eacute;co e desejar utilizar
o Euro, especifique <tt>-Duser.variant=EURO</tt> na
linha de comandos Java.</p>
<a name="jcommchapter"></a>
<h1 id="jcommchapter"><a href="#ToC_67">Utilizando o Java Communications API (JavaComm)</a></h1>
<p>O pacote do Java Communications API (Application Programming Interface)
(JavaComm) &eacute; um pacote opcional fornecido para ser utilizado com o Runtime Environment
para Windows. Instale o JavaComm independentemente do SDK ou Runtime Environment.</p>
<p>O JavaComm API fornece aos aplicativos Java uma forma independente de plataforma de
executar comunica&ccedil;&otilde;es das portas seriais e paralelas para tecnologias como
correio de voz, fax e cart&otilde;es inteligentes. Depois de gravar as comunica&ccedil;&otilde;es das portas seriais e paralelas
para seus aplicativos, inclua esses arquivos em seu aplicativo.</p>
<p>O Java Communications API suporta as portas seriais Electronic Industries Association
(EIA)-232 (RS232) e as portas paralelas Institute of Electrical and Electronics
Engineers (IEEE) 1284; ela &eacute; suportada em sistemas que tenham o
Runtime Environment da IBM, Vers&atilde;o 5.0.</p>
<p>Utilizando o Java Communications API, voc&ecirc; pode:</p>
<ul>
<li>Listar portas em um sistema</li>
<li>Abrir e reivindicar direito &agrave; propriedade de portas</li>
<li>Resolver conten&ccedil;&atilde;o de direito &agrave; propriedade de porta entre aplicativos que utilizam o Java
Communications API</li>
<li>Executar monitora&ccedil;&atilde;o de porta de E/S ass&iacute;ncrona e s&iacute;ncrona por meio de
notifica&ccedil;&atilde;o de eventos</li>
<li>Receber eventos de estilo bean que descrevem as altera&ccedil;&otilde;es de estado da porta</li></ul>
<a name="instcomm"></a>
<h2 id="instcomm"><a href="#ToC_68">Instalando o Java Communications API</a></h2>
<p>Voc&ecirc; precisa certificar-se de que uma c&oacute;pia do SDK ou Runtime Environment esteja instalada
antes de instalar o Java Communications API.</p>
<p>Para instalar o Java Communications API de um arquivo zip :</p>
<ol type="1">
<li>Coloque o arquivo zip do Java Communications API,
ibm-java2-javacomm-50-win-i386.zip, no diret&oacute;rio de
instala&ccedil;&atilde;o do SDK ou Runtime Environment. Se voc&ecirc; instalou
no diret&oacute;rio padr&atilde;o, este &eacute; C:\Arquivos de Programas\IBM\Java50\.</li>
<li>Descompacte o arquivo.Esses arquivos s&atilde;o extra&iacute;dos desta forma:
<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>Se voc&ecirc; aceitou o diret&oacute;rio padr&atilde;o quando instalou o
Runtime Environment, o arquivo comm.jar est&aacute; em C:\Arquivos de Programas\IBM\Java50\jre\lib\ext.</p>
<p>Se o arquivo for descompactado em outro diret&oacute;rio, os arquivos
ser&atilde;o colocados na mesma estrutura de diret&oacute;rio; por&eacute;m C:\Arquivos de Programas\IBM\Java50\ &eacute;
substitu&iacute;do pelo diret&oacute;rio onde voc&ecirc; descompactou o arquivo.</p> </li></ol>
<a name="wq74"></a>
<h2 id="wq74"><a href="#ToC_69">Configurando o Java Communications API</a></h2>
<p>Depois de instalar o Java Communications API, &eacute; necess&aacute;rio:</p>
<ul>
<li>Alterar o modo de acesso das portas seriais e paralelas.</li>
<li>Definir o PATH, se voc&ecirc; n&atilde;o o definiu quando instalou o Java. Consulte <a href="#pathcons">Definindo o PATH</a>.</li></ul>
<a name="wq75"></a>
<h2 id="wq75"><a href="#ToC_70">Limita&ccedil;&atilde;o ao Imprimir com o Java Communications API</a></h2>
<p>Ao imprimir com o Java Communications API, poder&aacute; ser necess&aacute;rio pressionar
"<strong>Avan&ccedil;o do Papel</strong>", "<strong>Continuar</strong>" ou similar
na impressora. </p>
<a name="wq76"></a>
<h2 id="wq76"><a href="#ToC_71">Desinstalando o Java Communications API</a></h2>
<p>Para desinstalar o Java Communications API, exclua os seguintes arquivos do
diret&oacute;rio em que o Runtime Environment foi instalado:</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 padr&atilde;o, o Runtime Environment &eacute; instalado no diret&oacute;rio C:\Arquivos de Programas\IBM\Java50\.</p>
<a name="wq77"></a>
<h2 id="wq77"><a href="#ToC_72">Documenta&ccedil;&atilde;o do Java Communications API</a></h2>
<p>A documenta&ccedil;&atilde;o da API e as amostras do Java Communications API
podem ser localizadas no Web site da Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq78"></a>
<h1 id="wq78"><a href="#ToC_73">Implementando os Aplicativos Java</a></h1>
<a name="wq79"></a>
<h2 id="wq79"><a href="#ToC_74">Utilizando o Plug-in Java</a></h2>
<p>O Plug-in Java &eacute; um plug-in de navegador da Web. Ao utilizar o Java Plug-in,
voc&ecirc; pode ignorar a JVM padr&atilde;o de seu navegador da Web e utilizar um Runtime Environment
de sua prefer&ecirc;ncia para executar os applets ou beans no navegador.</p>
<p>&Eacute; necess&aacute;rio permitir o t&eacute;rmino do carregamento dos applets para evitar que o navegador seja 'interrompido'.
Por exemplo, se voc&ecirc; utilizar o bot&atilde;o <strong>Voltar</strong> e depois o bot&atilde;o <strong>Avan&ccedil;ar</strong> enquanto um applet estiver sendo carregado, pode ser que as p&aacute;ginas HTML
n&atilde;o sejam carregadas. </p>
<p>O Java Plug-in &eacute; documentado pela Sun em: <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 Suportados</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">Tabela 3. Navegadores suportados pelo Plug-in Java</font></caption>
<thead valign="bottom">
<tr>
<th id="wq80" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Sistema Operacional</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">Observe que o Internet Explorer 5.01, o navegador padr&atilde;o do Windows 2000,
<span id="changed">|</span>n&atilde;o &eacute; suportado.</font></p>
<a name="wq84"></a>
<h3 id="wq84"><a href="#ToC_76">Suporte a DOM (Document Object Model)</a></h3>
<p>Por causa das limita&ccedil;&otilde;es em determinados navegadores, voc&ecirc; talvez n&atilde;o consiga
implementar todas as fun&ccedil;&otilde;es do pacote org.w3c.dom.html.</p>
<ul>
<li>Uma sun.plugin.dom.exception.NotSupportedException &eacute; lan&ccedil;ada para algumas dessas fun&ccedil;&otilde;es.</li>
<li>Uma sun.plugin.dom.exception.InvalidStateException &eacute; lan&ccedil;ada quando o navegador n&atilde;o suporta um fun&ccedil;&atilde;o espec&iacute;fica.</li></ul>
<a name="wq85"></a>
<h3 id="wq85"><a href="#ToC_77">Utilizando Par&acirc;metros DBCS</a></h3>
<p>O Java Plug-in suporta caracteres de byte duplo (por exemplo, chin&ecirc;s tradicional
BIG-5, coreano, japon&ecirc;s) como par&acirc;metros para as marca&ccedil;&otilde;es <tt class="xph">&lt;APPLET></tt>, <tt class="xph">  &lt;OBJECT></tt> e <tt class="xph">&lt;EMBED></tt>. Ser&aacute; necess&aacute;rio selecionar a codifica&ccedil;&atilde;o de caractere correta para seu documento HTML,
para que o Plug-in Java possa analisar o par&acirc;metro. Especifique a codifica&ccedil;&atilde;o de caracteres para o documento HTML utilizando
a marca&ccedil;&atilde;o <tt class="xph">&lt;META></tt> na se&ccedil;&atilde;o <tt class="xph">&lt;HEAD></tt> desta forma:</p>
<pre class="xmp">&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"></pre><p class="indatacontent">Esse exemplo pede que o navegador utilize a codifica&ccedil;&atilde;o de caracteres Chinese BIG-5
para analisar a utiliza&ccedil;&atilde;o do arquivo HTML. Todos os par&acirc;metros s&atilde;o aprovados para o Plug-in Java corretamente.
No entanto, algumas das vers&otilde;es mais antigas dos navegadores podem n&atilde;o interpretar essa
marca&ccedil;&atilde;o corretamente. Nesse
caso, voc&ecirc; poder&aacute; fazer com que o navegador ignore essa marca&ccedil;&atilde;o, mas poder&aacute; ter de
alterar a codifica&ccedil;&atilde;o manualmente.</p>
<p>Voc&ecirc; poder&aacute; especificar qual codifica&ccedil;&atilde;o voc&ecirc; deseja utilizar para analisar o arquivo HTML: </p>
<ul>
<li><strong>Internet Explorer 5/6</strong> Exibir Menu -> Codifica&ccedil;&atilde;o</li>
<li><strong>Netscape 4:</strong> Exibir Menu -> Conjunto de Caracteres </li>
<li><strong>Netscape 6:</strong> Exibir Menu -> C&oacute;digo de Caractere </li></ul>
<a name="wq86"></a>
<h2 id="wq86"><a href="#ToC_78">Utilizando Web Start </a></h2>
<p>Voc&ecirc; pode utilizar o Java Web Start para implementar os aplicativos Java.  O Web Start permite
que o usu&aacute;rio ative e gerencie aplicativos diretamente da Web. Com o Java
Web Start, voc&ecirc; pode iniciar aplicativos facilmente da Web, certo de que
esteja executando a vers&atilde;o mais recente, eliminando procedimentos de instala&ccedil;&atilde;o ou upgrade.
 O Java Web Start elimina a necessidade de fazer download e instalar software, ignorando
as op&ccedil;&otilde;es de instala&ccedil;&atilde;o demoradas. </p>
<p><font color="red"><span id="changed">|</span>Al&eacute;m do java-vm-args documentado em <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>, o Web Start suporta <strong>-Xgcpolicy</strong> para definir a pol&iacute;tica de
<span id="changed">|</span>coleta de lixo. </font></p>
<p>Para obter informa&ccedil;&otilde;es sobre os navegadores que suportam o Web Start, consulte <a href="#suppbrowse">Navegadores Suportados</a>.</p>
<p>Para obter mais informa&ccedil;&otilde;es sobre o Web Start, consulte: <a href="http://java.sun.com/products/javawebstart">http://java.sun.com/products/javawebstart</a> e <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 obter mais informa&ccedil;&otilde;es sobre os aplicativo de implementa&ccedil;&atilde;o, 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">Executando o Web Start</a></h3>
<p>Voc&ecirc; pode chamar o Web Start de tr&ecirc;s maneiras:</p>
<ol type="1">
<li>Selecione um link em uma p&aacute;gina da Web que fa&ccedil;a refer&ecirc;ncia a um arquivo .jnlp.</li>
<li>Em um prompt de
comandos, digite
<tt class="xph">javaws &lt;URL></tt>, em que <tt class="xph">&lt;URL></tt> &eacute; o local de um
arquivo .jnlp.</li>
<li><font color="red"><span id="changed">|</span>Se o Java Web Start j&aacute; foi utilizado para abrir o aplicativo, execute
<span id="changed">|</span>javaws, no
<span id="changed">|</span>diret&oacute;rio jre\bin,para ativar o Java Application Cache Viewer. </font></li></ol>
<p>Depois de fazer download do aplicativo, ele ser&aacute; armazenado no Java
Application Cache. Se o aplicativo for acessado novamente, o Java Web Start far&aacute; download
de uma vers&atilde;o mais recente do aplicativo, se estiver dispon&iacute;vel, e utilizar&aacute; a vers&atilde;o em cache,
se n&atilde;o estiver dispon&iacute;vel.</p>
<p>Se ocorrer um erro em um arquivo .jnlp (como um nome de tag inv&aacute;lido), o Web Start
falhar&aacute; sem exibir uma mensagem de erro. </p>
<a name="wq88"></a>
<h2 id="wq88"><a href="#ToC_80">Remessa dos Aplicativos Java</a></h2>
<p>  Um aplicativo Java, ao contr&aacute;rio de um applet Java, n&atilde;o pode contar com um navegador da Web
para servi&ccedil;os de instala&ccedil;&atilde;o e tempo de execu&ccedil;&atilde;o. Quando voc&ecirc; envia um aplicativo Java,
o pacote de software provavelmente consiste nas seguintes partes: </p>
<ul>
<li>Sua pr&oacute;pria classe, recurso e arquivos de dados
<br /></li>
<li>Um procedimento ou programa de instala&ccedil;&atilde;o
<br /></li></ul>
<p>Para executar o aplicativo, um usu&aacute;rio precisa do Runtime Environment para Windows.
 O software SDK para Windows cont&eacute;m um Runtime Environment. No entanto,
voc&ecirc; n&atilde;o pode assumir que os usu&aacute;rios tenham o software SDK para Windows instalado.</p>
<p>A licen&ccedil;a do software SDK para Windows <strong>n&atilde;o</strong> permite que voc&ecirc; redistribua qualquer um dos arquivos do SDK com seu aplicativo.
Voc&ecirc; precisa assegurar-se de que uma vers&atilde;o licenciada do SDK para Windows esteja instalada
na m&aacute;quina de destino. </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">Compartilhamento de Dados de Classe Entre JVMs</a></h1>
<span id="changed">|</span><p>O IBM Virtual Machine (VM) permite compartilhar classes de auto-inicializa&ccedil;&atilde;o e
<span id="changed">|</span>aplicativos entre VMs, armazenando-as em um cache na mem&oacute;ria compartilhada. O compartilhamento de classes
<span id="changed">|</span>reduz o consumo geral de mem&oacute;ria virtual quando mais de uma VM compartilha
<span id="changed">|</span>um cache. O compartilhamento de classe tamb&eacute;m reduz o tempo de inicializa&ccedil;&atilde;o de uma VM depois do cache
<span id="changed">|</span>ter sido criado. O cache de classe compartilhada &eacute; independente de qualquer VM ativo
<span id="changed">|</span>e persiste al&eacute;m do per&iacute;odo de exist&ecirc;ncia da VM que iniciou o cache.</p>
<span id="changed">|</span><a name="wq89"></a>
<span id="changed">|</span><h2 id="wq89"><a href="#ToC_82">Vis&atilde;o Geral sobre o Compartilhamento de Classe</a></h2>
<span id="changed">|</span><p>O IBM SDK permite compartilhar tantas classes quanto poss&iacute;vel, atuando
<span id="changed">|</span>de forma transparente ao usu&aacute;rio. </p>
<span id="changed">|</span><a name="wq90"></a>
<span id="changed">|</span><h3 id="wq90"><a href="#ToC_83">Conte&uacute;do do Cache</a></h3>
<span id="changed">|</span><p>O cache de classe compartilhada cont&eacute;m dados e metadados da classe est&aacute;tica de leitura
<span id="changed">|</span>que descreve as classes. Qualquer VM pode ler ou atualizar o cache. Os VMs que
<span id="changed">|</span>est&atilde;o sendo compartilhados devem estar no mesmo release. Voc&ecirc; deve tomar
<span id="changed">|</span>cuidado se o bytecode do tempo de execu&ccedil;&atilde;o estiver sendo utilizado. (Consulte <a href="#runtimebytecode">Modifica&ccedil;&atilde;o do Bytecode de Tempo de Execu&ccedil;&atilde;o</a>). </p>
<span id="changed">|</span><a name="wq91"></a>
<span id="changed">|</span><h3 id="wq91"><a href="#ToC_84">Atualiza&ccedil;&atilde;o Din&acirc;mica do Cache</a></h3>
<span id="changed">|</span><p>Como o cache de classe compartilhada persiste al&eacute;m do per&iacute;odo de exist&ecirc;ncia de qualquer VM,
<span id="changed">|</span>o cache &eacute; atualizado dinamicamente para refletir quaisquer modifica&ccedil;&otilde;es que possam ter sido
<span id="changed">|</span>feitas nos JARs ou nas classes, no sistema de arquivos. A atualiza&ccedil;&atilde;o din&acirc;mica torna
<span id="changed">|</span>o cache transparente para o aplicativo que est&aacute; utilizando-o.</p>
<span id="changed">|</span><a name="wq92"></a>
<span id="changed">|</span><h3 id="wq92"><a href="#ToC_85">Ativando o Compartilhamento de Classe</a></h3>
<span id="changed">|</span><p>Ative o compartilhamento de classes utilizando a op&ccedil;&atilde;o <strong>-Xshareclasses</strong>
<span id="changed">|</span>ao iniciar uma VM, para fazer com que a VM se conecte a um cache existente ou crie
<span id="changed">|</span>um se ainda n&atilde;o existir. Todas as classes de auto-inicializa&ccedil;&atilde;o e aplicativos carregadas pela VM s&atilde;o compartilhadas por padr&atilde;o. Os carregadores de classe personalizados s&atilde;o compartilhados automaticamente se
<span id="changed">|</span>estenderem o carregador de classe do aplicativo; caso contr&aacute;rio, eles dever&atilde;o usar o Java Helper
<span id="changed">|</span>API fornecido com a VM para acessar o cache. (Consulte <a href="#adaptingclassloaders">Adaptando Carregadores de Classe Personalizados &agrave;s Classes de Compartilhamento</a>). </p>
<span id="changed">|</span><a name="wq93"></a>
<span id="changed">|</span><h3 id="wq93"><a href="#ToC_86">Seguran&ccedil;a do Cache</a></h3>
<span id="changed">|</span><p>A acesso ao cache de classe compartilhada &eacute; limitado pelas permiss&otilde;es
<span id="changed">|</span>do sistema operacional e da seguran&ccedil;a do Java. Por padr&atilde;o,
<span id="changed">|</span>Somente um classloader registrado para
<span id="changed">|</span>compartilhar classes poder&aacute; incluir classes no cache de classe
<span id="changed">|</span>compartilhada. Se um Java SecurityManager estiver instalado, os
<span id="changed">|</span>ClassLoaders (exceto os de auto-inicializa&ccedil;&atilde;o, de aplicativo e de
<span id="changed">|</span>extens&atilde;o) devem possuir permiss&atilde;o para compartilhar classes, incluindo
<span id="changed">|</span>SharedClassPermissions no arquivo java.policy. (Consulte <a href="#usingsharedclasspermissions">Utilizando SharedClassPermissions</a>). A
<span id="changed">|</span>RuntimePermission "createClassLoader" restringe a cria&ccedil;&atilde;o de novos
<span id="changed">|</span>ClassLoaders e, portanto, tamb&eacute;m restringe o acesso ao cache. </p>
<span id="changed">|</span><a name="wq94"></a>
<span id="changed">|</span><h3 id="wq94"><a href="#ToC_87">Tempo de Vida do Cache</a></h3>
<span id="changed">|</span><p>V&aacute;rios caches podem existir em um sistema e s&atilde;o especificados por nome como uma subop&ccedil;&atilde;o
<span id="changed">|</span>para o comando <strong>-Xshareclasses</strong>. Uma VM pode se conectar a apenas um cache
<span id="changed">|</span>por vez. Especifique o tamanho do cache na inicializa&ccedil;&atilde;o utilizando <strong>-Xscmx&lt;n>[k|m|g]</strong>, por&eacute;m esse tamanho ser&aacute; corrigido para o per&iacute;odo de exist&ecirc;ncia do
<span id="changed">|</span>cache. Os caches existir&atilde;o at&eacute; que sejam explicitamente destru&iacute;dos utilizando uma subop&ccedil;&atilde;o
<span id="changed">|</span>para o comando <strong>-Xshareclasses</strong> ou at&eacute; que o sistema seja
<span id="changed">|</span>reinicializado. </p>
<span id="changed">|</span><a name="wq95"></a>
<span id="changed">|</span><h3 id="wq95"><a href="#ToC_88">Utilit&aacute;rios do Cache</a></h3>
<span id="changed">|</span><p>Todos os utilit&aacute;rios do cache s&atilde;o subop&ccedil;&otilde;es para o comando <strong>-Xshareclasses</strong>. Utilize <strong>-Xshareclasses:help</strong> para ver uma lista
<span id="changed">|</span>de subop&ccedil;&otilde;es dispon&iacute;veis. </p>
<span id="changed">|</span><a name="sharedclassesxoptions"></a>
<span id="changed">|</span><h2 id="sharedclassesxoptions"><a href="#ToC_89">Utilizando as Op&ccedil;&otilde;es da Linha de Comandos para Compartilhamento de Classe</a></h2>
<span id="changed">|</span><p>O compartilhamento de classe &eacute; ativado e configurado utilizando as op&ccedil;&otilde;es de linha de comandos <strong>-Xshareclasses</strong> e <strong>-Xscmx</strong>.</p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>-Xscmx</strong>&lt;<em>size</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Especifica o tamanho do cache. Essa op&ccedil;&atilde;o &eacute; aplic&aacute;vel apenas se um cache
<span id="changed">|</span>estiver sendo criado e se n&atilde;o houver nenhum cache existente com o mesmo
<span id="changed">|</span>nome.
<span id="changed">|</span>O tamanho do cache padr&atilde;o depende da plataforma.
<span id="changed">|</span>&Eacute; poss&iacute;vel descobrir o valor que est&aacute; sendo utilizado, incluindo
<span id="changed">|</span><strong>-verbose:sizes </strong> como argumento da linha de comando. O tamanho m&iacute;nimo do
<span id="changed">|</span>cache &eacute; 4 kB. O tamanho m&aacute;ximo do cache tamb&eacute;m depende da plataforma. (Consulte <a href="#cachesizelimits">Limites no Tamanho do Cache</a>). </li></ul></li>
<span id="changed">|</span><li><strong>-Xshareclasses</strong>:&lt;<em>suboption1</em>>[,&lt;<em>suboption2</em>>...]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Ativa o compartilhamento de classe. Pode obter um n&uacute;mero de subop&ccedil;&otilde;es, alguns dos quais
<span id="changed">|</span>s&atilde;o utilit&aacute;rios de cache. Os utilit&aacute;rios de cache executam a opera&ccedil;&atilde;o requerida no
<span id="changed">|</span>cache especificado, sem iniciar a VM. &Eacute; poss&iacute;vel combinar v&aacute;rias subop&ccedil;&otilde;es,
<span id="changed">|</span>separadas por v&iacute;rgula, por&eacute;m os utilit&aacute;rios de cache s&atilde;o mutuamente exclusivos. </li></ul>Voc&ecirc; pode usar as seguintes subop&ccedil;&otilde;es com a op&ccedil;&atilde;o <strong>-Xshareclasses</strong>, por exemplo <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>Lista todas as op&ccedil;&otilde;es da linha de comandos.</li></ul></li>
<span id="changed">|</span><li><strong>name=</strong>&lt;<em>name</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Conecta a um cache de um determinado nome, criando o cache se ele ainda n&atilde;o
<span id="changed">|</span>existir. Use a op&ccedil;&atilde;o do utilit&aacute;rio <strong>listAllCaches</strong>
<span id="changed">|</span>para mostrar quais caches est&atilde;o atualmente dispon&iacute;veis. Se n&atilde;o especificar
<span id="changed">|</span>um nome, o nome padr&atilde;o "sharedcc_" ser&aacute; combinado com o nome do usu&aacute;rio
<span id="changed">|</span>atual anexado para criar o nome do cache. </li></ul></li>
<span id="changed">|</span><li><strong>verbose</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>A op&ccedil;&atilde;o Verbose fornece uma sa&iacute;da detalhada sobre a atividade de E/S do
<span id="changed">|</span>cache, listando informa&ccedil;&otilde;es sobre as classes que est&atilde;o sendo armazenadas e
<span id="changed">|</span>localizadas. A cada carregador de classe &eacute; dado um &uacute;nico ID (o
<span id="changed">|</span>carregador de auto-inicializa&ccedil;&atilde;o &eacute; sempre 0) e a sa&iacute;da mostra a hierarquia do carregador de classe
<span id="changed">|</span>no trabalho, onde os carregadores de classe devem solicitar aos seus pais uma classe para poderem
<span id="changed">|</span>carreg&aacute;-la. &Eacute; normal ver muitos pedidos com falha; esse comportamento &eacute;
<span id="changed">|</span>esperado para a hierarquia do classloader. Observe que a op&ccedil;&atilde;o padr&atilde;o
<span id="changed">|</span><strong>-verbose:class</strong> tamb&eacute;m ativa a sa&iacute;da detalhada do
<span id="changed">|</span>compartilhamento de classe, se tal compartilhamento estiver ativado. </li></ul></li>
<span id="changed">|</span><li><strong>modified=</strong>&lt;<em>modified context</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Essa op&ccedil;&atilde;o ser&aacute; requerida se for instalado um agente de bytecode que possa modificar
<span id="changed">|</span>o bytecode no tempo de execu&ccedil;&atilde;o. Se voc&ecirc; n&atilde;o especificar essa op&ccedil;&atilde;o e um agente de bytecode
<span id="changed">|</span>for instalado, nenhuma classe ser&aacute; armazenada ou localizada no cache. A op&ccedil;&atilde;o <em>&lt;modified context></em> &eacute; um descritor escolhido pelo usu&aacute;rio; por exemplo,
<span id="changed">|</span>"myModification1". Isso particiona o cache, de forma que apenas os JVMs que utilizem o contexto
<span id="changed">|</span>myModification1 podem compartilhar as mesmas classes. Por exemplo, se voc&ecirc; executar "HelloWorld"
<span id="changed">|</span>com um contexto de modifica&ccedil;&atilde;o e depois execut&aacute;-lo novamente com um contexto de modifica&ccedil;&atilde;o
<span id="changed">|</span>diferente, ver&aacute; todas as classes armazenadas duas vezes no cache.</li></ul></li>
<span id="changed">|</span><li><strong>destroy</strong> (op&ccedil;&atilde;o do utilit&aacute;rio)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Destr&oacute;i um cache usando o nome especificado na subop&ccedil;&atilde;o <strong>name=</strong>&lt;<em>name</em>>. Se o nome n&atilde;o for especificado,
<span id="changed">|</span>o cache padr&atilde;o ser&aacute; destru&iacute;do. Um cache somente pode ser destru&iacute;do
<span id="changed">|</span>se todos os VMs que o utilizam foram encerrados e o usu&aacute;rio tiver permiss&otilde;es suficientes. </li></ul></li>
<span id="changed">|</span><li><strong>destroyAll</strong> (op&ccedil;&atilde;o do utilit&aacute;rio)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Tenta destruir todos os caches dispon&iacute;veis para o usu&aacute;rio. Um cache somente pode ser destru&iacute;do
<span id="changed">|</span>se todos os VMs que o utilizam foram encerrados e o usu&aacute;rio tiver permiss&otilde;es suficientes. </li></ul></li>
<span id="changed">|</span><li><strong>expire=</strong>&lt;<em>time in minutes</em>>
<span id="changed">|</span>(op&ccedil;&atilde;o do utilit&aacute;rio)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Destr&oacute;i todos os caches que n&atilde;o foram utilizados durante o tempo especificado. </li></ul></li>
<span id="changed">|</span><li><strong>listAllCaches</strong> (op&ccedil;&atilde;o do utilit&aacute;rio)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Lista todos os caches no sistema, descrevendo se est&atilde;o em uso e quando
<span id="changed">|</span>foram utilizados pela &uacute;ltima vez. </li></ul></li>
<span id="changed">|</span><li><strong>printStats</strong> (op&ccedil;&atilde;o do utilit&aacute;rio)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Exibe informa&ccedil;&otilde;es resumidas das estat&iacute;sticas sobre o cache especificado na subop&ccedil;&atilde;o <strong>name=</strong>&lt;<em>name</em>>. Se o nome n&atilde;o for especificado, ser&atilde;o exibidas as estat&iacute;sticas sobre o cache padr&atilde;o. As
<span id="changed">|</span>informa&ccedil;&otilde;es mais &uacute;teis exibidas s&atilde;o o qu&atilde;o completo &eacute; o cache e quantas classes
<span id="changed">|</span>ele cont&eacute;m. Observe que as classes "stale" s&atilde;o classes que foram atualizadas
<span id="changed">|</span>no sistema de arquivos e, portanto, qual cache foi marcado com "stale". As classes Stale
<span id="changed">|</span>n&atilde;o s&atilde;o limpas do cache. Consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a> para obter mais informa&ccedil;&otilde;es.</li></ul></li>
<span id="changed">|</span><li><strong>printAllStats</strong> (op&ccedil;&atilde;o do utilit&aacute;rio)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Exibe informa&ccedil;&otilde;es detalhadas sobre o conte&uacute;do do cache especificado
<span id="changed">|</span>na subop&ccedil;&atilde;o <strong>name=</strong>&lt;<em>name</em>>.
<span id="changed">|</span>Se o nome n&atilde;o for especificado, ser&atilde;o exibidas as estat&iacute;sticas sobre o cache padr&atilde;o. Cada classe &eacute; listada na ordem cronol&oacute;gica juntamente com uma refer&ecirc;ncia
<span id="changed">|</span>ao local de onde ela foi carregada. Consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a> para obter mais informa&ccedil;&otilde;es.</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">Criando, Preenchendo, Monitorando e Excluindo um Cache</a></h2>
<span id="changed">|</span><p>Para ativar o compartilhamento de classe, inclua <strong>-Xshareclasses[:name=&lt;name>]</strong> na linha de comandos do aplicativo. A VM se conectar&aacute; a um cache
<span id="changed">|</span>existente com um nome espec&iacute;fico ou criar&aacute; um novo cache com esse nome. Se
<span id="changed">|</span>um novo cache for criado, ele ser&aacute; preenchido com todas as classes de
<span id="changed">|</span>auto-inicializa&ccedil;&atilde;o e de aplicativos que est&atilde;o sendo carregadas, at&eacute; ficar
<span id="changed">|</span>completamente cheio. Se dois ou mais VMs forem iniciados de forma concorrente,
<span id="changed">|</span>todos preencher&atilde;o o cache de forma concorrente. </p>
<span id="changed">|</span><p>Para verificar se o cache foi criado, execute <tt class="xph">java
<span id="changed">|</span>-Xshareclasses:listAllCaches </tt>.  Para ver quantas classes e quantos dados das classes est&atilde;o sendo compartilhados, execute <tt class="xph">java -Xshareclasses:[name=&lt;name>],printStats</tt>. (Esses utilit&aacute;rios podem
<span id="changed">|</span>ser executados ap&oacute;s o t&eacute;rmino da VM do aplicativo ou em outra janela de comando)</p>
<span id="changed">|</span><p>Para ver as classes que est&atilde;o sendo carregadas do cache ou armazenadas nele, inclua <tt class="xph">-Xshareclasses:[name=&lt;name>],verbose</tt> na linha de comandos do
<span id="changed">|</span>aplicativo.</p>
<span id="changed">|</span><p>Para excluir o cache criado, execute <tt class="xph">java -Xshareclasses:[name=&lt;name>],delete</tt>.  Voc&ecirc; ter&aacute; que excluir caches somente se eles contiverem muitas classes
<span id="changed">|</span>stale ou se o cache estiver cheio e voc&ecirc; desejar criar um cache maior. </p>
<span id="changed">|</span><p>Conv&eacute;m ajustar o tamanho do cache para o seu aplicativo espec&iacute;fico, uma
<span id="changed">|</span>vez que n&atilde;o &eacute; prov&aacute;vel que o padr&atilde;o seja o tamanho ideal. O melhor meio de
<span id="changed">|</span>determinar o tamanho ideal do cache &eacute; especificar um cache grande (com
<span id="changed">|</span><strong> -Xscmx</strong>), executar o aplicativo e utilizar
<span id="changed">|</span>printStats para determinar quantos dados de classe foram armazenados. 
<span id="changed">|</span>Inclua um valor pequeno no valor mostrado em printStats para conting&ecirc;ncia. 
<span id="changed">|</span>N&atilde;o se esque&ccedil;a de que, como as classes podem ser carregadas a qualquer
<span id="changed">|</span>momento durante a exist&ecirc;ncia da VM, &eacute; melhor que essa an&aacute;lise seja feita
<span id="changed">|</span>depois da conclus&atilde;o do aplicativo. Contudo, um cache cheio n&atilde;o causa um
<span id="changed">|</span>efeito negativo no desempenho ou capacidade de qualquer VM conectada a
<span id="changed">|</span>ele; assim &eacute; plenamente justific&aacute;vel escolher um tamanho de cache menor do
<span id="changed">|</span>que o requerido.</p>
<span id="changed">|</span><p>Se um cache ficar cheio, uma mensagem ser&aacute; exibida na linha de comandos de
<span id="changed">|</span>todas as VMs que o utilizem, e elas carregar&atilde;o quaisquer classes
<span id="changed">|</span>adicionais na pr&oacute;pria mem&oacute;ria de processo. As classes em um cache cheio
<span id="changed">|</span>ainda podem ser compartilhadas, contudo ele &eacute; de somente leitura e n&atilde;o
<span id="changed">|</span>pode ser atualizado com novas classes. </p>
<span id="changed">|</span><a name="wq97"></a>
<span id="changed">|</span><h2 id="wq97"><a href="#ToC_91">Desempenho e Consumo de Mem&oacute;ria</a></h2>
<span id="changed">|</span><p>O compartilhamento de classe &eacute; particularmente &uacute;til em sistemas que
<span id="changed">|</span>utilizam mais de uma VM com c&oacute;digo semelhante; os sistemas se beneficiam
<span id="changed">|</span>do consumo reduzido de mem&oacute;ria virtual. Tamb&eacute;m &eacute; &uacute;til em sistemas que
<span id="changed">|</span>freq&uuml;entemente inicializam e encerram VMs, que se beneficiam do
<span id="changed">|</span>aprimoramento no tempo de inicializa&ccedil;&atilde;o. </p>
<span id="changed">|</span><p>O c&oacute;digo extra para criar e preencher um novo cache &eacute; m&iacute;nimo. O custo do
<span id="changed">|</span>tempo de inicializa&ccedil;&atilde;o de uma &uacute;nica VM &eacute;, normalmente, entre 0 e 5%,
<span id="changed">|</span>dependendo de quantas classes s&atilde;o carregadas. O tempo de inicializa&ccedil;&atilde;o da
<span id="changed">|</span>VM melhorado com um cache preenchido geralmente est&aacute; entre 10% e 40%,
<span id="changed">|</span>dependendo do sistema operacional e do n&uacute;mero de classes carregadas. 
<span id="changed">|</span>V&aacute;rias VMs executando simultaneamente exibir&atilde;o benef&iacute;cios de tempo de
<span id="changed">|</span>inicializa&ccedil;&atilde;o total maiores. </p>
<span id="changed">|</span><p>Quando voc&ecirc; executar seu aplicativo com compartilhamento de classe, poder&aacute; utilizar as ferramentas
<span id="changed">|</span>do sistema operacional para ver a redu&ccedil;&atilde;o no consumo de mem&oacute;ria virtual. </p>
<span id="changed">|</span><a name="wq98"></a>
<span id="changed">|</span><h2 id="wq98"><a href="#ToC_92">Limita&ccedil;&otilde;es e Considera&ccedil;&otilde;es sobre Como Utilizar o Compartilhamento de Classe</a></h2>
<span id="changed">|</span><a name="cachesizelimits"></a>
<span id="changed">|</span><h3 id="cachesizelimits"><a href="#ToC_93">Limites no Tamanho do Cache</a></h3>
<span id="changed">|</span><p>O tamanho do cache te&oacute;rico m&aacute;ximo &eacute; 2 GB. O cache estar&aacute;
<span id="changed">|</span>limitado pelos seguintes fatores:</p>
<span id="changed">|</span><p></p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li>Espa&ccedil;o em disco dispon&iacute;vel. Um arquivo &eacute; criado no disco para armazenar os
<span id="changed">|</span>dados da classe no diret&oacute;rio "javasharedresources" sob o perfil do
<span id="changed">|</span>usu&aacute;rio. Esse diret&oacute;rio est&aacute; normalmente definido como C:\Documents and
<span id="changed">|</span>Settings\&lt;username>\Application Data\.
<span id="changed">|</span>Esse arquivo &eacute; exclu&iacute;do toda vez que
<span id="changed">|</span>o Windows &eacute; reiniciado. </li>
<span id="changed">|</span><li>Espa&ccedil;o de endere&ccedil;o virtual dispon&iacute;vel. Como o espa&ccedil;o de endere&ccedil;o virtual
<span id="changed">|</span>de um processo &eacute; compartilhado entre o cache de classes compartilhadas e o
<span id="changed">|</span>heap Java, aumentar o tamanho m&aacute;ximo do heap Java reduzir&aacute; o tamanho do
<span id="changed">|</span>cache de classes compartilhadas que pode ser criado. </li></ul>
<span id="changed">|</span><a name="runtimebytecode"></a>
<span id="changed">|</span><h3 id="runtimebytecode"><a href="#ToC_94">Modifica&ccedil;&atilde;o do Bytecode de Tempo de Execu&ccedil;&atilde;o</a></h3>
<span id="changed">|</span><p>Qualquer VM que utilize um agente JVMTI que possa modificar o bytecode n&atilde;o pode compartilhar
<span id="changed">|</span>classes a n&atilde;o ser que a subop&ccedil;&atilde;o modified=&lt;modified_context> seja utilizada na
<span id="changed">|</span>linha de comandos (veja acima). O contexto modificado &eacute; um descritor especificado pelo usu&aacute;rio
<span id="changed">|</span>que descreve o tipo de modifica&ccedil;&atilde;o que est&aacute; sendo executada. Todos os VMs que utilizam um determinado
<span id="changed">|</span>contexto modificado devem modificar o bytecode de uma maneira previs&iacute;vel e repetida
<span id="changed">|</span>para cada classe, de forma que as classes modificadas armazenadas no cache tenham
<span id="changed">|</span>as modifica&ccedil;&otilde;es esperadas quando forem carregadas por outra VM. O motivo
<span id="changed">|</span>de qualquer modifica&ccedil;&atilde;o precisar ser previs&iacute;vel &eacute; que as classes
<span id="changed">|</span>carregadas do cache de classes compartilhadas n&atilde;o podem ser novamente
<span id="changed">|</span>modificadas pelo agente. Observe que o bytecode
<span id="changed">|</span>modificado e n&atilde;o modificado pode ser armazenado no mesmo cache. Consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de Diagn&oacute;stico</a> para obter mais detalhes sobre este t&oacute;pico.</p>
<span id="changed">|</span><a name="wq99"></a>
<span id="changed">|</span><h3 id="wq99"><a href="#ToC_95">Limita&ccedil;&otilde;es do Sistema Operacional</a></h3>
<span id="changed">|</span><p>Para sistemas operacionais que podem executar os aplicativos de
<span id="changed">|</span>32 bits e 64 bits, o compartilhamento de classe n&atilde;o &eacute; permitido entre VMs de 32 bits e 64 bits.
<span id="changed">|</span>A subop&ccedil;&atilde;o <strong>listAllCaches</strong> listar&aacute; caches de 32 bits ou 64-bits,
<span id="changed">|</span>dependendo do modo de endere&ccedil;o da VM que est&aacute; sendo utilizado. </p>
<span id="changed">|</span><p>O cache de classes compartilhadas requer espa&ccedil;o em disco para armazenar informa&ccedil;&otilde;es de identifica&ccedil;&atilde;o
<span id="changed">|</span>sobre os caches existentes no sistema. Essas informa&ccedil;&otilde;es
<span id="changed">|</span>est&atilde;o localizadas no diret&oacute;rio do perfil do usu&aacute;rio.  Se o diret&oacute;rio de informa&ccedil;&otilde;es de
<span id="changed">|</span>identifica&ccedil;&atilde;o for exclu&iacute;do, a VM n&atilde;o poder&aacute; identificar as classes compartilhadas no sistema
<span id="changed">|</span>e dever&aacute; recriar o cache.</p>
<span id="changed">|</span><p>As permiss&otilde;es para acessar um
<span id="changed">|</span>cache de classes compartilhadas s&atilde;o for&ccedil;adas pelo sistema operacional. Por padr&atilde;o, se um nome de cache n&atilde;o for
<span id="changed">|</span>especificado, o nome do usu&aacute;rio ser&aacute; anexado ao nome padr&atilde;o para que v&aacute;rios
<span id="changed">|</span>usu&aacute;rios no sistema operacional criem seus pr&oacute;prios caches.</p>
<span id="changed">|</span><a name="usingsharedclasspermissions"></a>
<span id="changed">|</span><h3 id="usingsharedclasspermissions"><a href="#ToC_96">Utilizando SharedClassPermissions</a></h3>
<span id="changed">|</span><p>Se um SecurityManager estiver sendo utilizado em conjunto com o
<span id="changed">|</span>compartilhamento de classe e o aplicativo em execu&ccedil;&atilde;o utilizar seus
<span id="changed">|</span>pr&oacute;prios classloaders, tais classloaders devem possuir a permiss&atilde;o
<span id="changed">|</span>SharedClassPermissions antes que possam compartilhar classes. Inclua
<span id="changed">|</span>SharedClassPermissions no arquivo java.policy utilizando o nome de classe
<span id="changed">|</span>ClassLoader (caracteres-curinga s&atilde;o permitidos), e "read",   "write" ou
<span id="changed">|</span>"read,write" para determinar o acesso concedido.
<span id="changed">|</span>Exemplo:</p>
<span id="changed">|</span><pre class="xmp">permission com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*", "read,write";</pre><p class="indatacontent">Se um ClassLoader sem a permiss&atilde;o SharedClassPermission correta tentar
<span id="changed">|</span>compartilhar classes, a exce&ccedil;&atilde;o AccessControlException ser&aacute; emitida.  N&atilde;o
<span id="changed">|</span>&eacute; poss&iacute;vel alterar ou reduzir as permiss&otilde;es dos classloaders de
<span id="changed">|</span>auto-inicializa&ccedil;&atilde;o, aplicativo ou extens&atilde;o. </p>
<span id="changed">|</span><a name="adaptingclassloaders"></a>
<span id="changed">|</span><h2 id="adaptingclassloaders"><a href="#ToC_97">Adaptando Carregadores de Classe Personalizados &agrave;s Classes de Compartilhamento</a></h2>
<span id="changed">|</span><p>A maioria dos aplicativos Java utilizar&aacute; os pr&oacute;prios carregadores de classe da VM ou ter&aacute;
<span id="changed">|</span>carregadores de classe personalizados que estendam java/net/URLClassLoader. 
<span id="changed">|</span>Aplicativos que utilizem tais classloaders poder&atilde;o compartilhar
<span id="changed">|</span>automaticamente classes de auto-inicializa&ccedil;&atilde;o e de aplicativos.
<span id="changed">|</span>Os carregadores de classe personalizados que n&atilde;o estendam java/net/URLClassLoader ir&atilde;o requerer
<span id="changed">|</span>modifica&ccedil;&otilde;es para utilizar o compartilhamento de classes. Todos os
<span id="changed">|</span>classloaders precisar&atilde;o receber permiss&otilde;es SharedClassPermissions caso um
<span id="changed">|</span>SecurityManager seja utilizado; consulte
<span id="changed">|</span><a href="#usingsharedclasspermissions">Utilizando SharedClassPermissions</a>. A IBM apresenta v&aacute;rias interfaces Java para diversos tipos de
<span id="changed">|</span>classloaders personalizados, as quais permitem que os classloaders
<span id="changed">|</span>localizem e armazenem classes no cache de classes compartilhadas. Essas classes est&atilde;o no pacote
<span id="changed">|</span>com.ibm.oti.shared. O Javadoc desse pacote &eacute; fornecido com o SDK no
<span id="changed">|</span>arquivo docs/apidoc.zip. Consulte o <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Manual de
<span id="changed">|</span>Diagn&oacute;stico</a> para obter mais informa&ccedil;&otilde;es sobre como utilizar essas interfaces.</p></font>
<a name="wq100"></a>
<h1 id="wq100"><a href="#ToC_98">Servi&ccedil;o e Suporte para Fornecedores Independentes de Software</a></h1>
<p> Se voc&ecirc; estiver qualificado para os servi&ccedil;os do c&oacute;digo do Programa relativos ao programa
IBM Solutions Developer, entre em contato com esse Programa
por meio de seu m&eacute;todo normal de acesso ou pela Web em: <a href="http://www.ibm.com/partnerworld/">http://www-1.ibm.com/partnerworld/</a>.</p>
<p>Se voc&ecirc; adquiriu um contrato de servi&ccedil;o (isto &eacute;, Linha de Suporte aos Sistemas
Pessoais da IBM ou servi&ccedil;o equivalente por pa&iacute;s), os termos e condi&ccedil;&otilde;es desse contrato
de servi&ccedil;o determinam quais servi&ccedil;os, se existirem, voc&ecirc; est&aacute; qualificado
a receber com rela&ccedil;&atilde;o ao Programa. </p>
<a name="wq101"></a>
<h1 id="wq101"><a href="#ToC_99">Acessibilidade</a></h1>
<p>Os Guias do Usu&aacute;rio fornecidos com este SDK e o Runtime Environment foram
testados utilizando os leitores de tela. &Eacute; poss&iacute;vel utilizar um leitor de tela como o Home
Page Reader ou o leitor de tela JAWS com esses Guias do Usu&aacute;rio. </p>
<p>Para alterar os tamanhos de fonte nos Guias do Usu&aacute;rio, utilize a fun&ccedil;&atilde;o fornecida
com seu navegador, normalmente encontrada na op&ccedil;&atilde;o de menu <strong>Exibir</strong>.</p>
<p>Para usu&aacute;rios que necessitam da navega&ccedil;&atilde;o via teclado, h&aacute; uma descri&ccedil;&atilde;o do
pressionamento de teclas &uacute;teis dos aplicativos Swing em "Swing Key
Bindings", no site <a href="http://www-128.ibm.com/developerworks/java/jdk/additional/">http://www-128.ibm.com/developerworks/java/jdk/additional/</a></p>
<a name="ikeycmd"></a>
<h2 id="ikeycmd"><a href="#ToC_100">Acessibilidade iKeyman</a></h2>
<p><font color="red"><span id="changed">|</span>Em adi&ccedil;&atilde;o &agrave; GUI, a ferramenta iKeyman apresenta a ferramenta de linha de
<span id="changed">|</span>comandos <strong>IKEYCMD</strong> com as mesmas fun&ccedil;&otilde;es que a
<span id="changed">|</span>interface gr&aacute;fica com o usu&aacute;rio (GUI) do iKeyman. O <strong>IKEYCMD</strong> permite que voc&ecirc; gerencie teclas,
<span id="changed">|</span>certificados e pedidos de certificados. Voc&ecirc; pode chamar o <strong>IKEYCMD</strong> a partir de scripts shell nativos e de programas que dever&atilde;o ser utilizados quando
<span id="changed">|</span>os aplicativos precisarem incluir interfaces personalizadas nas tarefas de gerenciamento de certificados
<span id="changed">|</span>e chaves. O <strong>IKEYCMD</strong> pode criar arquivos do banco de dados de chaves para todos
<span id="changed">|</span>os tipos que o iKeyman suporta atualmente. O <strong>IKEYCMD</strong> pode
<span id="changed">|</span>tamb&eacute;m criar pedidos de certificados, importar certificados assinados CA e gerenciar
<span id="changed">|</span>certificados auto-assinados. </font></p>
<p>Para executar um comando <strong>IKEYCMD</strong>, digite:</p>
<pre class="xmp">java [-Dikeycmd.properties=&lt;properties file>]com.ibm.gsk.ikeyman.ikeycmd
&lt;object> &lt;action> [options]</pre><p class="indatacontent">em que:
</p>
<dl>
<dt class="bold">&lt;object></dt>
<dd>&eacute; uma das seguintes op&ccedil;&otilde;es:
<dl>
<dt class="bold">-keydb</dt>
<dd>A&ccedil;&otilde;es tomadas no banco de dados de chaves (um arquivo do banco de dados de chaves CMS,
um arquivo de chaves WebDB ou uma classe SSLight)
</dd>
<dt class="bold">-cert</dt>
<dd>A&ccedil;&otilde;es a serem tomadas num certificado dentro de um banco de dados de chaves
</dd>
<dt class="bold">-certreq</dt>
<dd>A&ccedil;&otilde;es a serem tomadas num pedido de certificado dentro de um banco de dados de chaves
</dd>
<dt class="bold">-version</dt>
<dd>Exibe informa&ccedil;&otilde;es sobre vers&atilde;o do <strong>IKEYCMD</strong>
</dd>
<dt class="bold">-help</dt>
<dd>Exibe ajuda para as chamadas do <strong>IKEYCMD</strong>.
</dd>
</dl>
</dd>
<dt class="bold">&lt;action></dt>
<dd><font color="red"><span id="changed">|</span>A a&ccedil;&atilde;o espec&iacute;fica a ser tomada no objeto. Para consultar as a&ccedil;&otilde;es
<span id="changed">|</span>dispon&iacute;veis para um objeto, chame <strong>IKEYCMD</strong> e informe
<span id="changed">|</span>apenas o objeto como argumento. A ajuda sens&iacute;vel a contexto ser&aacute; exibida
<span id="changed">|</span>mostrando as a&ccedil;&otilde;es dispon&iacute;veis para esse objeto. </font>
</dd>
<dt class="bold">-Dikeycmd.properties</dt>
<dd>Especifica o nome de um arquivo de propriedades opcional para utilizar com essa invoca&ccedil;&atilde;o Java.
Um arquivo de propriedades padr&atilde;o, ikeycmd.properties, &eacute; fornecido como
um arquivo de amostra que pode ser alterado e utilizado por qualquer aplicativo Java.
</dd>
</dl>
<a name="wq102"></a>
<div class="notetitle" id="wq102">Nota:</div>
<div class="notebody">As palavras-chave object e action devem estar na seq&uuml;&ecirc;ncia especificada. Contudo, as op&ccedil;&otilde;es n&atilde;o s&atilde;o posicionais e podem
estar em qualquer seq&uuml;&ecirc;ncia, desde que estejam especificadas como um par de op&ccedil;&atilde;o
e operando.</div>
<p>Para obter mais informa&ccedil;&otilde;es, consulte o Guia do Usu&aacute;rio do iKeyman em: <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">Keyboard Traversal dos Componentes JComboBox no Swing</a></h2>
<p>Se voc&ecirc; percorrer a lista drop-down de um componente JComboBox com as teclas
do cursor, o bot&atilde;o ou o campo edit&aacute;vel da caixa de combina&ccedil;&atilde;o n&atilde;o alterar&aacute; o valor
at&eacute; que um item seja selecionado. Esse &eacute; o comportamento ideal para este release e
melhora a acessibilidade e a utilidade assegurando que o comportamento do keyboard traversal
seja consistente com o comportamento do mouse traversal.</p>
<a name="wq104"></a>
<h2 id="wq104"><a href="#ToC_102">Acessibilidade do Web Start </a></h2>
<p>O IBM Java Web Start v5.0 cont&eacute;m v&aacute;rios aprimoramentos de acessibilidade e usabilidade
a mais que o release anterior, incluindo melhor suporte para leitores de tela e
navega&ccedil;&atilde;o do teclado aprimorada.</p>
<p>Voc&ecirc; pode usar apenas a linha de comandos para ativar um aplicativo Java que seja
ativado para o Web Start.  Para alterar as op&ccedil;&otilde;es de prefer&ecirc;ncia, voc&ecirc; dever&aacute; editar um arquivo de
configura&ccedil;&atilde;o, <strong>Application Data\IBM\Java\Deployment\deployment.properties</strong> no diret&oacute;rio home do usu&aacute;rio. Fa&ccedil;a um backup antes de editar esse arquivo.
 Nem todas as prefer&ecirc;ncias que podem ser definidas no Java Application Cache Viewer
est&atilde;o dispon&iacute;veis no arquivo de configura&ccedil;&atilde;o. </p>
<a name="wq105"></a>
<h1 id="wq105"><a href="#ToC_103">Nota Geral Sobre Seguran&ccedil;a</a></h1>
<p>Voc&ecirc; pode obter os arquivos de pol&iacute;ticas de jurisdi&ccedil;&atilde;o irrestrita JCE em <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>.    A documenta&ccedil;&atilde;o
sobre os pacotes de seguran&ccedil;a IBM JCE, JCEFIPS, JSSE2, JSSEFIPS, JGSS, JAAS
e criptografia de hardware tamb&eacute;m est&aacute; dispon&iacute;vel nesse Web site.</p>
<a name="wq106"></a>
<h1 id="wq106"><a href="#ToC_104">Limita&ccedil;&otilde;es Conhecidas</a></h1>
<p>Observe essas limita&ccedil;&otilde;es no IBM 32-bit SDK for Windows, v5.0:</p>
<ul>
<li>O IBM 32-bit SDK for Windows, v5.0 suporta
os seguintes c&oacute;digos do idioma:
<ul>
<li>Bengal&ecirc;s (bn_IN)</li>
<li>Malaiala (ml_IN)</li>
<li>Ori&aacute; (or_IN)</li></ul>Entretanto, as fontes desses c&oacute;digos do idioma podem n&atilde;o funcionar nos componentes do AWT.
<p></p></li>
<li>O IBM 32-bit SDK for Windows, v5.0 suporta o IPv6. <span><font color="red"><span id="changed">|</span>Contudo, como o suporte atual do IPv6 no Windows n&atilde;o &eacute; dual-stack,
<span id="changed">|</span>o SDK emula o comportamento dual-stack em um sistema ativado por IPv6. Seu aplicativo
<span id="changed">|</span>Java pode usar at&eacute; duas vezes o m&aacute;ximo de soquetes por causa da natureza
<span id="changed">|</span>da emula&ccedil;&atilde;o. Para desativar essa emula&ccedil;&atilde;o, desative o suporte do IPv6 no SDK
<span id="changed">|</span>configurando a propriedade de sistema <strong>java.net.preferIPv4Stack</strong> para <tt class="xph">true</tt>.</font></span>
<p></p></li>
<li>Ao trabalhar com um IME (Input Method Editor), recomenda-se que a
composi&ccedil;&atilde;o dos caracteres seja completada e o candidato selecionado antes de utilizar a
&aacute;rea de trabalho para qualquer outra opera&ccedil;&atilde;o.
<p></p></li>
<li>A cria&ccedil;&atilde;o de pares de chaves DSA de comprimentos incomuns pode demorar um tempo
significativo em m&aacute;quinas mais lentas. Este atraso n&atilde;o deve ser interpretado como uma interrup&ccedil;&atilde;o, pois o processo se completar&aacute; se lhe for cedido tempo suficiente. O algoritmo de
gera&ccedil;&atilde;o da chave DSA foi otimizado para gerar comprimentos de chave padr&atilde;o (neste caso,
512, 1024) com mais rapidez que os outros. 
<p></p></li>
<li>Firewalls pessoais podem causar
problemas ao c&oacute;digo NIO do Windows, fazendo com que opera&ccedil;&otilde;es particulares falhem.
Por exemplo, a chamada do m&eacute;todo <strong>Selector.open()</strong> pode emitir
um <tt class="xph">java.io.IOException: Unable to establish loopback connection</tt> com
uma causa de <tt class="xph">java.net.ConnectException: Connection refused: connect</tt>.
 A exce&ccedil;&atilde;o &eacute; causada pela conex&atilde;o do sistema operacional em uma porta que esteja
sendo bloqueada pelo firewall. A JVM tentar&aacute; novamente a opera&ccedil;&atilde;o de conex&atilde;o,
solicitando ao sistema operacional para escolher um n&uacute;mero de porta diferente. Se, depois
de v&aacute;rias tentativas, ele ainda n&atilde;o puder conectar-se, um <tt class="xph">ConnectException</tt> ser&aacute;
emitido.
<p>Se voc&ecirc; vir essa exce&ccedil;&atilde;o, poder&aacute; definir a propriedade do sistema <strong>java.nio.debug=pipe</strong> para ver quais n&uacute;meros de porta est&atilde;o sendo bloqueados. </p></li>
<li>Quando um usu&aacute;rio digitar texto em uma &Aacute;rea de Texto AWT
enquanto estiver utilizando um IME e, em seguida, redimensionar a janela do aplicativo
<em>antes</em> de consolidar o texto, ele ser&aacute; consolidado automaticamente.

<p></p></li>
<li>No Windows 2000, e XP, o valor padr&atilde;o do n&uacute;mero
de arquivos que podem ser abertos simultaneamente &eacute; muito baixo e causar&aacute;
muitos problemas de E/S dos aplicativos. Para corrigir essa limita&ccedil;&atilde;o, edite
o arquivo &lt;windows>\system32\CONFIG.NT e defina os seguintes valores: 
<ul>
<li><tt class="xph">files=200</tt></li>
<li><tt class="xph">buffers=60</tt></li></ul>em que &lt;windows> &eacute; o diret&oacute;rio onde o Windows est&aacute; instalado.
<p></p></li>
<li>No Windows 2000, com uma profundidade de cores de 32 bits, o mecanismo DirectDraw
da JVM n&atilde;o redesenha a regi&atilde;o sob o ponteiro do mouse. O efeito
s&atilde;o quadrados cinza ou preto que aparecem nos menus depois de o mouse ter estado ali.
A solu&ccedil;&atilde;o alternativa &eacute; desativar o DirectDraw (<tt>-Dsun.java2d.noddraw</tt>), ou alterar a resolu&ccedil;&atilde;o de cores da tela para algum
outro valor, como 256 cores.
<p></p></li>
<li>Ao instalar a biblioteca nativa PKCS 11 na JVM v1.4.x,
voc&ecirc; deve colocar a biblioteca no diret&oacute;rio bin&aacute;rio JRE com as outras bibliotecas
nativas JRE.
<p></p></li>
<li>A chamada NIO <strong>SocketChannel finishConnect()</strong> pode retornar <tt class="xph">verdadeiro</tt> (o canal est&aacute; conectado) ou <tt class="xph">falso</tt> (o processo de conex&atilde;o n&atilde;o est&aacute; conclu&iacute;do ainda), ou pode emitir
uma exce&ccedil;&atilde;o. No Windows 2000, ao utilizar conex&otilde;es sem bloqueio, poder&aacute; ser retornado <tt class="xph">falso</tt> mesmo depois que uma chamada anterior <strong>select()</strong> java tiver deduzido que um canal est&aacute; pronto para processamento.
<p></p></li>
<li>N&atilde;o &eacute; poss&iacute;vel alterar o intervalo
de pilhas do encadeamento principal Java (tamb&eacute;m conhecido como o encadeamento primordial) no tempo
de execu&ccedil;&atilde;o. O encadeamento principal possui um tamanho fixo de 256 KB, determinado como o valor
&oacute;timo por motivos de desempenho. Voc&ecirc; pode usar a op&ccedil;&atilde;o <strong>-Xss</strong>
para modificar o intervalo de pilhas somente em encadeamentos que n&atilde;o sejam o principal. Por causa
desse tamanho fixo do encadeamento principal, recomenda-se n&atilde;o tension&aacute;-lo
com atividade recursiva intensa, pois o encadeamento principal &eacute; mais propenso ao
estouro da pilha que outros encadeamentos.
<p></p></li>
<li>Se voc&ecirc; estiver digitando caracteres DBCS em um JTextArea, JTextField ou JFileChooser,
a altern&acirc;ncia de alguns IMEs chineses (especialmente Chinese Internal Code e
Zhengma) para o IME Intelligent ABC pode fazer com que seja produzido um dump de n&uacute;cleo. 
<p></p></li>
<li>Para usu&aacute;rios tchecos, observem que o painel de sele&ccedil;&atilde;o de idiomas do
Installshield oferece uma entrada traduzida em uma instala&ccedil;&atilde;o normalmente
n&atilde;o traduzida.
Essa &eacute; uma limita&ccedil;&atilde;o causada pelo Installshield. A cadeia &eacute; capturada do sistema operacional
com base na p&aacute;gina de c&oacute;digos. Como os idiomas polon&ecirc;s (para o qual a instala&ccedil;&atilde;o foi traduzida)
e tcheco possuem a p&aacute;gina de c&oacute;digos 1250, o Installshield tenta recuperar uma lista de
idiomas do sistema para ambos os idiomas, resultando nessa cadeia na lista
de idiomas.
<p></p></li>
<li>Se utilizar o chin&ecirc;s tradicional, n&atilde;o canalize a sa&iacute;da do aplicativo Java
diretamente para o comando <strong>more</strong>.  Em vez disso, direcione-a para um
arquivo tempor&aacute;rio e exiba o arquivo separadamente.

<p></p></li>
<li>Para usu&aacute;rios catal&atilde;es, a fonte Lucida Console deve ser utilizada para
impedir a m&aacute; exibi&ccedil;&atilde;o de caracteres mai&uacute;sculos acentuados. Esse problema
afeta apenas os usu&aacute;rios do Windows 2000. 
<p></p></li></ul>
<a name="rcf"></a>
<h1 id="rcf"><a href="#ToC_105">Algum Coment&aacute;rio sobre este Guia do Usu&aacute;rio?</a></h1>
<p>Caso tenha algum coment&aacute;rio sobre a utilidade, ou n&atilde;o, deste Guia do Usu&aacute;rio,
gostar&iacute;amos de saber sua opini&atilde;o atrav&eacute;s do correio. Observe que esse meio
n&atilde;o foi implementado para responder perguntas t&eacute;cnicas - esse meio &eacute; apenas para
coment&aacute;rios sobre a documenta&ccedil;&atilde;o. Envie seus coment&aacute;rios:</p>
<ul>
<li>Por e-mail: idrcf@hursley.ibm.com.</li>
<li>Por fax: 
<ul>
<li>Do Reino Unido: 01962 842327 </li>
<li>De outros locais:&lt;c&oacute;digo internacional&gt;44 1962 842327 </li></ul> </li>
<li>Por escrito para:

<div class="lines">Centro de Tecnologia IBM Brasil - Centro de Tradu&ccedil;&otilde;es<br />
Rodovia SP 101 km 09<br />
CEP 13185-900<br />
Hortol&acirc;ndia, SP <br />
&nbsp;&nbsp;&nbsp;<br />
</div></li></ul>
<p><strong>Letras Mi&uacute;das.</strong> Ao mandar uma mensagem para a IBM,
o Cliente concorda que todas as informa&ccedil;&otilde;es contidas em sua mensagem, incluindo
dados sobre feedback, como perguntas, coment&aacute;rios, sugest&otilde;es ou informa&ccedil;&otilde;es similares, ser&atilde;o
classificadas como n&atilde;o-confidenciais; a IBM n&atilde;o possui nenhuma obriga&ccedil;&atilde;o de qualquer tipo
em rela&ccedil;&atilde;o a tais informa&ccedil;&otilde;es e poder&aacute; reproduzir, utilizar, divulgar e distribuir as informa&ccedil;&otilde;es a terceiros sem nenhuma limita&ccedil;&atilde;o.
A IBM poder&aacute; usar todas as id&eacute;ias, conceitos, conhecimentos ou t&eacute;cnicas contidas em tais informa&ccedil;&otilde;es
para o fim que desejar, incluindo, mas n&atilde;o se limitando a desenvolvimento, fabrica&ccedil;&atilde;o e marketing de
produtos incorporando tais informa&ccedil;&otilde;es.</p>
<a name="notices"></a>
<h1 id="notices"><a href="#ToC_106">Avisos</a></h1>
<p> Estas informa&ccedil;&otilde;es foram desenvolvidas para produtos e servi&ccedil;os oferecidos nos
Estados Unidos. A IBM pode n&atilde;o oferecer os produtos, servi&ccedil;os ou recursos
discutidos neste documento em outros pa&iacute;ses. Consulte seu representante da IBM local
para obter informa&ccedil;&otilde;es sobre os produtos e servi&ccedil;os atualmente dispon&iacute;veis em sua &aacute;rea.
Qualquer refer&ecirc;ncia a produtos, programas ou servi&ccedil;os IBM
n&atilde;o significa que apenas produtos, programas ou servi&ccedil;os IBM
possam ser utilizados.
Qualquer produto, programa ou servi&ccedil;o funcionalmente equivalente, que n&atilde;o
infrinja nenhum direito de propriedade intelectual da IBM ou quaisquer outros direitos da IBM,
poder&aacute; ser utilizado em substitui&ccedil;&atilde;o a este produto, programa ou servi&ccedil;o.
Entretanto, a avalia&ccedil;&atilde;o e
verifica&ccedil;&atilde;o da opera&ccedil;&atilde;o de qualquer produto, programa ou servi&ccedil;o
n&atilde;o-IBM &eacute; de inteira responsabilidade do Cliente.</p>
<p>A IBM pode ter patentes ou solicita&ccedil;&otilde;es de patentes pendentes relativas a assuntos tratados
nesta publica&ccedil;&atilde;o. O fornecimento desta publica&ccedil;&atilde;o n&atilde;o garante ao Cliente nenhum direito sobre
tais patentes. Pedidos de licen&ccedil;a devem ser enviados, por escrito, para:</p>
<ul>
<li>Ger&ecirc;ncia de Rela&ccedil;&otilde;es Comerciais e Industriais da IBM Brasil
<br /> Av. Pasteur, 138-146
<br />Botafogo
<br />Rio de Janeiro, RJ
<br />CEP 22290-240 
<br /></li></ul>
<p>Para pedidos de licen&ccedil;as com rela&ccedil;&atilde;o a informa&ccedil;&otilde;es sobre DBCS (Conjunto
de Caracteres de Byte Duplo), entre em contato com o Departamento de
Propriedade Intelectual da IBM em seu pa&iacute;s ou envie pedidos, por escrito,
para:</p>
<ul>
<li>IBM World Trade Asia Corporation Licensing 
<br />2-31
Roppongi 3-chome, Minato-ku 
<br />Tokyo 106-0032, Japan 
<br /></li></ul>
<p>O par&aacute;grafo a seguir n&atilde;o se aplica a nenhum pa&iacute;s em que
tais disposi&ccedil;&otilde;es n&atilde;o estejam de acordo com a legisla&ccedil;&atilde;o local:</p>
<p>A INTERNATIONAL BUSINESS MACHINES CORPORATION FORNECE ESTA
PUBLICA&Ccedil;&Atilde;O "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE NENHUM
TIPO, SEJA EXPRESSA OU IMPL&Iacute;CITA, INCLUINDO, MAS N&Atilde;O SE
LIMITANDO &Agrave;S GARANTIAS IMPL&Iacute;CITAS DE MERCADO OU DE
ADEQUA&Ccedil;&Atilde;O A UM DETERMINADO PROP&Oacute;SITO. Alguns pa&iacute;ses n&atilde;o
permitem a exclus&atilde;o de garantias expressas ou impl&iacute;citas em certas
transa&ccedil;&otilde;es; portanto, esta disposi&ccedil;&atilde;o pode n&atilde;o se aplicar ao Cliente.</p>
<p>Estas informa&ccedil;&otilde;es podem incluir imprecis&otilde;es t&eacute;cnicas ou erros
tipogr&aacute;ficos.
Periodicamente, s&atilde;o feitas altera&ccedil;&otilde;es nas informa&ccedil;&otilde;es aqui contidas;
tais altera&ccedil;&otilde;es ser&atilde;o incorporadas em futuras edi&ccedil;&otilde;es desta publica&ccedil;&atilde;o.
A IBM pode fazer aperfei&ccedil;oamentos e/ou
altera&ccedil;&otilde;es nos produtos e/ou programas descritos nesta publica&ccedil;&atilde;o,
a qualquer momento e sem aviso pr&eacute;vio.</p>
<p>Refer&ecirc;ncias nestas informa&ccedil;&otilde;es a Web sites n&atilde;o-IBM s&atilde;o fornecidas
apenas por conveni&ecirc;ncia e n&atilde;o representam de forma alguma um endosso a
esses Web sites. Os materiais contidos nesses Web sites n&atilde;o
fazem parte dos materiais deste produto IBM e a utiliza&ccedil;&atilde;o desses
Web sites &eacute; de responsabilidade do usu&aacute;rio.</p>
<p>A IBM pode utilizar ou distribuir qualquer informa&ccedil;&atilde;o fornecida, da forma
que julgar apropriada, sem que isso incorra em qualquer obriga&ccedil;&atilde;o para com o Cliente.</p>
<p>Licenciados deste programa que pretendam obter mais informa&ccedil;&otilde;es sobre o
mesmo com o objetivo de permitir: (i) a troca de informa&ccedil;&otilde;es entre programas
criados independentemente e outros programas (incluindo este) e (ii) a
utiliza&ccedil;&atilde;o m&uacute;tua das informa&ccedil;&otilde;es trocadas, devem entrar em contato com:</p>
<ul>
<li>Ger&ecirc;ncia de Rela&ccedil;&otilde;es Comerciais e Industriais da IBM Brasil
<br />Av. Pasteur, 138-146
<br />Botafogo
<br />Rio de Janeiro-RJ
<br />CEP 22290-240</li></ul>
<p>Tais informa&ccedil;&otilde;es podem estar dispon&iacute;veis, sujeitas a termos e condi&ccedil;&otilde;es
apropriados, incluindo, em alguns casos, o pagamento de uma taxa.</p>
<p>O programa licenciado descrito neste documento e todo o material
licenciado dispon&iacute;vel s&atilde;o fornecidos pela IBM sob os termos do
Contrato com Cliente IBM, Contrato de Licen&ccedil;a de Programa
Internacional IBM ou qualquer contrato equivalente. </p>
<p>Todos os dados de desempenho aqui descritos foram
determinados em um ambiente controlado. Portanto, os resultados
obtidos em outros ambientes operacionais podem variar significativamente. Algumas
medidas podem ter sido tomadas em sistemas em fase de
desenvolvimento e n&atilde;o h&aacute; garantia de que tais medidas sejam as mesmas
nos sistemas normalmente dispon&iacute;veis.
Al&eacute;m disso, algumas
medi&ccedil;&otilde;es podem ter sido estimadas atrav&eacute;s de extrapola&ccedil;&atilde;o. Os resultados reais podem
variar. Os usu&aacute;rios deste documento devem
verificar os dados que se aplicam ao seu ambiente espec&iacute;fico.</p>
<p>As informa&ccedil;&otilde;es referentes a produtos n&atilde;o-IBM foram obtidas junto a
fornecedores desses produtos, an&uacute;ncios publicados ou outras fontes
publicamente dispon&iacute;veis. A IBM n&atilde;o testou esses produtos e
n&atilde;o pode confirmar a precis&atilde;o de desempenho, compatibilidade nem
qualquer outra reivindica&ccedil;&atilde;o relacionada a produtos n&atilde;o-IBM. D&uacute;vidas
sobre os recursos dos produtos n&atilde;o-IBM devem ser encaminhadas aos
fornecedores dos respectivos produtos.  </p>
<a name="wq107"></a>
<h2 id="wq107"><a href="#ToC_107">Marcas Registradas</a></h2>
<p>IBM &eacute; uma marca registrada da International
Business Machines Corporation nos Estados e/ou em outros pa&iacute;ses.</p>
<p>Java e todas as marcas registradas e logotipos baseados em Java s&atilde;o marcas ou marcas registradas da Sun Microsystems, Inc., nos Estados Unidos e/ou em outros pa&iacute;ses. </p>
<p>Microsoft, Windows e o logotipo do Windows s&atilde;o marcas registradas da
Microsoft Corporation nos Estados Unidos e/ou em outros pa&iacute;ses.</p>
<p>Outros nomes de empresas, produtos ou servi&ccedil;os podem ser marcas registradas ou marcas de servi&ccedil;o de terceiros.</p>
<p>Este produto tamb&eacute;m &eacute; baseado em parte do trabalho do
Projeto FreeType. Para obter mais informa&ccedil;&otilde;es sobre o Freetype, consulte <a href="http://www.freetype.org">http://www.freetype.org</a>.</p>
<p>Este produto inclui software
desenvolvido pela 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>
