<?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="it-IT" xml:lang="it-it">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="dc.language" scheme="rfc1766" content="it-it" />
<meta name="dc.date" scheme="iso8601" content="2005-10-17" />
<meta name="copyright" content="(C) Copyright IBM Corp. 2005" />
<meta name="security" content="" />
<meta name="Robots" content="index,follow"/>
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<title>IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0</title>
<link rel="stylesheet" type="text/css" href="../ibmidwb.css" />
<link rel="stylesheet" type="text/css" href="../ait.css" />
</head>
<body class="revised">
<a id="Top_Of_Page" name="Top_Of_Page"></a>
<h1>IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0</h1>
<h1>Guida per l'utente</h1>
<br />
<a name="wq1"></a>
<h1 id="wq1"><a href="#ToC_1">Informazioni sul copyright</a></h1>
<p><strong>Nota</strong>: Prima di usare questo prodotto e le relative informazioni,
leggere le informazioni contenute nella sezione <a href="#notices">Informazioni particolari</a>.</p>
<p>Questa edizione della Guida per l'utente fa riferimento a
IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0, e a tutti i successivi rilasci, modifiche e aggiornamenti di servizio se non diversamente
indicato nelle nuove edizioni.</p>
<p>(c) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo
Alto, CA 94303 USA. Tutti i diritti riservati.</p>
<p>(c) Copyright International Business Machines Corporation, 1999, 2005.
Tutti i diritti riservati.</p>
<p>Limitazioni per gli utenti degli Stati
Uniti d'America. L'uso, la duplicazione o la divulgazione
sono limitati dal GSA ADP Schedule Contract con l'IBM Corporation.</p>
<a name="wq2"></a>
<h1 id="wq2"><a href="#ToC_2">Prefazione</a></h1>
<p>La Guida per l'utente fornisce informazioni generali su IBM(R) 32-bit SDK and Runtime Environment for Windows(R), Java(TM) 2 Technology Edition, Version 5.0 e informazioni specifiche sulle differenze dell'implementazione IBM confrontata con quella della Sun. Consultare questa
Guida utente e l'altra documentazione dal sito Web di Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<p>SDK e Runtime Environment sono supportati sui seguenti prodotti:</p>
<ul>
<li>Windows 2000</li>
<li>Windows XP</li>
<li>Windows Server 2003</li></ul>
<p>Notare che IPv6 &egrave; supportato solo su Windows
XP e Windows Server 2003.</p>
<p>Il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">IBM JVM Diagnostics Guide</a> fornisce informazioni pi&ugrave; dettagliate
su Virtual Machine for Java IBM.</p>
<p>Le modifiche tecniche effettuate per questa Guida per Versione 5.0 diverse da quelle ovvie o di minor importanza, come l'aggiornamento da "1.4.2" a "5.0", sono indicate in rosso durante la visualizzazione nella copia HTML o nella stampa a colori e da barre verticali nella parte sinistra delle modifiche.</p>
<p>I termini "Runtime Environment" e "Java Virtual Machine" sono utilizzati scambievolmente in questa Guida per l'utente.</p>
<a name="wq3"></a>
<div id="wq3">
<h1>Indice</h1>
<div class="head1"><a id="ToC_1" name="ToC_1" href="#wq1" class="toclink">Informazioni sul copyright</a></div>
<div class="head1"><a id="ToC_2" name="ToC_2" href="#wq2" class="toclink">Prefazione</a></div>
<div class="head1"><a id="ToC_3" name="ToC_3" href="#wq4" class="toclink">Panoramica</a></div>
<div class="head2"><a id="ToC_4" name="ToC_4" href="#wq5" class="toclink">Compatibilit&agrave; versione</a></div>
<div class="head2"><a id="ToC_5" name="ToC_5" href="#upgrading" class="toclink">Aggiornamento di SDK</a></div>
<div class="head2"><a id="ToC_6" name="ToC_6" href="#wq6" class="toclink">Migrazione da altri IBM JVM</a></div>
<div class="head1"><a id="ToC_7" name="ToC_7" href="#wq7" class="toclink">Contenuti di SDK e Runtime Environment</a></div>
<div class="head2"><a id="ToC_8" name="ToC_8" href="#wq8" class="toclink">Tool Runtime Environment</a></div>
<div class="head2"><a id="ToC_9" name="ToC_9" href="#sdktools" class="toclink">Tool SDK</a></div>
<div class="head1"><a id="ToC_10" name="ToC_10" href="#wq10" class="toclink">Installazione e configurazione di SDK e Runtime Environment</a></div>
<div class="head2"><a id="ToC_11" name="ToC_11" href="#wq11" class="toclink">Operazioni preliminari</a></div>
<div class="head2"><a id="ToC_12" name="ToC_12" href="#attended_installation" class="toclink">Installazione presidiata (interattiva)</a></div>
<div class="head3"><a id="ToC_13" name="ToC_13" href="#wq13" class="toclink">Installazione dei pacchetti</a></div>
<div class="head3"><a id="ToC_14" name="ToC_14" href="#wq15" class="toclink">Installazione di Runtime Environment come sistema Java Virtual Machine</a></div>
<div class="head2"><a id="ToC_15" name="ToC_15" href="#wq17" class="toclink">Installazione non presidiata</a></div>
<div class="head2"><a id="ToC_16" name="ToC_16" href="#wq20" class="toclink">Abilitazione di IBM Accessibility Bridge</a></div>
<div class="head2"><a id="ToC_17" name="ToC_17" href="#wq21" class="toclink">Disabilitazione del supporto Java Accessibility</a></div>
<div class="head2"><a id="ToC_18" name="ToC_18" href="#wq22" class="toclink">Informazione per gli utenti di lingue europee</a></div>
<div class="head2"><a id="ToC_19" name="ToC_19" href="#pathcons" class="toclink">Impostazione di PATH</a></div>
<div class="head2"><a id="ToC_20" name="ToC_20" href="#wq24" class="toclink">Impostazione di CLASSPATH</a></div>
<div class="head2"><a id="ToC_21" name="ToC_21" href="#wq25" class="toclink">Disinstallazione</a></div>
<div class="head1"><a id="ToC_22" name="ToC_22" href="#invint" class="toclink">Utilizzo di Runtime Environment</a></div>
<div class="head2"><a id="ToC_23" name="ToC_23" href="#wq28" class="toclink">Opzioni</a></div>
<div class="head3"><a id="ToC_24" name="ToC_24" href="#wq29" class="toclink">Specifica di opzioni Java e propriet&agrave; del sistema</a></div>
<div class="head3"><a id="ToC_25" name="ToC_25" href="#wq31" class="toclink">Opzioni standard</a></div>
<div class="head3"><a id="ToC_26" name="ToC_26" href="#xoptions" class="toclink">Opzioni non standard </a></div>
<div class="head2"><a id="ToC_27" name="ToC_27" href="#wq32" class="toclink">Ricerca del numero di build IBM e del numero della versione</a></div>
<div class="head2"><a id="ToC_28" name="ToC_28" href="#wq33" class="toclink">Globalizzazione dei comandi java</a></div>
<div class="head2"><a id="ToC_29" name="ToC_29" href="#wq34" class="toclink">Esecuzione automatica di un file Java</a></div>
<div class="head2"><a id="ToC_30" name="ToC_30" href="#jaws" class="toclink">Esecuzione di applicazioni Java con le tecnologie native assistite</a></div>
<div class="head2"><a id="ToC_31" name="ToC_31" href="#jit" class="toclink">Compilatore Just-In-Time (JIT) </a></div>
<div class="head3"><a id="ToC_32" name="ToC_32" href="#disjit" class="toclink">Come disabilitare JIT</a></div>
<div class="head3"><a id="ToC_33" name="ToC_33" href="#enajit" class="toclink">Come abilitare JIT</a></div>
<div class="head3"><a id="ToC_34" name="ToC_34" href="#detjit" class="toclink">Come determinare se JIT &egrave; abilitato</a></div>
<div class="head2"><a id="ToC_35" name="ToC_35" href="#garbage" class="toclink">Specifica della politica di raccolta dei dati obsoleti</a></div>
<div class="head3"><a id="ToC_36" name="ToC_36" href="#wq37" class="toclink">Opzioni di Raccolta dei dati obsoleti</a></div>
<div class="head3"><a id="ToC_37" name="ToC_37" href="#wq38" class="toclink">Tempo di pausa</a></div>
<div class="head3"><a id="ToC_38" name="ToC_38" href="#pausetimereduction" class="toclink">Riduzione della pausa </a></div>
<div class="head3"><a id="ToC_39" name="ToC_39" href="#wq39" class="toclink">Ambienti con memorie riservate molto piene</a></div>
<div class="head2"><a id="ToC_40" name="ToC_40" href="#wq40" class="toclink">Modalit&agrave; di elaborazione di JVM dei segnali</a></div>
<div class="head3"><a id="ToC_41" name="ToC_41" href="#sighand" class="toclink">Segnali usati da JVM </a></div>
<div class="head3"><a id="ToC_42" name="ToC_42" href="#wq46" class="toclink">Collegamento di un driver di codice nativo alla libreria di segnale a catena</a></div>
<div class="head2"><a id="ToC_43" name="ToC_43" href="#wq47" class="toclink">Trasformazione di documenti XML</a></div>
<div class="head3"><a id="ToC_44" name="ToC_44" href="#wq49" class="toclink">Utilizzo di una versione precedente di Xerces o Xalan</a></div>
<div class="head1"><a id="ToC_45" name="ToC_45" href="#wq50" class="toclink">Utilizzo di SDK per lo sviluppo di applicazioni Java</a></div>
<div class="head2"><a id="ToC_46" name="ToC_46" href="#debugger" class="toclink">Esecuzione del debug nelle applicazioni Java</a></div>
<div class="head3"><a id="ToC_47" name="ToC_47" href="#jdb" class="toclink">Java Debugger (JDB)</a></div>
<div class="head2"><a id="ToC_48" name="ToC_48" href="#wq54" class="toclink">Come stabilire se l'applicazione esegue una JVM a 32 o 64 bit</a></div>
<div class="head2"><a id="ToC_49" name="ToC_49" href="#wq55" class="toclink">Scrittura di applicazioni JNI</a></div>
<div class="head2"><a id="ToC_50" name="ToC_50" href="#wq57" class="toclink">Operazioni con gli applet</a></div>
<div class="head3"><a id="ToC_51" name="ToC_51" href="#wq58" class="toclink">Esecuzione delle applet con Applet Viewer</a></div>
<div class="head3"><a id="ToC_52" name="ToC_52" href="#wq59" class="toclink">Esecuzione del debug delle applet con 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">Configurazione dell'allocazione di memoria di pagine grandi</a></div>
<div class="head2"><a id="ToC_54" name="ToC_54" href="#wq60" class="toclink">Supporto CORBA</a></div>
<div class="head3"><a id="ToC_55" name="ToC_55" href="#wq61" class="toclink">Supporto per GIOP 1.2</a></div>
<div class="head3"><a id="ToC_56" name="ToC_56" href="#wq62" class="toclink">Supporto per Portable Interceptors</a></div>
<div class="head3"><a id="ToC_57" name="ToC_57" href="#wq63" class="toclink">Supporto per Interoperable Naming Service</a></div>
<div class="head3"><a id="ToC_58" name="ToC_58" href="#wq64" class="toclink">Propriet&agrave; di sistema per tracciare l'ORB</a></div>
<div class="head3"><a id="ToC_59" name="ToC_59" href="#wq65" class="toclink">Propriet&agrave; di sistema per ottimizzare ORB</a></div>
<div class="head3"><a id="ToC_60" name="ToC_60" href="#wq66" class="toclink">Autorizzazioni di sicurezza Java 2 per ORB</a></div>
<div class="head3"><a id="ToC_61" name="ToC_61" href="#wq70" class="toclink">Classi di implementazione ORB</a></div>
<div class="head2"><a id="ToC_62" name="ToC_62" href="#rmi-iiop" class="toclink">RMI su IIOP</a></div>
<div class="head2"><a id="ToC_63" name="ToC_63" href="#rmi" class="toclink">Implementazione di Connection Handler Pool per RMI</a></div>
<div class="head2"><a id="ToC_64" name="ToC_64" href="#wq71" class="toclink">Supporto bidirezionale avanzato</a></div>
<div class="head2"><a id="ToC_65" name="ToC_65" href="#bigd" class="toclink">BigDecimal migliorato</a></div>
<div class="head2"><a id="ToC_66" name="ToC_66" href="#wq72" class="toclink">Supporto del simbolo dell'Euro</a></div>
<div class="head1"><a id="ToC_67" name="ToC_67" href="#jcommchapter" class="toclink">Uso di Java Communications API (JavaComm)</a></div>
<div class="head2"><a id="ToC_68" name="ToC_68" href="#instcomm" class="toclink">Installazione delle API di Java Communications</a></div>
<div class="head2"><a id="ToC_69" name="ToC_69" href="#wq74" class="toclink">Configurazione di Java Communications API</a></div>
<div class="head2"><a id="ToC_70" name="ToC_70" href="#wq75" class="toclink">Limitazioni di stampa con Java Communications API</a></div>
<div class="head2"><a id="ToC_71" name="ToC_71" href="#wq76" class="toclink">Disinstallazione di Java Communications API</a></div>
<div class="head2"><a id="ToC_72" name="ToC_72" href="#wq77" class="toclink">Documentazione di Java Communications API</a></div>
<div class="head1"><a id="ToC_73" name="ToC_73" href="#wq78" class="toclink">Sviluppo di applicazioni Java</a></div>
<div class="head2"><a id="ToC_74" name="ToC_74" href="#wq79" class="toclink">Utilizzo del plug-in di Java</a></div>
<div class="head3"><a id="ToC_75" name="ToC_75" href="#suppbrowse" class="toclink">Browser supportati</a></div>
<div class="head3"><a id="ToC_76" name="ToC_76" href="#wq84" class="toclink">Supporto DOM (Document Object Model) comune</a></div>
<div class="head3"><a id="ToC_77" name="ToC_77" href="#wq85" class="toclink">Utilizzo dei parametri DBCS</a></div>
<div class="head2"><a id="ToC_78" name="ToC_78" href="#wq86" class="toclink"> Utilizzo di Web Start</a></div>
<div class="head3"><a id="ToC_79" name="ToC_79" href="#installing_webstart" class="toclink">Esecuzione di Web Start</a></div>
<div class="head2"><a id="ToC_80" name="ToC_80" href="#wq88" class="toclink">Invio di applicazioni 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">Condivisione di dati di classe tra JVM</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_82" name="ToC_82" href="#wq89" class="toclink">Panoramica sulla condivisione di classi</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_83" name="ToC_83" href="#wq90" class="toclink">Contenuto della 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">Aggiornamento dinamico della 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">Abilitazione della condivisione di classi</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_86" name="ToC_86" href="#wq93" class="toclink">Sicurezza della 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">Intervallo di tempo valido della 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">Programmi di utilit&agrave; della 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">Utilizzo di opzioni della riga comandi per la condivisione di classi</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_90" name="ToC_90" href="#wq96" class="toclink">Creazione, popolamento ed eliminazione di una 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">Prestazioni e consumo della memoria</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_92" name="ToC_92" href="#wq98" class="toclink">Limitazioni e considerazioni sull'uso della condivisione di classi</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_93" name="ToC_93" href="#cachesizelimits" class="toclink">Limiti di dimensioni della 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">Modifiche bytecode al runtime</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_95" name="ToC_95" href="#wq99" class="toclink">Limitazioni del sistema operativo</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_96" name="ToC_96" href="#usingsharedclasspermissions" class="toclink">Utilizzo di 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">Adattamento dei classloader personalizzati per la condivisione di classi</a></div>
<div class="head1"><a id="ToC_98" name="ToC_98" href="#wq100" class="toclink">Servizio e supporto per fornitori di software indipendente</a></div>
<div class="head1"><a id="ToC_99" name="ToC_99" href="#wq101" class="toclink">Accessibilit&agrave;</a></div>
<div class="head2"><a id="ToC_100" name="ToC_100" href="#ikeycmd" class="toclink">Accessibilit&agrave; iKeyman</a></div>
<div class="head2"><a id="ToC_101" name="ToC_101" href="#wq103" class="toclink">Tastiera trasversale di componenti JComboBox in Swing</a></div>
<div class="head2"><a id="ToC_102" name="ToC_102" href="#wq104" class="toclink">Accessibilit&agrave; Web Start</a></div>
<div class="head1"><a id="ToC_103" name="ToC_103" href="#wq105" class="toclink">Note generali sulla sicurezza</a></div>
<div class="head1"><a id="ToC_104" name="ToC_104" href="#wq106" class="toclink">Limiti noti</a></div>
<div class="head1"><a id="ToC_105" name="ToC_105" href="#rcf" class="toclink">Inoltro dei commenti relativi a questa guida utente</a></div>
<div class="head1"><a id="ToC_106" name="ToC_106" href="#notices" class="toclink">Informazioni particolari</a></div>
<div class="head2"><a id="ToC_107" name="ToC_107" href="#wq107" class="toclink">Marchi</a></div>
</div>
<a name="wq4"></a>
<h1 id="wq4"><a href="#ToC_3">Panoramica</a></h1>
<p>IBM SDK per Linux &egrave; un ambiente di sviluppo per la scrittura e l'esecuzione di applet e applicazioni conformi
a IBM Java 5.0 Core Application Program Interface (API).</p>
<p>SDK comprende Runtime Environment per Windows, che abilita ad eseguire solo applicazioni Java. Se &egrave; installato SDK,
&egrave; incluso Runtime Environment.</p>
<p>Runtime Environment contiene Java Virtual Machine  e il supporto file tra cui
i file class. Runtime Environment contiene solo un insieme secondario delle classi trovate
in SDK e consente di supportare il programma Java all'avvio ma non consente di compilare
programmi Java. Runtime Environment per Windows non include alcun tool di sviluppo, del tipo
<strong>appletviewer.exe</strong> o Java compiler (<strong>javac.exe</strong>) o le classi che sono solo per i sistemi di sviluppo.</p>
<p>Inoltre, viene fornito il pacchetto API (application programming interface) di Java Communications  per essere utilizzato con il Runtime Environment per Windows. Per informazioni, consultare la sezione <a href="#jcommchapter">Uso di Java Communications API (JavaComm)</a>.</p>
<a name="wq5"></a>
<h2 id="wq5"><a href="#ToC_4">Compatibilit&agrave; versione</a></h2>
<p>In genere, qualsiasi applet o applicazione eseguibile con una versione precedente
di SDK dovrebbe funzionare correttamente con IBM 32-bit SDK for Windows, v5.0.
Non viene fornita alcuna garanzia che le classi compilate con questo rilascio funzionino con i rilasci precedenti.</p>
<p><font color="red"><span id="changed">|</span>IBM 32-bit SDK per Windows, V5.0,
<span id="changed">|</span>viene generato con Microsoft Visual Studio .NET 2003.</font></p>
<p>Per leggere la documentazione della Sun relativa alla compatibilit&agrave;, consultare il sito web della Sun Web su <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="upgrading"></a>
<h2 id="upgrading"><a href="#ToC_5">Aggiornamento di SDK</a></h2>
<p>Se si sta effettuando un aggiornamento di SDK da un rilascio precedente, effettuare il backup di tutti i file di configurazione e dei file dei criteri di protezione prima di proseguire con l'aggiornamento. </p>
<p>Dopo l'aggiornamento, potrebbe essere necessario ripristinare o riconfigurare questi file perch&eacute; potrebbero essere stati sovrascritti durante il processo di aggiornamento.   Verificare la sintassi dei nuovi file prima di ripristinare queli originali perch&eacute; il formato o le opzioni dei file sono state modificate.</p>
<a name="wq6"></a>
<h2 id="wq6"><a href="#ToC_6">Migrazione da altri IBM JVM</a></h2>
<p>Alla Versione 5.0, IBM Runtime Environment per Windows contiene nuove versioni di
IBM Java Virtual Machine e del compilatore Just-In-Time (JIT). Se si sta eseguendo la migrazione da una versione pi&ugrave;
vecchia di IBM Runtime Environment, notare che: </p>
<ul>
<li>La libreria a collegamento dinamico jvm.dll  JVM &egrave; installata nella directory jre\bin\j9vm. Ci&ograve; &egrave; diverso, ad esempio, da
Runtime Environment per Windows per la Versione 1.4.2, dove &egrave; installato in jre\bin\classic. Le applicazioni native che usano l'interfaccia di richiamo JNI
potrebbero aver bisogno di aggiungere un nuovo percorso di directory nella loro variabile di ambiente o nelle
variabili per localizzare la libreria a collegamento dinamico JVM.</li>
<br />
<li><font color="red"><span id="changed">|</span>JVMMI (JVM Monitoring Interface) non &egrave; pi&ugrave; disponibile.
<span id="changed">|</span>Bisogna riscrivere le applicazioni che utilizzano quella API. Si raccomanda di usare al suo posto JVMTI
<span id="changed">|</span>(JVM Tool Interface). JVMTI non &egrave; funzionalmente equivalente a JVMMI. Per informazioni su JVMTI, consultare <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 <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>La nuova implementazione di JNI &egrave; conforme alla specifica JNI ma differisce dalla vecchia
<span id="changed">|</span>implementazione. Restituisce copie degli oggetti piuttosto che fissarli.  La differenza pu&ograve; esporre ad errori nel codice di applicazione JNI. Per informazioni sul debug del codice JNI, consultare <strong>-Xcheck:jni</strong> in <a href="#xoptions">Opzioni non standard </a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>Il formato ed il contenuto del log dettagliato della raccolta di dati obsoleti ottenuti utilizzando
<span id="changed">|</span><strong>-verbose:gc</strong> sono cambiati. I dati vengono ora formattati come XML. Il contenuto dei dati riflette
<span id="changed">|</span>le modifiche apportate all'implementazione della raccolta dei dati obsoleti in
<span id="changed">|</span>JVM, ed &egrave; cambiata la maggior parte dei dati statistici in uscita.
<span id="changed">|</span>Bisogna cambiare eventuali programmi che elaborano l'output GC in dettaglio in modo che possano lavorare con il nuovo formato e la
<span id="changed">|</span>nuova data. Consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> per un esempio dei nuovi dati GC dettagliati.</font></li>
<br />
<li>Le versioni precedenti di IBM JRE inviate con un file rt.jar si trovano nella directory jre/lib. Da Java v1.4 in avanti,
questo file &egrave; stato restituito da vari file JAR che risiedono nelle directory jre/lib.</li>
<br />
<li><font color="red"><span id="changed">|</span>Per ulteriori informazioni sulla compatibilit&agrave; industriale e sulle api obsolete, consultare la
<span id="changed">|</span><a href="http://java.sun.com/j2se/5.0/compatibility.html">Sun's Java 5 Compatibility Documentation</a> e <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">Contenuti di SDK e Runtime Environment</a></h1>
<p>SDK contiene diversi tool di sviluppo e un JRE (Java Runtime Environment). Questa sezione descrive i contenuti dei tool SDK e di Runtime Environment.</p>
<p>Le applicazioni scritte interamente in Java <strong>non</strong> devono avere dipendenze sulla struttura della
directory di SDK IBM (o sui file in quelle directory).  Qualunque
dipendenza sulla struttura della directory SDK (o sui file in quelle directory) potrebbe comportare problemi
di trasportabilit&agrave; dell'applicazione. Le applicazioni JNI (Java Native Interface) avranno dipendenze minori.</p>
<a name="wq8"></a>
<h2 id="wq8"><a href="#ToC_8">Tool Runtime Environment</a></h2>
<ul>
<li>Classi core -- Questi sono i file di classe compilati per la piattaforma e devono rimanere impacchettati
affinch&eacute; il compilatore e l'interprete possa accedervi. Non modificare tali classi ma creare, invece, delle
sotto-classi e ricoprire dove necessario. 
<br /></li>
<li>Tool JRE -- I seguenti tool sono parte di Runtime Environment e si trovano nella directory
jre\bin, se non diversamente specificato. 
<ul>
<li> java.exe (Java Interpreter) 
<ul class="simple">
<li>Esecuzione di classi Java. L'interprete Java esegue programmi scritti in linguaggio di programmazione Java.</li></ul>
<br /></li>
<li>javaw.exe (Interprete Java)
<ul class="simple">
<li>Esegue le classi Java nello stesso modo del comando <strong>java</strong> ma non usa una finestra
di console.</li></ul>
<br /></li>
<li>keytool.exe (Tool di gestione chiave e certificato)
<ul class="simple">
<li>Gestisce un keystore (database) di chiavi private e le loro catene di certificati X.509 associati
che autenticano le chiavi pubbliche.</li></ul>
<br /></li>
<li>policytool.exe (Politica di creazione file e tool di gestione)
<ul class="simple">
<li>Crea e modifica i file di configurazione della politica esterna che definisce la propria politica di sicurezza
Java dell'installazione.</li></ul>
<br /></li>
<li>rmid.exe (daemon del sistema di attivazione RMI)
<ul class="simple">
<li>Avvia il daemon del sistema di attivazione in modo che gli oggetti possano essere registrati e attivati in un JVM
(Java virtual machine).</li></ul>
<br /></li>
<li>tnameserv.exe (servizio di assegnazione nomi CORBA (Common Object Request Broker Architecture)
<ul class="simple">
<li>Avvia il servizio CORBA di assegnazione transitoria dei nomi.</li></ul>
<br /></li>
<li>rmiregistry.exe (Registro oggetto remoto Java)
<ul class="simple">
<li>Crea ed avvia un registro remoto dell'oggetto sulla porta specificata dell'host corrente.</li></ul>
<br /></li>
<li>ikeyman.exe (programma di utilit&agrave; della GUI iKeyman)
<ul class="simple">
<li>Consente di gestire chiavi, certificati e richieste di certificato. Per ulteriori informazioni consultare
<em>Security Guide</em> e visitare il sito <a href="http://www.ibm.com/developerworks/java/jdk/security">http://www.ibm.com/developerworks/java/jdk/security</a>. SDK fornisce inoltre una versione da riga comandi di questa
utility. Consultare <a href="#ikeycmd">Accessibilit&agrave; iKeyman</a> per informazioni dettagliate.</li></ul>
<br /></li>
<li>jextract.exe (estrattore dump)
<ul class="simple">
<li>Converte un dump prodotto dal sistema in un formato comune che pu&ograve; essere usato da
<a href="#jformat">jdmpview</a>. Per ulteriori informazioni, consultare il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>javaws.exe (Java
Web Start)
<ul class="simple">
<li>Abilita la distribuzione e la manutenzione automatica delle applicazioni Java.</li></ul>
<br /></li></ul></li></ul>
<a name="sdktools"></a>
<h2 id="sdktools"><a href="#ToC_9">Tool SDK</a></h2>
<ul>
<li>I tool di seguito riportati sono parte di SDK e si trovano nella directory C:\Program Files\IBM\Java50\bin :
<ul>
<li>javac.exe (Compilatore Java)
<ul class="simple">
<li>Compila programmi scritti in linguaggio di programmazione JAVA in o
bytecode (codice Java compilato).</li></ul>
<br /></li>
<li>appletviewer.exe (Visualizzatore Applet di Java)
<ul class="simple">
<li>Testa ed esegue applet al di fuori di un browser web.</li></ul>
<br /></li>
<li>jdb.exe (Java Debugger)
<ul class="simple">
<li>Aiuta ad eseguire il debug dei propri programmi Java.</li></ul>
<br /></li>
<li>javap.exe (Disassemblatore file di classe)
<ul class="simple">
<li>Disassembla i file compilati e pu&ograve; stampare una rappresentazione dei bytecode.</li></ul>
<br /></li>
<li>javadoc.exe (Generatore di documentazione Java)
<ul class="simple">
<li>Genera pagine HTML di documentazione API dai file sorgente Java.</li></ul>
<br /></li>
<li>javah.exe (Intestazione in C e generatore di file matrice)
<ul class="simple">
<li>Abilita l'associazione dei metodi nativi con il codice scritto in linguaggio di programmazione Java.</li></ul>
<br /></li>
<li>jar.exe (Tool di archiviazione Java)
<ul class="simple">
<li>Combina file multipli in un singolo file JAR (Java Archive).</li></ul>
<br /></li>
<li>jarsigner.exe (Firma JAR e tool di verifica)
<ul class="simple">
<li>Genera firme per i file JAR e verifica le firme dei file JAR firmati.</li></ul>
<br /></li>
<li>jconsole.exe (JConsole Monitoring and Management
Tool - sperimentale)
<ul class="simple">
<li>Tool grafico conforme a JMX (non supportato) per il controllo delle JVM locali e remote.</li></ul>
<br /></li>
<li>native2ascii.exe (Convertitore di Native-To-ASCII)
<ul class="simple">
<li>Converte un file con codifica nativa in un file ASCII contenente caratteri codificati in
Latin-1 o in Unicode o in entrambi.</li></ul>
<br /></li>
<li>rmic.exe (Convertitore matrice RMI (Remote Method Invocation) Java)
<ul class="simple">
<li>Genera matrici, strutture e congiunzioni per gli oggetti remoti. Include RMI
oltre al supporto del protocollo RMI_IIOP (Internet Inter-ORB Protocol).</li></ul>
<br /></li>
<li>idlj.exe (IDL su Java Compiler)
<ul class="simple">
<li>Genera un legame Java da un dato file IDL.</li></ul>
<br /></li>
<li>serialver.exe (Comando di versione seriale)
<ul class="simple">
<li>Restituisce il serialVersionUID per uno o pi&ugrave; classi in un formato appropriato per la copia in una classe in evoluzione.</li></ul>
<br /></li>
<li>extcheck.exe (programma di utilit&agrave; Extcheck)
<ul class="simple">
<li>rileva i conflitti di versione tra il file jar di destinazione e i file con estensione jar installati al momento.</li></ul>
<br /></li>
<li id="jformat">
<a name="jformat"></a>jdmpview.exe (Programma di formattazione del dump di piattaforme incrociate)
<ul class="simple">
<li>Un tool che consente di analizzare i dump. Per ulteriori informazioni, consultare il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>htmlconverter.exe (Programma di conversione HTML Java Plug-in)
<ul class="simple">
<li>Converte una pagina HTML contenente applet in un formato che pu&ograve; usare Java Plug-in.</li></ul>
<br /></li></ul>
<br /></li>
<li>INCLUDI FILE
<ul class="simple">
<li>Intestazione in C per programmi JNI.
<br /></li></ul>
<br /></li>
<li>DEMO 
<ul class="simple">
<li>La directory demo contiene un numero di sottodirectory contenenti esempi di codifica sorgente, demo,
applicazioni e applet da usare. </li></ul>
<br /></li>
<li>COPYRIGHT
<ul class="simple">
<li>Notizie riguardanti il copyright del software SDK. per Windows</li></ul>
<br /></li>
<li>LICENZA
<ul class="simple">
<li>Il file della LICENZA, C:\Program Files\IBM\Java50\license, contiene l'accordo di licenza per il SDK per il software Windows . Per visualizzare o stampare l'accordo di licenza, aprire il file
in un browser Web.</li></ul>
<br /></li></ul>
<div>
<p><strong>Nota:</strong> la Guida per l'utente, Javadoc,  e la licenza che la accompagna , i file di copyright e la directory della demo sono l'unica documentazione inclusa in questo
SDK per Windows. &Egrave; possibile visualizzare o scaricare la documentazione del software di Sun dal sito Web di 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">Installazione e configurazione di SDK e Runtime Environment</a></h1>
<a name="wq11"></a>
<h2 id="wq11"><a href="#ToC_11">Operazioni preliminari</a></h2>
<p>per installare SDK oppure il pacchetto Runtime Environment, scaricare il relativo pacchetto di installazione. Assicurarsi di scaricare tutti i pacchetti nella stessa directory.
I pacchetti ed i relativi nomi file sono elencati in <a href="#attended_installation">Installazione presidiata
(interattiva)</a>; non modificare i nomi file dei pacchetti. </p>
<p>Prima di avviare l'installazione, accertarsi che ci sia spazio sufficiente nella directory C:\WINDOWS\TEMP da utilizzare durante l'installazione. La quantit&agrave; di spazio temporaneo richiesta nella
directory TEMP durante l'installazione &egrave; la seguente:  </p>
<ul>
<li>Pacchetto installabile SDK: 130 MB</li>
<li>Pacchetto installabile Runtime Environment: 85 MB </li></ul><p class="indatacontent">Se lo spazio temporaneo disponibile non &egrave; sufficiente, il
programma di installazione genera un errore e interrompe le
operazioni. Se si dispone di spazio temporaneo sufficiente, ma il
messaggio viene visualizzato ugualmente, verificare che i pacchetti
che si desidera installare siano stati scaricati completamente. Confrontare,
quindi, le dimensioni dei pacchetti con quelle visualizzate
nelle pagine Web  da cui sono stati scaricati.</p>
<a name="attended_installation"></a>
<h2 id="attended_installation"><a href="#ToC_12">Installazione presidiata
(interattiva)</a></h2>
<div>
<p>I pacchetti che possono essere installati sono:</p>
<ul>
<li>Pacchetto installabile SDK: ibm-java2-sdk-50-win-i386.exe</li>
<li>Pacchetto installabile Runtime Environment: ibm-java2-jre-50-win-i386.exe</li>
<li>Pacchetto installabile Runtime Environment
(solo hardware IBM): ibm-java2-jre-50-ibmpc-win-i386.exe</li></ul>
<p>Altri pacchetti forniti come file zip sono:</p>
<ul>
<li>Pacchetto Runtime Environment: ibm-java2-jre-50-win-i386.zip</li>
<li>Pacchetto SDK: ibm-java2-sdk-50-win-i386.zip</li>
<li>API (Application Programming Interface) Java Communications
per Windows: ibm-java2-javacomm-50-win-i386.zip.
Per le istruzioni di installazione, consultare <a href="#instcomm">Installazione delle API di Java Communications</a>.</li>
<li>Pacchetto della documentazione: ibm-java2-docs-50-win-i386.zip</li>
<li>Pacchetto dei demo: ibm-java2-demos-50-win-i386.zip</li></ul></div>
<a name="wq13"></a>
<h3 id="wq13"><a href="#ToC_13">Installazione dei pacchetti</a></h3>
<p></p>
<ol type="1">
<li>Avviare ibm-java2-sdk-50-win-i386.exe (for the SDK) o
ibm-java2-jre-50-win-i386.exe (solo per Runtime Environment).</li>
<li>Seguire le istruzioni indicate nella procedura guidata di installazione.</li></ol><p class="indatacontent">Viene installato Runtime Environment per impostazione predefinita nella directory C:\Program Files\IBM\Java50\jre.</p>
<p>Se si &egrave; scaricato il pacchetto installabile SDK, &egrave; possibile selezionare se installare:</p>
<ul>
<li>Gli strumenti di sviluppo SDK (ad esempio, il compilatore Java)</li>
<li>Runtime Environment</li>
<li>Il codice di origine per le librerie delle classi Sun, utilizzate da alcuni strumenti per effettuare i debug delle  applicazioni.</li></ul><p class="indatacontent">&Egrave; possibile installare individualmente i componenti o in combinazione.</p>
<p>Per la procedura di installazione, vengono visualizzate le seguenti opzioni:</p>
<ul>
<li><strong>Tipica</strong> - questa opzione installa tutti i tre componenti.</li>
<li><strong>Compatta</strong> - questa opzione installa solo Runtime Environment.</li>
<li><strong>Personalizzata</strong> - questa opzione consente di selezionare quale componente installare.</li></ul>
<a name="wq15"></a>
<h3 id="wq15"><a href="#ToC_14">Installazione di Runtime Environment come
sistema Java Virtual Machine</a></h3>
<p>Se si installa Runtime Environment (sia come parte del pacchetto installabile SDK che dal pacchetto installabile Runtime Environment), viene richiesto se si desidera installare Runtime Environment come sistema JVM (Java
Virtual Machine). Se lo si installa come JVM di sistema, il programma
di installazione copia i file java.exe e javaw.exe nella directory
di sistema di Windows.
Se nella directory di sistema di Windows gi&agrave; esiste una
versione di java.exe o javaw.exe, viene richiesto di sostituire le versioni esistenti con
quella corrente. Se si installano questi file nella directory di
sistema di Windows, Runtime Environment diventa la JVM predefinita
per il sistema. Inoltre, la chiave di registro "Current Version" viene impostata per associare tale installazione. </p>
<a name="wq16"></a>
<div class="notetitle" id="wq16">Nota:</div>
<div class="notebody">Installare Runtime Environment mentre la JVM di sistema copia solo java.exe e javaw.exe nella directory di sistema di Windows. Non viene copiato nessun altro eseguibile (come ad esempio javac.exe o appletviewer.exe).</div>
<a name="wq17"></a>
<h2 id="wq17"><a href="#ToC_15">Installazione non presidiata</a></h2>
<p>Per creare un'installazione non presidiata, &egrave; necessario
completare un'istallazione presidiata, quindi creare
un file delle risposte (setup.iss) in cui vengono memorizzate le
scelte effettuate durante l'installazione. Il file delle risposte creato dovr&agrave; essere valido sulle
macchine che si desidera utilizzare. Se necessario, create vari file di risposta da utilizzare per installare i pacchetti su computer con differenti configurazioni.</p>
<p>Per creare un file di risposte durante l'installazione, in una
richiesta comandi, digitare:</p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /r</pre><p class="indatacontent">oppure</p>
<pre class="xmp">ibm-java2-jre-50-win-i386 /r</pre>
<p>A seconda del prodotto Windows, viene creato un file di risposte
(setup.iss) nella directory C:\Windows oppure in C:\Winnt dove C: &egrave; l'unit&agrave; di avviamento.</p>
<p>Durante un'installazione interattiva pu&ograve; essere visualizzato il seguente messaggio:</p>
<p></p>
<pre class="xmp">Un altro Java Runtime Environment &egrave; stato
installato come JVM. Selezionare S&igrave; per
sovrascrivere questa versione oppure No per uscire
dall'installazione.</pre>
<p>Se si verifica questo errore, selezionare <strong>No</strong> ed uscire
dall'installazione. Nella directory di sistema di Windows cancellare i seguenti due file:</p>
<ul>
<li>java.exe</li>
<li>javaw.exe</li></ul>
<p>Una volta cancellati i file, riavviare l'installazione interattiva utilizzando il comando riportato all'inizio
di questa sezione.</p>
<p>Nel sistema in cui verr&agrave; eseguita l'installazione non presidiata, copiare il file di risposte setup.iss nella directory C:\Windows. Dopo aver copiato il file, immettere quanto segue da una richiesta comandi:</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">Note:</div>
<ol type="1">
<li>Dopo <tt>/f1</tt> o <tt>/f2</tt> non vi sono spazi.</li>
<li>L'opzione <tt>/f1</tt> specifica il nome e l'ubicazione del file
delle risposte. Il segnalatore <tt>/f2</tt> specifica il nome e l'ubicazione del file di log.</li>
</ol>
<p>Se l'installazione viene completata con esito positivo, il file di registrazione conterr&agrave; la stringa <tt>ResultCode=0</tt>.</p>
<a name="wq20"></a>
<h2 id="wq20"><a href="#ToC_16">Abilitazione di IBM Accessibility Bridge</a></h2>
<p>IBM Accessibility Bridge, per impostazione predefinita, &egrave; installato ma non &egrave; abilitato. Per abilitare IBM Accessibility Bridge, eliminare il simbolo
numerico dall'inizio della riga di seguito riportata nel file
Accessibility.properties nella directory jre/lib:</p>
<p></p>
<pre class="xmp">#assistive_technologies=JawBridge</pre>
<p>Questo sito Web fornisce ulteriori informazioni sulle Accessibility Utilities:</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">Disabilitazione del supporto Java Accessibility</a></h2>
<p>&Egrave; possibile disabilitare del supporto Java Accessibility per aumentare le prestazioni di caricamento
JVM di applicazioni Java che non forniscono supporto alla tecnologia Java.</p>
<p>Per disabilitare il supporto Java Accessibility, impostare la variabile di ambiente
<strong>JAVA_ASSISTIVE</strong> su OFF. Una tecnologia di assistenza, quale JawBridge, non &egrave; disponibile se questa variabile d'ambiente &egrave; impostata su OFF, anche se la tecnologia &egrave; abilitata nel file Accessibility.properties.</p>
<a name="wq22"></a>
<h2 id="wq22"><a href="#ToC_18">Informazione per gli utenti di lingue europee</a></h2>
<p>In ambiente Windows, un processo ha due codepage: quella ANSI (oppure Windows) e quella OEM (oppure DOS).</p>
<p>La finestra comandi di solito utilizza la codepage OEM. L'output della console Java utilizza la codepage della finestra comandi da cui si avvia Java. Tuttavia, il comando <strong>javaw</strong> utilizza sempre la codepage ANSI. E' possibile specificare la codepage da utilizzare per l'output della console con l'opzione <strong>-D console.encoding</strong> del comando <strong>java</strong>.
Ad esempio, digitando <strong>-D console.encoding=Cp1252</strong> tutti gli output della console saranno nella codepage Windows
ANSI Latin1 (1252).</p>
<a name="pathcons"></a>
<h2 id="pathcons"><a href="#ToC_19">Impostazione di PATH</a></h2>
<p>Notare che, se si altera la variabile di ambiente PATH come descritto di seguito, verr&agrave; ricoperto qualunque
eseguibile Java esistente nel proprio percorso.</p>
<p>Dopo aver installato SDK, &egrave; possibile eseguire un tool immettendo il suo nome nel prompt della shell con un
nome file come argomento.</p>
<p>E' possibile specificare il percorso immettendolo ogni volta prima del nome del tool. Ad esempio, se &egrave; installato SDK per Windows in C:\Program Files\IBM\Java50\bin, si pu&ograve; compilae un file cui &egrave; stato assegnato il nome myfile.java
immettendo quanto segue ad una richiesta comandi:</p>
<pre class="xmp">  "C:\Program Files\IBM\Java50\bin\javac" myfile.java</pre>
<p>Per evitare di digitare ogni volta il percorso completo:</p>
<ol type="1">
<li>Aggiungere le seguenti directory alla variabile di ambiente <strong>PATH</strong>: 
<ul class="simple">
<li>C:\Program Files\IBM\Java50\bin (solo SDK)</li>
<li>C:\Program Files\IBM\Java50\jre\bin (SDK e Runtime Environment)</li></ul>
<p>Se si &egrave; installato SDK o Runtime Environment in una directory differente, sostituire C:\Program Files\IBM\Java50\ con la
directory in cui &egrave; stato installato il SDK o Runtime Environment</p>
<br /></li>
<li>Compilare il file con il tool <strong>javac</strong>. Ad esempio, per compilare il
file myfile.java, alla richiesta comandi command immettere: 
<pre class="xmp">  javac myfile.java</pre> 
<p>La variabile d'ambiente <strong>PATH</strong> abilita Windows a trovare i file eseguibili, come
javac, java e javadoc, dalla directory corrente. Per visualizzare il valore corrente del proprio
<strong>PATH</strong>, immettere quanto segue alla richiesta comandi:</p>
<pre class="xmp">  echo %PATH%</pre> </li></ol>
<a name="wq24"></a>
<h2 id="wq24"><a href="#ToC_20">Impostazione di CLASSPATH</a></h2>
<p><strong>CLASSPATH</strong> dice ai tool del SDK, come <strong>java</strong>, <strong>javac</strong> e <strong>javadoc</strong> dove trovare le librerie della classe Java.</p>
<p>E' necessario impostare esplicitamente <strong>CLASSPATH</strong> solo se si applica una delle seguenti possiilit&agrave;:</p>
<ul>
<li>Si richiede una libreria differente o un file di classe, come quello sviluppato, e che non si trova nella
directory corrente.
<br /></li>
<li>Si cambia l'ubicazione delle directory <strong>bin</strong> e <strong>lib</strong> in modo che non debbano avere pi&ugrave; la stessa directory principale in comune.
<br /></li>
<li>Si pianifica di sviluppare o di eseguire applicazioni che utilizzano differenti ambienti runtime
sullo stesso sistema.
<br /></li></ul>
<p>Per visualizzare il valore corrente del proprio <strong>CLASSPATH</strong>, immettere quanto segue alla richiesta
comandi:</p>
<pre class="xmp">  echo %CLASSPATH%</pre>
<p>Se si pianifica di sviluppare ed eseguire applicazioni che usano differenti ambienti runtime,
comprese altre versioni installate separatamente,
bisogna impostare esplicitamente <strong>CLASSPATH</strong> (e <strong>PATH</strong>) per ciascuna applicazione. Se si pianifica di eseguire applicazioni multiple
simultaneamente e si usano differenti ambienti runtime, ciascuna applicazione deve eseguire la sua propria
finestra comandi.</p>
<p>Se si vuole eseguire solo una versione di Java alla volta, &egrave; possibile usare lo script batch per passare tra i diversi ambienti runtime.</p>
<br />
<a name="wq25"></a>
<h2 id="wq25"><a href="#ToC_21">Disinstallazione</a></h2>
<p>Per disinstallare SDK, sia che sia stata eseguita l'installazione
presidiata che non presidiata, procedere come segue:</p>
<ol type="1">
<li>Fare doppio clic su <strong>Risorse del computer</strong> sul desktop di
Windows.</li>
<li>Fare doppio clic su <strong>Pannello di controllo</strong>.</li>
<li>Fare doppio clic su <strong>Installazione applicazioni</strong>.</li>
<li>Fare clic su <strong>IBM 32-bit SDK per Java 2 V5.0</strong> nell'elenco e poi fare clic su
<strong>Cambia/Elimina</strong>.</li>
<li>Fare clic su <strong>OK</strong>.</li></ol>
<p>Questa procedura rimuove tutti i pacchetti installati con l'Installer. <em>Non</em> elimina il pacchetto
delle API di Java Communications
(consultare <a href="http://www.javasoft.com/products/javacomm/">Java Communications API</a>) o eventuali file aggiuntivi che sono stati estratti
dai pacchetti in formato zip.</p>
<a name="wq27"></a>
<div class="notetitle" id="wq27">Nota:</div>
<div class="notebody">Potrebbero essere visualizzati dei messaggi di avvertenza che indicano che non tutti i file o le voci di
registro, o entrambi, sono stati rimossi. Questo &egrave; dovuto
al fatto che Windows ritiene che alcuni file siano ancora in uso;
questi file, queste voci di registro o entrambi verranno rimossi
durante il successivo riavvio.</div>
<p>Quando si gestiscono installazioni multiple tra IBM 32-bit SDK for Windows, v5.0, e le
versioni a livello V1.3.1 o precedenti, se si disinstalla la versione precedente mentre
&egrave; ancora installata una versione V5.0 il programma di disinstallazione di V1.3.1 rimuove le seguenti chiavi di registro e le sottochiavi richieste dalla versione V5.0,causando malfunzionamenti all'installazione di 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">Pertanto, reinstallare V5.0 dopo aver disisnstallato la versione V1.3.1.
Questa restrizione &egrave; stata corretta con la versione V1.4.0 e
con i rilasci successivi.</p>
<a name="invint"></a>
<h1 id="invint"><a href="#ToC_22">Utilizzo di Runtime Environment</a></h1>
<p>Lo strumento <strong>java</strong> avvia un'applicazione Java avviando Java Runtime Environment e caricando una classe specificata.</p>
<p>JVM ricerca la classe di avvio (e le altre classi utilizzate) in tre serie di ubicazioni: il percorso classe di  bootstrap, le estensioni installate e il percorso di classe utente. Gli argomenti specificati dopo il nome classe o il
nome file JAR vengono passati alla funzione principale.</p>
<p>Il comando <strong>javaw</strong> &egrave; identico a <strong>java</strong>, tranne <strong>javaw</strong> che non ha alcuna finestra di console
associata. Usare <strong>javaw</strong> quando non si desidera che venga visualizzata una finestra di richiesta comandi. Il programma di avvio <strong>javaw</strong> visualizza una casella di dialogo con le informazioni sugli errore nel caso in cui l'avvio abbia esito negativo. </p>
<p>I comandi <strong>java</strong> e <strong>javaw</strong> hanno la seguente sintassi:</p>
<pre class="xmp">java [ opzioni ] <em>classe</em> [ argomenti ... ]
java [ opzioni ] -jar <em>file.jar</em> [ argomenti ... ]
javaw [ opzioni ] <em>classe</em> [ argomenti ... ]
javaw [ opzioni ] -jar <em>file.jar</em> [ argomenti ... ]
</pre><p class="indatacontent">Le voci tra parentesi sono facoltative.</p>
<p></p>
<dl class="parml">
<dt class="bold">opzioni</dt>
<dd>Opzioni della riga comandi.
</dd>
<dt class="bold">classe</dt>
<dd>Il nome della classe da richiamare.
</dd>
<dt class="bold">file.jar</dt>
<dd>Il nome del file jar da richiamare. Utilizzato solo con <strong>-jar</strong>.
</dd>
<dt class="bold">argomenti</dt>
<dd>Argomenti passati alla funzione <strong>principale</strong>.
</dd>
</dl>
<p>Se si specifica l'opzione <strong>-jar</strong>, il file JAR denominato contiene i file di risorsa e classe per l'applicazione, insieme alla classe di startup specificata nell'intestazione manifest Main-Class.  </p>
<a name="wq28"></a>
<h2 id="wq28"><a href="#ToC_23">Opzioni</a></h2>
<p>Il programma di avvio ha una serie di opzioni standard supportate
nell'ambiente di runtime corrente e che saranno supportate dai release
successivi. Vi sono inoltre, una serie di opzioni non standard. Le opzioni predefinite sono state scelte per garantire le prestazioni migliori per gli utilizzi pi&ugrave; comuni. Ponderare attentamente eventuali modifiche.</p>
<a name="wq29"></a>
<h3 id="wq29"><a href="#ToC_24">Specifica di opzioni Java e propriet&agrave; del sistema</a></h3>
<p>&Egrave; possibile specificare le opzioni Java e le propriet&agrave; di sistema in tre modi diversi.
In ordine di precedenza, tali modi sono:</p>
<ol type="1">
<li>Specificare l'opzione o la propriet&agrave; sulla riga comandi, ad esempio <tt class="xph">java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump MyJavaClass</tt>.</li>
<li>Creare un file che contiene le opzioni e specificarlo sulla riga comandi utilizzando <strong>-Xoptionsfile=<em>&lt;nomefile></em></strong>.</li>
<li>Creare una variabile d'ambiente denominata <strong>IBM_JAVA_OPTIONS</strong> contenente le opzioni, ad esempio <tt class="xph">set IBM_JAVA_OPTIONS=&quot;-Dmysysprop1=tcpip -Dmysysprop2=wait
-Xdisablejavadump&quot;</tt>.</li></ol>
<p>Le opzioni pi&ugrave; a destra sulla riga comandi hanno la precedenza su quelle pi&ugrave; a sinistra; ad esempio se si specifica <tt class="xph">-Xint -Xjit myClass</tt>, <strong>-Xjit</strong> ha la precedenza.</p>
<a name="wq31"></a>
<h3 id="wq31"><a href="#ToC_25">Opzioni standard</a></h3>
<ul class="simple">
<li>
<span class="term"><strong>-D</strong>&lt;<em>nome_propriet&agrave;</em>>=&lt;<em>valore</em>></span>
<ul class="simple">
<li>Imposta una propriet&agrave; di sistema. </li></ul></li>
<li><strong>-assert</strong>
<ul class="simple">
<li>Visualizza l'aiuto sulle opzioni correlate all'asserzione.</li></ul></li>
<li><strong>-cp</strong> o <strong>-classpath</strong> &lt;<em>directory e file zip o jar separati da ;></em>
<ul class="simple">
<li>Imposta il percorso di ricerca per risorse e classi dell'applicazione. Se non vengono utilizzate <strong>-classpath</strong> e <strong>-cp </strong> e non si imposta <strong>CLASSPATH</strong> il classpath utente &egrave; predefinito sulla directory corrente (.).</li></ul></li>
<li><strong>-help</strong> o <strong>-?</strong>
<ul class="simple">
<li>Visualizza le informazioni relative all'utilizzo.</li></ul></li>
<li><strong>-showversion</strong>
<ul class="simple">
<li>Visualizza la versione del prodotto e continua.</li></ul></li>
<li><strong>-verbose</strong>:[<em>classe</em>,<em>gcterse</em>,<em>gc</em>,<em>dynload</em>,<em>stackwalk</em>,<em>dimensioni</em>,<em>stack</em>,<em>debug</em>,<em>jni</em>]
<ul class="simple">
<li>Abilita l'output dettagliato.</li></ul></li>
<li><strong>-version</strong>
<ul class="simple">
<li>Visualizza la versione del prodotto.</li></ul></li>
<li><strong>-version:</strong><em>&lt;valore></em>
<ul class="simple">
<li>Richiede l'esecuzione della versione specificata.</li></ul></li>
<li><strong>-jre-restrict-search</strong>
<ul class="simple">
<li>Include i JRE provati dell'utente nella ricerca della versione</li></ul></li>
<li><strong>-no-jre-restrict-search</strong>
<ul class="simple">
<li>Esclude i JRE provati dell'utente dalla ricerca della versione</li></ul></li>
<li><strong>-agentlib:</strong>&lt;<em>nomelib</em>>[=&lt;<em>opzioni</em>>]
<ul class="simple">
<li>load native agent library &lt;nomelib>, ad esempio <strong>-agentlib:hprof</strong>.  Per ulteriori informazioni, specificare <strong>-agentlib:jdwp=help</strong> e <strong>-agentlib:hprof=help</strong> sulla riga comandi.</li></ul></li>
<li><strong>-agentpath:</strong><em>nomelib</em>[=&lt;<em>opzioni</em>>]
<ul class="simple">
<li>Caricare la libreria dell'agente nativo per nome percorso completo</li></ul></li>
<li><strong>-javaagent:</strong>&lt;<em>percorsojar</em>>[=&lt;<em>opzioni</em>>]
<ul class="simple">
<li>Caricare l'agente di programmazione Java; per ulteriori informazioni, consultare la documentazione dell'API java.lang.instrument.</li></ul></li>
<li><strong>-X</strong>
<ul class="simple">
<li>Visualizza le istruzioni relative alle opzioni non standard.</li></ul></li></ul>
<a name="xoptions"></a>
<h3 id="xoptions"><a href="#ToC_26">Opzioni non standard </a></h3>
<p>Le opzioni <strong>-X</strong> sotto elencate sono non standard e soggette a modifica senza preavviso. </p>
<p>Per opzioni che assumono il parametro <em>&lt;dimensione></em>, occorre aggiungere come suffisso il numero
"k" o "K" per indicare i kilobyte, "m" o "M" per indicare i megabyte e "g" o "G" per indicare i gigabyte.</p>
<ul class="simple">
<li><strong>-Xargencoding</strong>
<ul class="simple">
<li>Consente di inserire le sequenze escape Unicode nell'elenco di argomenti. Questa opzione &egrave; impostata sull'impostazione predefinita off.</li></ul></li>
<li><strong>-Xbootclasspath:</strong>&lt;<em>directory e file zip o jar separati da ;</em>>
<ul class="simple">
<li>Imposta il percorso di ricerca per le risorse e le classi bootstrap. L'impostazione predefinita &egrave; di effettuare la ricerca delle classi di bootstrap e delle risorse all'interno degli indirizzari VM interni e dei file .jar.</li></ul></li>
<li><strong>-Xbootclasspath/a:</strong>&lt;<em>directory e file zip o jar separati da ;</em>>
<ul class="simple">
<li>Accoda le directory specificate, i file jar o zip alla fine del percorso di classe di bootstrap. L'impostazione predefinita &egrave; di effettuare la ricerca delle classi di bootstrap e delle risorse all'interno degli indirizzari VM interni e dei file .jar.</li></ul></li>
<li><strong>-Xbootclasspath/p:</strong>&lt;<em>directory e file zip o jar separati da ;</em>>
<ul class="simple">
<li>Inserisce le directory specificate, i file jar o zip all'inizio del percorso di classe di bootstrap. Non distribuire le applicazioni che utilizzano l'opzione <strong>-Xbootclasspath:</strong> o <strong>-Xbootclasspath/p:</strong> per sovrascrivere una
classe nell'API standard, perch&eacute; tale distribuzione contravverrebbe alla licenza sul codice binario di Java 2 Runtime Environment. L'impostazione predefinita &egrave; di effettuare la ricerca delle classi di bootstrap e delle risorse all'interno degli indirizzari VM interni e dei file .jar.</li></ul></li>
<li id="xcheckjni">
<a name="xcheckjni"></a><strong>-Xcheck:jni</strong>
<ul class="simple">
<li>Esegue un'ulteriore verifica per le funzioni JNI. E' possibile utilizzare anche <a href="#xrunjnichk"><strong>-Xrunjnichk</strong>.</a> Per impostazione predefinita,
non viene effettuata alcuna verifica.</li></ul></li>
<li><strong>-Xcheck:nabounds</strong>
<ul class="simple">
<li>Esegue un'ulteriore verifica per le operazioni di matrice JNI.  E' possibile utilizzare anche <a href="#xrunjnichk"><strong>-Xrunjnichk</strong>.</a> Per impostazione predefinita,
non viene effettuata alcuna verifica.</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>Questa opzione abilita la raccolta di oggetti classe ad ogni raccolta di dati obsoleti.
<span id="changed">|</span>Per impostazione predefinita, tale opzione &egrave; abilitata.</li></ul></font></li>
<li id="compactexplicitgc">
<a name="compactexplicitgc"></a><strong>-Xcompactexplicitgc</strong>
<ul class="simple">
<li>Eseguire la compattazione in ciascuna chiamata a <tt class="xph">System.gc ().</tt> Consultare anche <a href="#nocompactexplicitgc"><strong>-Xnocompactexplicitgc</strong></a>. Per impostazione predefinita,
la compressione avviene solo quando viene attivata internamente.</li></ul></li>
<li id="compactgc">
<a name="compactgc"></a><strong>-Xcompactgc</strong>
<ul class="simple">
<li>Compattare ciascun ciclo del Raccoglitore di Dati obsoleti. Consultare anche <a href="#nocompactgc"><strong>-Xnocompactgc</strong></a>. Per impostazione predefinita,
la compressione avviene solo quando viene attivata internamente.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentbackground</strong> <em>&lt;numero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Questa opzione specifica il numero di thread in secondo piano a bassa priorit&agrave; allegati per assistere i thread mutator nel contrassegno simultaneo.  L'impostazione predefinita &egrave; 1.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentlevel</strong> <em>&lt;numero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Questa opzione specifica una velocit&agrave; "tax" di allocazione.  Indica il rapporto tra la quantit&agrave; di heap allocati e la quantit&agrave; di heap contrassegnati.  L'impostazione predefinita &egrave; 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>Questa opzione determina quale utilizzo dell'area, LOA o SOA, viene misurata e pertanto quali allocazioni vengono tassate durante il contrassegno simultaneo. Utilizzando <strong>-Xconmeter:soa</strong> viene applicata una tassa di allocazione alle allocazioni provenienti da una SOA (small object area),
<span id="changed">|</span>utilizzando <strong>-Xconmeter:loa</strong> viene applicata la tassa di allocazione ad allocazioni provenienti da una LOA (large object area). Se viene specificato <strong>-Xconmeter:dynamic </strong>, il	programma di raccolta determina in modo dinamico quale area misurare sulla base di quale area si &egrave; esaurita prima, se sia SOA o LOA. Per impostazione predefinita, l'opzione &egrave; impostata su <strong>-Xconmeter:soa</strong>.</li></ul></font></li>
<li id="xdbg">
<a name="xdbg"></a><strong>-Xdbg:</strong>&lt;<em>opzioni</em>>
<ul class="simple">
<li>Carica le librerie di debug per il supporto del debug remoto delle
applicazioni.
&Egrave; uguale a <a href="#runjdwp"><strong>-Xrunjdwp</strong></a>.
Per impostazione predefinita, le librerie di debug non vengono caricate e l'istanza VM non viene abilitata al debug.</li></ul></li>
<li><strong>-Xdbginfo:</strong>&lt;<em>percorso per il file simboli</em>>
<ul class="simple">
<li>Carica e passa opzioni al server di informazioni di debug. Per impostazione predefinita, il server delle informazioni di debug viene disabilitato.</li></ul></li>
<li><strong>-Xdebug</strong>
<ul class="simple">
<li>Avvia JVM con il debugger abilitato. Per impostazione predefinita, il programma di debug viene disabilitato.</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>Questa opzione disabilita l'attivazione di un'eccezione OutOfMemory se viene impiegato un Qutime eccessivo nel GC. Per impostazione predefinita questa opzione &egrave; off.</li></ul></font></li>
<li><strong>-Xdisableexplicitgc</strong>
<ul class="simple">
<li>I segnali al VM che chiama <tt class="xph">System.gc()</tt> non devono avere effetto. Per impostazione predefinita, chiamate a <tt class="xph">System.gc()</tt> attivano una raccolta di dati obsoleti.</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>Questa opzione impedisce alle stringhe di essere raccolte nella tabella interna delle stringhe.
<span id="changed">|</span>Per impostazione predefinita, tale opzione &egrave; disabilitata.</li></ul></font></li>
<li><strong>-Xdisablejavadump</strong>
<ul class="simple">
<li>Disattiva la generazione javadump in caso di errori e segnali. Per impostazione predefinita, la generazione di javadump &egrave; disabilitata.</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 viene impiegato un tempo eccessivo in GC, questa opzione restituisce NULL per una richiesta di allocazione e pertanto provoca l'attivazione di un'eccezione OutOfMemory.  Questa azione si verifica solo quando l'heap &egrave; stato espanso completamento e il tempo impiegato &egrave; di almeno il 95%. Questo &egrave; il comportamento predefinito.</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>Questa opzione abilita la raccolta delle stringhe nella tabella interna delle stringhe.
<span id="changed">|</span>Per impostazione predefinita, tale opzione &egrave; abilitata.</li></ul></font></li>
<li><strong>-Xfuture</strong>
<ul class="simple">
<li>Attiva i controlli del formato classe file severi. Utilizzare questo segnalatore durante lo sviluppo del nuovo codice, poich&eacute; i controlli severi diventeranno predefiniti nei rilasci successivi.
Per impostazione predefinita, i controlli severi del formato vengono disabilitati.</li></ul></li>
<li><strong>-Xgcpolicy:[optthruput]|[optavgpause]|[gencon]</strong>
<ul class="simple">
<li>Controlli del comportamento del Raccoglitore di Dati obsoleti. L'opzione <em>optthruput</em> &egrave; il valore predefinito e consente una capacit&agrave; di elaborazione elevata alle applicazioni, ma comporta pause occasionali. L'opzione <em>optavgpause</em> riduce il tempo impiegato per queste pause di raccolta dati obsoleti e limita l'effetto dell'incremento della memoria riservata nella lunghezza della pausa della raccolta dei dati obsoleti. Utilizzare <em>optavgpause</em> se la configurazione ha una memoria riservata molto grande. L'opzione <em>gencon</em> richiede l'uso combinato della raccolta dati simultanea e generazionale per ridurre il tempo impiegato nella pausa della raccolta dei dati obsoleti.  Per ulteriori informazioni, fare riferimento a <a href="#garbage">Specifica della politica di raccolta dei dati obsoleti</a>.</li></ul></li>
<li><strong>-Xgcthreads</strong>&lt;<em> numero di thread</em>>
<ul class="simple">
<li>Imposta il numero di thread dell'helper utilizzati per le operazioni parallele durante la raccolta di dati obsoleti. Per impostazione predefinita, il numero di thread viene impostato sul numero di CPU fisiche esistenti -1, con un minimo di 1.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xgcworkpackets</strong> <em>&lt;numero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Questa opzione specifica il numero totale di pacchetti di lavoro disponibili nella raccolta globale. Se non specificata, il programma di raccolta alloca il numero di pacchetti basato sulla dimensione massima di heap.</li></ul></font></li>
<li><strong>-Xint</strong>
<ul class="simple">
<li>Fa in modo che JVM utilizzi solo Interpreter, disabilitando il compilatore Just-In-Time (JIT). Per impostazione predefinita, l compilatore JIT &egrave; abilitato.</li></ul></li>
<li><strong>-Xiss</strong><em>&lt;dimensione></em>
<ul class="simple">
<li>Imposta la dimensione di stack dei thread Java iniziale. Per impostazione predefinita, 2 kilobyte.</li></ul></li>
<li id="xjit">
<a name="xjit"></a><strong>-Xjit</strong>[:&lt;<em>opzione secondaria</em>>,&lt;<em>opzione secondaria</em>>,...]
<ul class="simple">
<li>Abilita JIT. Per ulteriori informazioni, consultare il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>. Consultare anche <a href="#xnojit"><strong>-Xnojit</strong></a>. Per impostazione predefinita, JIT &egrave; abilitato.</li></ul></li>
<li id="xlinenumbers">
<a name="xlinenumbers"></a><strong>-Xlinenumbers</strong>
<ul class="simple">
<li>Visualizza i numeri della riga nelle tracce di stack, per effettuare il debug. Consultare anche <a href="#xnolinenumbers"><strong>-Xnolinenumbers</strong></a>. Per impostazione predefinita, i numeri della riga sono impostati su on.</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>Questa opzione alloca una LOA (Large Object Area). Gli oggetti saranno allocati in questa LOA anzich&eacute; nella SOA. Per impostazione predefinita,
<span id="changed">|</span>la LOA &egrave; abilitata per tutte le normative GC eccetto per il lotto secondario, in cui la LOA non &egrave; disponibile. Vedere anche <a href="#noloa"><strong>-Xnoloa</strong></a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloainitial</strong> <em>&lt;numero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;numero> &egrave; un numero compreso tra 0 e 0,95, che specifica la percentuale iniziale dello spazio di possesso attuale allocato su una LOA (large
<span id="changed">|</span>object area). Il valore predefinito &egrave; 0,05 o 5%. </li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloamaximum</strong> <em>&lt;numero></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;numero> &egrave; un numero compreso tra 0 e 0,95, che specifica la percentuale massima dello spazio di possesso attuale allocato su una LOA (large
<span id="changed">|</span>object area). Il valore predefinito &egrave; 0,5 o 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>Richiede alla JVM di allocare l'heap di Java con pagine grandi. Se le pagine grandi non sono disponibili, JVM non verr&agrave; avviato, visualizzando un messaggio di errore simile al seguente: <tt class="xph">GC: la configurazione di sistema non supporta l'opzione --> '-Xlp'</tt>. Le pagine grandi sono supportate da sistemi che eseguono Windows 2003, in cui il sistema operativo &egrave; stato impostato per l'uso di pagine grandi. Per impostazione predefinita, le pagine grandi non vengono utilizzate.
<span id="changed">|</span>Consultare <a href="#alloc_large_page">Configurazione dell'allocazione di memoria di pagine grandi</a>.</li></ul></font></li>
<li><strong>-Xmaxe</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la quantit&agrave; massima su cui il programma di raccolta dei dati obsoleti espander&agrave; la memoria riservata.
Di solito, il programma di raccolta dei dati obsoleti espande la memoria riservata quando lo spazio libero ha una quantit&agrave; compresa tra il 30% (o la quantit&agrave; specificata utilizzando <strong>-Xminf</strong>), in base alla quantit&agrave; richiesta per ripristinare lo spazio libero al 30%. L'opzione <strong>-Xmaxe</strong> limita l'espansione al valore specificato, ad esempio <tt class="xph">-Xmaxe10M</tt> limita l'espansione a 10 MB. Per impostazione predefinita,
non esiste alcuna dimensione di espansione massima.</li></ul></li>
<li><strong>-Xmaxf</strong>&lt;<em>dimensione </em>>
<ul class="simple">
<li>Specifica la percentuale massima di memoria riservata che deve essere libera in seguito ad una raccolta di dati obsoleti.  Se lo spazio libero supera tale quantit&agrave;, JVM tenta di restringere la memoria limitata. Specificare la dimensione come valore decimale, con un intervallo 0-1, ad esempio <tt class="xph">-Xmaxf0.5</tt> imposta lo spazio libero massimo sul 50%. Il valore predefinito &egrave; 0,6
(60%).</li></ul></li>
<li><strong>-Xmca</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta il passo di espansione per la memoria allocata per memorizzare la parte RAM delle classi caricate. Ogni volta che viene richiesta pi&ugrave; memoria per memorizzare le classi nella RAM, la memoria allocata viene aumentata da questa quantit&agrave;. Per impostazione predefinita, il passo di espansione &egrave; di 32 Kb.</li></ul></li>
<li><strong>-Xmco</strong>&lt;<em>dimensione </em>>
<ul class="simple">
<li>Imposta il passo di espansione per la memoria allocata per memorizzare la parte ROM delle classi caricate. Ogni volta che viene richiesta pi&ugrave; memoria per memorizzare le classi nella ROM, la memoria allocata viene aumentata da questa quantit&agrave;. Per impostazione predefinita, il passo di espansione &egrave; di 128 Kb.</li></ul></li>
<li><strong>-Xmine</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la quantit&agrave; minima per cui il programma di raccolta dei dati obsoleti espander&agrave; la memoria riservata.
Di solito, il programma di raccolta dati obsoleti, espande la memoria riservata in base alla quantit&agrave; richiesta per ripristinare lo spazio libero al 30% (o la quantit&agrave; specificata utilizzando <strong>-Xminf</strong>). L'opzione <strong>-Xmine</strong> imposta l'espansione per essere almeno uguale al valore specificato, ad esempio <tt class="xph">-Xmine50M</tt> imposta la dimensione di espansione su un minimo di 50MB. Per impostazione predefinita, il passo di espansione &egrave; di 1 Mb.</li></ul></li>
<li><strong>-Xminf</strong>&lt;<em>dimensione </em>>
<ul class="simple">
<li>Specifica la percentuale minima di memoria riservata che deve essere libera in seguito ad una raccolta di dati obsoleti.  Se lo spazio libero non raggiunge tale quantit&agrave;, JVM tenta di espandere la memoria limitata. Specificare la dimensione come valore decimale compreso nell'intervallo 0-1, ad esempio un valore <tt class="xph">-Xminf0.3</tt> richiede
che lo spazio libero minimo sia il 30% della memoria riservata. Per impostazione predefinita, il valore minimo &egrave; di 0,3.</li></ul></li>
<li><strong>-Xmn</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione iniziale e massima del nuovo heap (asilo) sul valore specificato quando si utilizza
<strong>-Xgcpolicy:gencon</strong>. E' equivalente all'impostazione
sia di <strong>-Xmns</strong> che di <strong>-Xmnx</strong>.  <span><font color="red"><span id="changed">|</span>Se si imposta <strong>-Xmns</strong> oppure <strong>-Xmnx</strong>, non &egrave; possibile impostare <strong>-Xmn</strong>. Se si cerca di impostare
<span id="changed">|</span><strong>-Xmn</strong> con <strong>-Xmns</strong> oppure con <strong>-Xmnx</strong>, VM non verr&agrave; avviato e restituir&agrave; un errore.</font></span> Per impostazione predefinita,
<strong>-Xmn</strong> viene selezionato internamente in base alle caratteristiche del sistema. &Egrave; possibile utilizzare l'opzione <strong>-verbose:sizes</strong> per individuare i valori utilizzati attualmente da VM.</li></ul></li>
<li><strong>-Xmns</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione iniziale del nuovo heap (asilo) sul valore specificato quando si utilizza
<strong>-Xgcpolicy:gencon</strong>. Per impostazione predefinita, questa opzione
viene selezionata internamente in base alle caratteristiche del sistema. <span><font color="red"><span id="changed">|</span>Questa opzione restituir&agrave; un errore se di cerca di utilizzarla con <strong>-Xmn</strong>.</font></span></li></ul></li>
<li><strong>-Xmnx</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione massima del nuovo heap (asilo) sul valore specificato quando si utilizza
<strong>-Xgcpolicy:gencon</strong>. Per impostazione predefinita, questa opzione
viene selezionata internamente in base alle caratteristiche del sistema. <span><font color="red"><span id="changed">|</span>Questa opzione restituir&agrave; un errore se di cerca di utilizzarla con <strong>-Xmn</strong>.</font></span></li></ul></li>
<li id="xmo">
<a name="xmo"></a><strong>-Xmo</strong>&lt;<em>dimensione </em>>
<ul class="simple">
<li>Imposta la dimensione iniziale e massima dell'heap precedente (di possesso) sul valore specificato quando si utilizza
<strong>-Xgcpolicy:gencon</strong>. E' equivalente all'impostazione
sia di <strong>-Xmos</strong> che di <strong>-Xmox</strong>. <span><font color="red"><span id="changed">|</span>Se si imposta <strong>-Xmos</strong> oppure <strong>-Xmox</strong>, non &egrave; possibile impostare <strong>-Xmo</strong>. Se si cerca di impostare
<span id="changed">|</span><strong>-Xmo</strong> con <strong>-Xmos</strong> oppure con <strong>-Xmox</strong>, VM non verr&agrave; avviato e restituir&agrave; un errore.</font></span> Per impostazione predefinita,
<strong>-Xmo</strong> viene selezionato internamente in base alle caratteristiche del sistema. &Egrave; possibile utilizzare l'opzione <strong>-verbose:sizes</strong> per individuare i valori utilizzati attualmente da VM.</li></ul></li>
<li><strong>-Xmos</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione iniziale dell'heap precedente (possesso) sul valore specificato quando si utilizza
<strong>-Xgcpolicy:gencon</strong>. Per impostazione predefinita, questa opzione
viene selezionata internamente in base alle caratteristiche del sistema. <span><font color="red"><span id="changed">|</span>Questa opzione restituir&agrave; un errore se di cerca di utilizzarla con <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmox</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione massima dell'heap precedente (possesso) sul valore specificato quando si utilizza
<strong>-Xgcpolicy:gencon</strong>. Per impostazione predefinita, questa opzione
viene selezionata internamente in base alle caratteristiche del sistema. <span><font color="red"><span id="changed">|</span>Questa opzione restituir&agrave; un errore se di cerca di utilizzarla con <strong>-Xmo</strong>.</font></span></li></ul></li>
<li><strong>-Xmoi</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la quantit&agrave; di heap Java incrementata quando si utilizza <strong>-Xgcpolicy:gencon</strong>. Se &egrave; impostata su zero, non viene consentita alcuna espansione. Per impostazione predefinita, la dimensione di incremento viene calcolata sulla dimensione di espansione
<strong>-Xmine</strong> e <strong>-Xminf</strong>.</li></ul></li>
<li><strong>-Xmr</strong>&lt;<em>dimensione </em>>
<ul class="simple">
<li>Imposta la dimensione dell'"impostazione ricordata" della raccolta dati inutili quando si utilizza <strong>-Xgcpolicy:gencon</strong>. Questo &egrave; un elenco di oggetti della vecchia memoria riservata (posseduta) che si riferiscono ad oggetti nella nuova memoria riservata (asilo).
Per impostazione predefinita, questa opzione viene impostata a 16 kilobyte.</li></ul></li>
<li id="xms">
<a name="xms"></a><strong>-Xms</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione della memoria riservata Java iniziale.  &Egrave; possibile anche utilizzare <a href="#xmo"><strong>-Xmo</strong></a>. Il valore predefinito viene impostato internamente in base alle caratteristiche del sistema. </li></ul></li>
<li><strong>-Xmso</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione dello stack C dei thread duplicati. Per impostazione predefinita, questa opzione viene impostata a 32 kilobyte su piattaforme a 32 bit e 256 kilobyte per piattaforme a 64 bit.</li></ul></li>
<li><strong>-Xmx</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione massima di memoria riservata Java.  Per impostazione predefinita, questa opzione viene impostata internamente in base alle caratteristiche del sistema. </li></ul></li>
<li id="noclassgc">
<a name="noclassgc"></a><strong>-Xnoclassgc</strong>
<ul class="simple">
<li>Disabilita la raccolta disordinata di classi. Disattiva la raccolta dei dati obsoleti della memoria associata alle classi Java che non sono pi&ugrave; utilizzate da JVM. La funzionalit&agrave; predefinita &egrave; <strong>-Xclassgc</strong>.</li></ul></li>
<li id="nocompactgc">
<a name="nocompactgc"></a><strong>-Xnocompactgc</strong>
<ul class="simple">
<li>Disabilita il compattamento per il Raccoglitore di dati obsoleti. Consultare anche <a href="#compactgc"><strong>-Xcompactgc</strong></a>. Per impostazione predefinita, la compressione &egrave; abilitata.</li></ul></li>
<li id="nocompactexplicitgc">
<a name="nocompactexplicitgc"></a><strong>-Xnocompactexplicitgc </strong>
<ul class="simple">
<li>Disabilita la compattazione su una chiamata a <tt class="xph">System.gc()</tt>. Consultare anche <a href="#compactexplicitgc"><strong>-Xcompactexplicitgc</strong></a>. Per impostazione predefinita, la compressione &egrave; abilitata sulle chiamate a <tt class="xph">System.gc()</tt>.</li></ul></li>
<li id="xnojit">
<a name="xnojit"></a><strong>-Xnojit</strong>
<ul class="simple">
<li>Disabilita il compilatore JIT. Consultare anche <a href="#xjit"><strong>-Xjit</strong></a>. Per impostazione predefinita, l compilatore JIT &egrave; abilitato.</li></ul></li>
<li id="xnolinenumbers">
<a name="xnolinenumbers"></a><strong>-Xnolinenumbers</strong>
<ul class="simple">
<li>Disabilita i numeri di riga per il debug. Consultare anche <a href="#xlinenumbers"><strong>-Xlinenumbers</strong></a>. Per impostazione predefinita, i numeri della riga sono impostati su on.</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>Questa opzione impedisce l'allocazione di una LOA (Large Object Area). Tutti gli oggetti saranno allocati nella SOA. Per impostazione predefinita,
<span id="changed">|</span>la LOA &egrave; abilitata per tutte le normative GC eccetto per il lotto secondario, in cui la LOA non &egrave; disponibile. Vedere anche <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>Disabilita la compressione incrementale. Consultare anche <a href="#partialcompactgc"><strong>-Xpartialcompactgc</strong></a>. Per impostazione predefinita, questa opzione non viene impostata, pertanto tutte e
compressioni sono piene.</li></ul></li>
<li id="nosigcatch">
<a name="nosigcatch"></a><strong>-Xnosigcatch</strong>
<ul class="simple">
<li>Disabilita il codice di gestione del segnale JVM. Consultare anche <a href="#sigcatch"><strong>-Xsigcatch</strong></a>. Per impostazione predefinita, la gestione del segnale &egrave; abilitata.</li></ul></li>
<li id="nosigchain">
<a name="nosigchain"></a><strong>-Xnosigchain</strong>
<ul class="simple">
<li>Disabilita il concatenamento della gestione del segnale. Consultare anche <a href="#sigchain"><strong>-Xsigchain</strong></a>. Per impostazione predefinita, il concatenamento della gestione del segnale &egrave; abilitato.</li></ul></li>
<li><strong>-Xoptionsfile</strong>=&lt;<em>file</em>>
<ul class="simple">
<li>Specifica un file che contiene le opzioni JVM e esegue la definizione. Per impostazione predefinita,
non viene utilizzato alcun file di opzioni.</li></ul></li>
<li><strong>-Xoss</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione di stack Java e la dimensione di stack C per tutti i thread.
Questa opzione &egrave; fornita per motivi di compatibilit&agrave; ed &egrave; equivalente ad impostare sia <strong>-Xss</strong> che <strong>-Xmso</strong> sul valore specificato.</li></ul></li>
<li id="partialcompactgc">
<a name="partialcompactgc"></a><strong>-Xpartialcompactgc</strong>
<ul class="simple">
<li>Abilita la compressione parziale. Consultare anche <a href="#nopartialcompactgc"><strong>-Xnopartialcompactgc</strong></a>.</li></ul></li>
<li><strong>-Xquickstart</strong>
<ul class="simple">
<li>Migliora il tempo di avvio ritardando la compilazione JIT e le ottimizzazioni. Per impostazione predefinita, viene disabilitato quickstart e non vi &egrave; alcun ritardo nella compilazione JIT.</li></ul></li>
<li><strong>-Xrdbginfo:</strong><em>&lt;host></em>:<em>&lt;porta></em>
<ul class="simple">
<li>Carica e passa le opzioni al server di informazioni di debug remoto. Per impostazione predefinita, il server delle informazioni di debug remoto viene disabilitato.</li></ul></li>
<li><strong>-Xrs</strong>
<ul class="simple">
<li>Riduce l'utilizzo dei segnali del sistema operativo. Per impostazione predefinita, VM utilizza completamente i segnali del sistema operativo; per informazioni consultare <a href="#sighand">Segnali usati da JVM </a>.</li></ul></li>
<li><strong>-Xrun</strong><em>&lt;nome libreria</em>[:options]
<ul class="simple">
<li>Carica le librerie dell'helper. Per caricare pi&ugrave; librerie,
specificarle pi&ugrave; volte nella riga comandi. Alcuni esempi di libreria sono:
<ul>
<li><strong>-Xrunhprof</strong>[:help] | [:&lt;<em>opzione</em>>=&lt;<em>valore</em>>, ...]
<ul class="simple">
<li>Esegue heap, CPU, profili di controllo. Per ulteriori informazioni, consultare il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul></li>
<li id="runjdwp">
<a name="runjdwp"></a><strong>-Xrunjdwp</strong>[:help] | [:&lt;<em>opzione</em>>=&lt;<em>valore</em>>, ...]
<ul class="simple">
<li>Carica le librerie di debug per il supporto del debug remoto delle
applicazioni.
&Egrave; uguale a <a href="#xdbg"><strong>-Xdbg</strong></a>. Per ulteriori informazioni, fare riferimento a <a href="#debugger">Esecuzione del debug nelle applicazioni Java</a>.</li></ul></li>
<li><a name="xrunjnichk"></a><strong id="xrunjnichk">-Xrunjnichk</strong>[:help] | [:&lt;<em>opzione</em>>=&lt;<em>valore</em>>, ...]
<ul class="simple">
<li>Effettua verifiche aggiuntive per le funzioni JNI, per effettuare la traccia degli errori in programmi nativi che accedono a JVM utilizzando JNI. Per ulteriori informazioni, consultare il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul></li></ul></li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xscmx</strong>&lt;<em>dimensione</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Per informazioni dettagliate su <strong>-Xscmx</strong>, consultare <a href="#sharedclassesxoptions">Utilizzo di opzioni della riga comandi per la condivisione di classi</a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xshareclasses:</strong>&lt;<em>opzioni secondarie</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Per informazioni dettagliate sulle opzioni secondarie <strong>-Xshareclasses</strong>, consultare <a href="#sharedclassesxoptions">Utilizzo di opzioni della riga comandi per la condivisione di classi</a>.</li></ul></font></li>
<li id="sigcatch">
<a name="sigcatch"></a><strong>-Xsigcatch</strong>
<ul class="simple">
<li>Abilita il codice di gestione del segnale VM. Consultare anche <a href="#nosigcatch"><strong>-Xnosigcatch</strong></a>. Per impostazione predefinita, la gestione del segnale &egrave; abilitata.</li></ul></li>
<li id="sigchain">
<a name="sigchain"></a><strong>-Xsigchain</strong>
<ul class="simple">
<li>Abilita il concatenamento della gestione del segnale. Consultare anche <a href="#nosigchain"><strong>-Xnosigchain</strong></a>. Per impostazione predefinita, il concatenamento della gestione del segnale &egrave; abilitato.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xsoftrefthreshold</strong>&lt;<em>numero</em>> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Questa opzione imposta il numero di GC dopo i quali un riferimento soft verr&agrave; eliminato se il relativo referente non &egrave; stato contrassegnato.  Il valore predefinito &egrave; 3, cio&egrave;, al terzo GC in cui non viene contrassegnato il referente, il riferimento soft verr&agrave; eliminato.</li></ul></font></li>
<li><strong>-Xss</strong>&lt;<em>dimensione</em>>
<ul class="simple">
<li>Imposta la dimensione di stack Java massima per tutti i thread.Per impostazione predefinita,  questa opzione &egrave; impostata su 256 KB.</li></ul></li>
<li><strong>-Xthr:</strong>&lt;<em>opzioni</em>>
<ul class="simple">
<li>Imposta le opzioni di thread.</li></ul></li>
<li><strong>-Xverbosegclog</strong>:&lt;<em>percorso per il file</em>>&lt;<em>nomefile</em>>[X, Y]
<ul class="simple">
<li>Comporta che l'output verboseGC venga scritto nel file specificato. Se il file
esiste, viene sovrascritto. Altrimenti, se non si riesce ad aprire un file esistente, o se non &egrave; possibile creare un nuovo file, l'output viene reindirizzato a stderr. Se si
specificano gli argomenti X e Y (entrambi interi) l'output verboseGC viene indirizzato
sul numero X di file, ciascuno contenente il numero Y di cicli gc valido per l'output
verboseGC. Questi file hanno il formato <em>nomefile1,
nomefile2</em> e cos&igrave; via. Per impostazione predefinita,
non viene effettuato alcun log verboso della raccolta di dati inutili.</li></ul></li>
<li><strong>-Xverify</strong>
<ul class="simple">
<li>Abilita il controllo classi severo per ciascuna classe caricata. Per impostazione predefinita, il controllo ristretto della classe ristretta viene disabilitato.</li></ul></li>
<li><strong>-Xverify:none</strong>
<ul class="simple">
<li>Disabilita il controllo classi severo. Per impostazione predefinita, il controllo ristretto della classe ristretta viene disabilitato.</li></ul></li></ul>
<a name="wq32"></a>
<h2 id="wq32"><a href="#ToC_27">Ricerca del numero di build IBM e del numero della versione</a></h2>
<p>Per ottenere il numero di build IBM e la versione, ad una richiesta comandi command immettere:</p>
<pre class="xmp">java -version</pre>
<a name="wq33"></a>
<h2 id="wq33"><a href="#ToC_28">Globalizzazione dei comandi java</a></h2>
<p>Il comando <strong>java</strong> e altri comandi di java (ad esempio<strong>javaw</strong>) consentono di specificare un nome classe con un qualsiasi carattere del set di caratteri della locale corrente.  </p>
<p>&Egrave; possibile anche specificare un qualsiasi carattere Unicode nel nome classe e gli argomenti utilizzando le sequenze di escape java. Per eseguire tale operazione, occorre specificare <strong>-Xargencoding</strong>. Per specificare un carattere Unicode, utilizzare sequenze di escape nel formato
<tt>\u####</tt>, dove # &egrave; una cifra esadecimale
(da 0 a 9, dalla A alla F).  </p>
<p>In alternativa, per specificare che il nome classe e gli argomenti comando sono con codifica UTF8, utilizzare <strong>-Xargencoding:utf8</strong> oppure con codifica ISO8859_1
utilizzando <strong>-Xargencoding:latin</strong>.</p>
<p>Ad esempio, per specificare una classe denominata "HelloWorld" utilizzando la codifica Unicode a lettere maiuscole, si utilizzer&agrave; questo comando:</p>
<pre class="xmp">java -Xargencoding '\u0048ello\u0057orld'</pre>
<p>I comandi <strong>java</strong> e <strong>javaw</strong> forniscono messaggi di output tradotti. Tali messaggi differiscono in base alla lingua in cui Java &egrave; in esecuzione.  Le descrizione di errore dettagliate e le altre informazioni di debug restituite da <strong>java</strong> sono in Inglese.</p>
<a name="wq34"></a>
<h2 id="wq34"><a href="#ToC_29">Esecuzione automatica di un file Java</a></h2>
<p>Per impostare un file jar o una classe java in modo che vengano eseguiti automaticamente da file, utilizzare l'opzione <strong>Strumenti->Opzioni cartella->Tipo file</strong> di Windows Explorer. Oppure, da una richiesta comandi, immettere:</p>
<pre class="xmp">assoc .class=javaclass 
ftype javaclass=C:\Program Files\IBM\Java50\jre\bin\java.exe %l %*</pre>
<a name="wq35"></a>
<div class="notelisttitle" id="wq35">Note:</div>
<ol type="1">
<li><tt>%l</tt> &egrave; la lettera l e non il numero 1.</li>
<li>Se Java &egrave; installato in una directory diversa da C:\Program Files\IBM\Java50\, sostituire la directory specificata.</li>
</ol>
<a name="jaws"></a>
<h2 id="jaws"><a href="#ToC_30">Esecuzione di applicazioni Java con le tecnologie native assistite</a></h2>
<p>Sun fornisce Java Access Bridge per dare alle tecnologie di assistenza Windows native, come ad esempio
lo screen reader, l'accesso al supporto Java Accessibility support nelle applicazioni Java. Tali tecnologie devono supportare le chiamate a
Java Access Bridge.</p>
<p>Java Access Bridge, reso disponibile dalla Sun, include un programma di installazione,
che colloca cinque file nelle directory corrette: access-bridge.jar, jaccess.jar,
accessibility.properties, JavaAccessBridge.dll e WindowsAccessBridge.dll.
IBM invia una copia di jaccess.jar nella directory appropriato per utilizzarlo con JawBridge.</p>
<p>Se &egrave; gi&agrave; stato installato IBM Accessibility Bridge (JawBridge), che
consente a Windows 2000 Magnifier di funzionare con applicazioni Swing, e si
desidera abilitare JawBridge contemporaneamente a Java Access Bridge, modificare la riga nel file
accessibility.properties nel seguente modo:</p>
<p></p>
<pre class="xmp">assistive_technologies=com.sun.java.accessibility.AccessBridge, 
JawBridge</pre>
<p>Disattivare la riga immettendo il carattere <tt>#</tt> al suo inizio per
disattivare entrambi i bridge. Sul sito Web si trovano le informazioni su come scaricare 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">Compilatore Just-In-Time (JIT) </a></h2>
<p>Il compilatore IBM JIT (Just-In-Time) genera dinamicamente il codice macchina per le sequenze di
bytecode usate frequentemente nelle applicazioni Java e nelle applet mentre sono in esecuzione.<span><font color="red"><span id="changed">|</span>Il compilatore JIT V5.0 fornisce nuove ottimizzazioni risultati dalla ricerca del compilatore, migliora le ottimizzazioni implementate nelle precedenti versioni del JIT e fornisce un migliore utilizzo dell'hardware.</font></span></p>
<p>IBM SDK e Runtime Environment includono JIT, abilitato per impostazione predefinita nelle applicazioni utente e nei tool SDK. Di norma, non &egrave; necessario richiamare esplicitamente JIT; la compilazione del bytecode Java in codice macchina avviene in maniera trasparente. Tuttavia, se si incontra un problema con Runtime Environment mentre si esegue un'applicazione o un'applet Java, &egrave; possibile disabilitare
JIT per facilitare l'isolamento del problema. La disabilitazione di JIT deve essere una soluzione solo temporanea; per prestazioni soddisfacenti &egrave; richiesto JIT.</p>
<a name="disjit"></a>
<h3 id="disjit"><a href="#ToC_32">Come disabilitare JIT</a></h3>
<p>Esistono tre modi per disabilitare JIT: </p>
<ul>
<li>Impostare la variabile d'ambiente <strong>JAVA_COMPILER</strong> su "NONE"
o la stringa vuota prima di eseguire l'applicazione Java.
<p>Alla richiesta comandi immettere:</p>
<pre class="xmp">set JAVA_COMPILER=NONE</pre><p class="indatacontent">&Egrave; possibile impostare in modo permanente <strong>JAVA_COMPILER</strong> utilizzando la GUI. Aprire il <strong>Pannello di controllo</strong>, selezionare <strong>Sistema</strong> e sulla scheda <strong>Avanzate</strong>, selezionare <strong>Variabili d'ambiente</strong>.</p></li>
<li>Utilizzare l'opzione <strong>-D</strong> sulla riga comandi della JVM per impostare la propriet&agrave; <strong>java.compiler</strong> su "NONE" o sulla stringa vuota: 
<pre class="xmp">java -Djava.compiler=NONE MyApp</pre></li>
<li>Utilizzare l'opzione <strong>-Xint</strong> sulla riga comandi della JVM. Ad esempio:
<pre class="xmp">java -Xint MyApp</pre></li></ul>
<p>Entrambe le opzioni di riga comandi sovrascrivomno la variabile d'ambiente <strong>JAVA_COMPILER</strong>.</p>
<a name="enajit"></a>
<h3 id="enajit"><a href="#ToC_33">Come abilitare JIT</a></h3>
<p>Per abilitare JIT esplicitamente, impostare la variabile d'ambiente <strong>JAVA_COMPILER</strong>
su "jitc", oppure utilizzare l'opzione <strong>-D</strong> per impostare la propriet&agrave; <strong>java.compiler</strong> su "jitc". In alternativa, utilizzare l'opzione <strong>-Xjit</strong> (e omettere l'opzione <strong>-Xint</strong>)
sulla riga comandi JVM per attivare JIT.</p>
<p>Se la variabile d'ambiente <strong>JAVA_COMPILER</strong> o la propriet&agrave; <strong>java.compiler</strong> sono impostate su "" (stringa vuota),
JIT resta disabilitato. Per annullare l'impostazione della variabile d'ambiente, immettere <tt class="xph">set JAVA_COMPILER=</tt> alla richiesta comandi.  </p>
<a name="detjit"></a>
<h3 id="detjit"><a href="#ToC_34">Come determinare se JIT &egrave; abilitato</a></h3>
<p>Per verificare se JIT &egrave; abilitato, immettere quanto segue da una richiesta comandi: </p>
<pre class="xmp">java -version</pre>
<p>Se JIT non &egrave; in uso, viene visualizzato un messaggio che comprende quanto segue: </p>
<pre class="xmp">(JIT disabilitato)</pre>
<p>Se JIT &egrave; in uso, viene visualizzato un messaggio che comprende quanto segue:</p>
<pre class="xmp">(JIT abilitato)</pre><p class="indatacontent"> </p>
<p>Per ulteriori informazioni su JIT, consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="garbage"></a>
<h2 id="garbage"><a href="#ToC_35">Specifica della politica di raccolta dei dati obsoleti</a></h2>
<p>La raccolta dei dati obsoleti gestisce la memoria usata da Java e dalle applicazioni in esecuzione all'interno del VM.</p>
<p>Quando Recupera spazio riceve una richiesta per la memorizzazione, la memoria heap non usata viene impostata
a parte -  "assegnazione".  La raccolta dei dati obsoleti controlla inoltre le aree di memoria cui non si fa pi&ugrave;
riferimento e le rilascia per il riutilizzo
- "raccolta".</p>
<p>La fase di raccolta pu&ograve; scattare in seguito ad un errore di allocazione della memoria, il che si verifica quando
non viene lasciato spazio per la richiesta di memoria o da una chiamata System.gc()
esplicita.</p>
<p>La raccolta dei dati obsoleti pu&ograve; influire significativamente sulla prestazione dell'applicazione, per cui
IBM virtual machine fornisce vari metodi per ottimizzare il modo in cui i dati obsoleti vengono
eliminati, riducendo cos&igrave; l'effetto sulle applicazioni.</p>
<p>Per ulteriori informazioni, consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="wq37"></a>
<h3 id="wq37"><a href="#ToC_36">Opzioni di Raccolta dei dati obsoleti</a></h3>
<p>L'opzione <strong>-Xgcpolicy</strong> specifica la politica
di raccolta dati obsoleti.</p>
<p><strong>-Xgcpolicy</strong> prende i valori <strong>optthruput</strong> (valore predefinito e consigliato), <strong>optavgpause</strong> oppure <strong>gencon</strong>.  Questa opzione controlla il comportamento del programma di raccolta dei dati obsoleti,
bilanciando la velocit&agrave; effettiva dell'applicazione e del sistema in generale
e le pause determinate dalla raccolta dei dati obsoleti.</p>
<p>Il formato dell'opzione ed i suoi valori sono: </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 di pausa</a></h3>
<p>Quando il tentativo di un'applicazione di creare un oggetto non
pu&ograve; essere immediatamente soddisfatto a causa dello spazio disponibile
nella memoria riservata, il programma di raccolta dei dati obsoleti &egrave; responsabile
dell'identificazione degli oggetti cui non si fa riferimento
(obsoleti), della loro cancellazione e della reimpostazione della memoria riservata
su uno stato in cui le immediate e successive richieste di allocazione possono
essere soddisfatte rapidamente.  Questi cicli di raccolta dei dati obsoleti causano delle pause occasionali ed
impreviste nell'esecuzione del codice dell'applicazione.  Quando
la dimensione e la complessit&agrave; delle applicazioni crescono, e le memorie riservate
diventano di conseguenza pi&ugrave; grandi, questa pausa per la
raccolta dei dati obsoleti tende a crescere.  L'impostazione predefinita per la raccolta dei dati obsoleti,
<strong>-Xgcpolicy:optthruput</strong>,
consente alle applicazioni una velocit&agrave; di trasmissione molto alta, tuttavia possono verificarsi delle pause occasionali,
il che pu&ograve; variare da alcuni millisecondi a svariati secondi, in base alla dimensione della memoria e alla
quantit&agrave; di dati obsoleti. </p>
<a name="pausetimereduction"></a>
<h3 id="pausetimereduction"><a href="#ToC_38">Riduzione della pausa </a></h3>
<p>JVM utilizza due tecniche per ridurre i tempi di pausa:</p>
<ul>
<li>Raccolta dati obsoleti simultanea</li>
<li>Raccolta dati obsoleti generazionale</li></ul>
<p>L'opzione della riga comandi <strong>-Xgcpolicy:optavgpause</strong> richiede l'utilizzo della raccolta dati obsoleti simultanea per ridurre in modo significativo il tempo utilizzato nelle pause della raccolta dei dati obsoleti. La raccolta dati obsoleti simultanea riduce il tempo di pausa eseguendo alcune attivit&agrave; di raccolta dei dati obsoleti contemporaneamente all'esecuzione normale del programma per ridurre le interruzioni causate dalla raccolta della memoria riservata.  L'opzione <strong>-Xgcpolicy:optavgpause</strong> limita inoltre l'effetto dell'incremento della dimensione della memoria riservata nella lunghezza della pausa della raccolta dei dati obsoleti. L'opzione <strong>-Xgcpolicy:optavgpause</strong> &egrave; molto utile per configurazioni che hanno grandi memorie riservate. Con il tempo di pausa ridotto, &egrave; possibile che si verifichi una riduzione nella capacit&agrave; di elaborazione delle applicazioni.</p>
<p>Durante la raccolta dei dati obsoleti simultanea, viene sprecato molto tempo per identificare gli oggetti di durata relativamente lunga che non possono essere raccolti.
 Se la raccolta dei dati obsoleti si concentra solo su tali oggetti, che sono di solito riciclabili, &egrave; possibile ridurre ulteriormente i tempi di pausa per alcune applicazioni. La raccolta dati obsoleti generazionale ottiene questo risultato dividendo la memoria riservata in due "generazioni", le aree "asilo" e "possesso". Gli oggetti sono ubicati in una di queste aree a seconda della loro et&agrave;. L'asilo &egrave; il pi&ugrave; piccolo del due e contiene oggetti pi&ugrave; giovani;
il possesso &egrave; pi&ugrave; grande e contiene oggetti pi&ugrave; vecchi. Gli oggetti vengono prima assegnati all'asilo; se essi sopravvivono abbastanza a lungo, vengono eventualmente promossi nell'area di possesso. </p>
<p>La raccolta dati obsoleti generazionale si basa su una maggioranza di oggetti che non durano a lungo. La raccolta dati obsoleti generazionale, riduce i tempi di pausa concentrandosi sul reclamo memoria nell'asilo in quanto questa area, dispone di pi&ugrave; spazio riciclabile. Invece di utilizzare tempi di pausa lunghi per la raccolta dell'intera memoria riservata, i dati nell'asilo vengono raccolti pi&ugrave; spesso e, se l'asilo &egrave; sufficientemente piccolo, i tempi di pausa sono conseguentemente brevi. Il lato negativo della raccolta dati generazionale consiste nel fatto che, nel tempo, l'area di possesso potrebbe diventare piena se molti oggetti durano troppo a lungo.  Per ridurre il tempo di pausa quando si verifica tale situazione, utilizzare una combinazione di raccolte dati obsoleti generazionali e simultanee. L'opzione <strong>-Xgcpolicy:gencon</strong> richiede l'uso combinato della raccolta dati simultanea e generazionale per ridurre il tempo impiegato nella pausa della raccolta dei dati obsoleti.</p>
<a name="wq39"></a>
<h3 id="wq39"><a href="#ToC_39">Ambienti con memorie riservate molto piene</a></h3>
<p>Quando una memoria riservata Java &egrave; quasi piena ed i dati obsoleti da eliminare
sono pochi, &egrave; possibile che le richieste per nuovi oggetti non
possano essere soddisfatte rapidamente poich&eacute; non c'&egrave; spazio
immediatamente disponibile.  Se la memoria riservata viene utilizzata quando &egrave; quasi
piena, &egrave; possibile che le prestazioni delle applicazioni subiscano
una riduzione, indipendentemente da quale delle opzioni sopra
indicate viene utilizzata: e, se si continua ad inoltrare richieste
per ulteriore spazio della memoria riservata, l'applicazione riceve un'eccezione OutofMemory,
che determina la chiusura del JVM se l'eccezione non viene rilevata e risolta. A questo punto, JVM produce un file di diagnostici denominato
"javadump". In queste situazioni, si consiglia di aumentare la dimensione della memoria riservata utilizzando l'opzione e <strong> -Xmx</strong> oppure di ridurre il numero di oggetti di applicazione in uso. Per ulteriori informazioni, consultare il manuale <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="wq40"></a>
<h2 id="wq40"><a href="#ToC_40">Modalit&agrave; di elaborazione di JVM dei segnali</a></h2>
<p>Quando viene generato un segnale che possa essere di interesse per JVM, viene richiamato  un programma di gestione segnali. Questo, determina se &egrave; stato invocato per un thread Java oppure per un non-Java. </p>
<p>Se il segnale &egrave; per un thread Java, JVM prende il controllo
della gestione del segnale. Se &egrave; installato un gestore applicazioni per questo segnale e non &egrave; stata specificata l'opzione riga comandi <strong>-Xnosigchain</strong>, quando JVM termina l'elaborazione, viene richiamato il gestore applicazioni per questo segnale. </p>
<p>Se il segnale &egrave; per un thread non-Java, e
l'applicazione che installava JVM aveva precedentemente installato il proprio gestore segnali, il controllo viene passato a tale gestore. In caso contrario, se il segnale viene richiesto da JVM o dall'applicazione JAVA, il segnale viene ignorato oppure viene eseguita l'azione predefinita. </p>
<p>L'eccezione a questa regole &egrave; in Windows, dove per un segnale generato esternamente (ad esempio immettendo CTRL-BREAK) viene creato un nuovo thread per eseguire il gestore segnali. In questo caso, il gestore segnali JVM esegue le elaborazioni e, se &egrave; installato un gestore applicazioni per questo segnale e non &egrave; stata specificata l'opzione riga comandi <strong>-Xnosigchain</strong>, viene richiamato il gestore applicazioni per questo segnale.</p>
<p>Per i segnali di errore e eccezione, JVM esegue quanto segue: </p>
<ul>
<li>Gestisce la condizione ed esegue il recupero, oppure</li>
<li>Immette una sequenza di chiusura controllata che: 
<ol type="1">
<li>Genera un Javadump, per descrivere lo stato di JVM al momento del malfunzionamento</li>
<li>Chiama il gestore del segnale dell'applicazione per quel segnale </li>
<li>Chiama eventuali hook di uscita di applicazioni installate  </li>
<li>Esegue le necessarie pulizie per una chiusura pulita</li></ol></li></ul> Per informazioni su come scrivere un programma di avvio che specifica gli hook sopra indicati, consultare: <a href="http://www.ibm.com/developerworks/java/library/i-signalhandling/">http://www-106.ibm.com/developerworks/java/library/i-signalhandling/</a>. Questo elemento &egrave; stato scritto per Java V1.3.1 ma &egrave; valido anche per le versioni successive.
<p>Per segnali di interruzione, JVM immette inoltre una sequenza di chiusura controllata,
ma questa volta viene trattata come una normale chiusura che: </p>
<ul>
<li>Chiama il gestore del segnale dell'applicazione per quel segnale </li>
<li>Esegue tutti gli hook di chiusura delle applicazioni  </li>
<li>Chiama eventuali hook di uscita di applicazioni installate  </li>
<li>Esegue le necessarie pulizie JVM</li></ul>
<p>La chiusura &egrave; identica a quella iniziata da una chiamata al metodo Java
<tt class="xph">System.exit()</tt>. </p>
<p>Altri segnali usati da JVM servono per controlli interni e non causano
la chiusura. L'unico segnale di controllo di interesse &egrave; SIGBREAK, che genera un Javadump. </p>
<a name="sighand"></a>
<h3 id="sighand"><a href="#ToC_41">Segnali usati da JVM </a></h3>
<p><a href="#sig_table">Tabella 1</a> di seguito vengono illustrati i segnali usati da JVM.
I segnali sono raggruppati in una tabella per tipo o uso, nel seguente modo:</p>
<ul>
<li><strong>Eccezioni:</strong> Il sistema operativo emette in modo sincrono un
appropriato segnale di eccezione ogni volta che si verifica una condizione irreversibile. </li>
<li><strong>Errori:</strong> JVM emette un SIGABRT se rileva una
condizione per la quale non pu&ograve; effettuare il recupero.</li>
<li><strong>Interruzioni:</strong> Per richiedere una chiusura, i segnali di interruzione vengono emessi in modo asincrono al di fuori del processo JVM. </li>
<li><strong>Controlli:</strong> Altri segnali di controllo usati da JVM. </li></ul>
<a name="sig_table"></a>
<table id="sig_table" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabella 1. Segnali usati da JVM</caption>
<thead valign="bottom">
<tr>
<th id="wq42" width="25%" align="left">Nome segnale</th>
<th id="wq43" width="25%" align="left">Tipo segnale</th>
<th id="wq44" width="25%" align="left">Descrizione</th>
<th id="wq45" width="25%" align="left">Disabilitato da -Xrs</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq42"><strong>SIGINT</strong></td>
<td headers="wq43">Interrotto</td>
<td headers="wq44">Attenzione interattiva (CTRL-C). JVM esce normalmente.</td>
<td align="center" headers="wq45">S&igrave;</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGTERM</strong></td>
<td headers="wq43">Interrotto</td>
<td headers="wq44">Richiesta termine. JVM uscir&agrave; normalmente.</td>
<td align="center" headers="wq45">S&igrave;</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGBREAK</strong></td>
<td headers="wq43">Controllo</td>
<td headers="wq44">Segnale di interruzione per un terminale. Usato da JVM per effettuare dei Javadump.</td>
<td align="center" headers="wq45">S&igrave;</td>
</tr>
</tbody>
</table><span><font color="red"><span id="changed">|</span>IBM JVM utilizza la gestione delle eccezioni strutturata e l'API SetConsoleCtrlHandler(). Queste vengono disabilitate con <strong>-Xrs</strong>. <strong>-Xnosigchain</strong> viene ignorato su Windows.</font></span>
<p>Usare l'opzione <strong>-Xrs</strong> (riduce uso segnale) per evitare che
JVM gestisca la maggior parte dei segnali. Per ulteriori informazioni, consultare la pagina di avvio dell'applicazione Java della Sun all'indirizzo <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>I segnali <tt class="xph">2 (SIGINT)</tt> e <tt class="xph">15 (SIGTERM)</tt> sui thread JVM causano l'arresto della JVM; pertanto un gestore di segnali dell'applicazione non deve tentare il ripristino da questi segnali se richiede ancora la JVM.</p>
<a name="wq46"></a>
<h3 id="wq46"><a href="#ToC_42">Collegamento di un driver di codice nativo alla libreria di segnale a catena</a></h3>
<p>Runtime Environment contiene il concatenamento dei segnali. Questa funzione consente a
JVM di operare in modo pi&ugrave; efficiente con il code nativo che installa i propri gestori di
segnale.</p>
<p>Il concatenamento dei segnali consente ad un'applicazione di collegare e caricare la libreria condivisa jsig.dll prima di msvcrt.dll. La libreria jsig.dll assicura che le chiamate a
<tt class="xph">signal()</tt> vengano intercettate in modo che i relativi gestori non sostituiscano i gestori di segnale della JVM. Al contrario, tali chiamate salvano i nuovi gestori di segnale o li concatenano ai gestori installati dalla JVM.
Successivamente, quando uno di tali segnali viene attivato e viene rilevato come non destinato alla JVM, vengono richiamati i gestori pre-installati.</p>
<p>Per utilizzare jsig.dll, eseguire il collegamento all'applicazione che crea oppure inserisce una JVM.</p>
<a name="wq47"></a>
<h2 id="wq47"><a href="#ToC_43">Trasformazione di documenti XML</a></h2>
<p>L'IBM SDK contiene il processore XSLT4J e il parser XML4J che sono conformi alla <a href="http://java.sun.com/xml/jaxp/">specifica JAXP 1.3</a>. Tali strumenti consentono di analizzare e trasformare documenti XML indipendentemente da qualsiasi implementazione di elaborazione XML fornita.   Utilizzando "Factory Finders" per individuare le implementazioni SAXParserFactory, DocumentBuilderFactory e TransformerFactory, l'applicazione pu&ograve; passare tra differenti implementazioni senza dover cambiare alcun codice.</p>
<p><font color="red"><span id="changed">|</span>La tecnologia XML inclusa con IBM SDK &egrave; simile a 
<span id="changed">|</span>Apache Xerces Java e Apache Xalan Java.  Per ulteriori informazioni, visitare i siti <a href="http://xml.apache.org/xerces2-j/">http://xml.apache.org/xerces2-j/</a> e<a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/</a>.</font></p>
<p>Il processore XSLT4J consente di scegliere tra il processore XSLT Interpretive
originale oppure e il nuovo processore XSLT Compiling. Il processore Interpretive &egrave; progettato per ambienti di debug e supporto e supporta le funzioni di estensione XSLT che non sono supportate dal processore
XSLT Compiling. Il processore XSLT
Compiling viene progettato per ambienti di esecuzione ad alte prestazioni; genera un motore di trasformazione oppure <em>translet</em>,
da un foglio di stile. Questo approccio separa l'interpretazione delle istruzioni dei fogli di stile dalla relativa applicazione di runtime a dati XML.  </p>
<p>Il processore XSLT Interpretive &egrave; quello predefinito. Per selezionare il processore
XSLT Compiling &egrave; possibile: </p>
<ul>
<li>Modificare l'entrata nel file jaxp.properties (localizzato
nella C:\Program Files\IBM\Java50\jre\lib), oppure  </li>
<li>Impostare la propriet&agrave; di sistema per la chiave javax.xml.transform.TransformerFactory
su org.apache.xalan.xsltc.trax.TransformerFactoryImpl.</li></ul><p class="indatacontent">  </p>
<p>Per implementare le propriet&agrave; nel file jaxp.properties, copiare jaxp.properties.sample
in jaxp.properties nella C:\Program Files\IBM\Java50\. Questo file contiene anche dettagli completi sulla procedura utilizzata per determinare  quali implementazioni utilizzare per TransformerFactory, SAXParserFactory e DocumentBuilderFactory.</p>
<p>Per migliorare le prestazioni quando si trasforma un oggetto StreamSource con il processore XSLT Compiling, specificare la classe com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager
come provider del servizio org.apache.xalan.xsltc.dom.XSLTCDTMManager.
 Per determinare il service provider, provare ogni operazioni finch&eacute; non si individua org.apache.xalan.xsltc.dom.XSLTCDTMManager:</p>
<ol type="1">
<li>Verificare l'impostazione della propriet&agrave; di sistema org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li>
<li>Verificare il valore della propriet&agrave; org.apache.xalan.xsltc.dom.XSLTCDTMManager
nel file C:\Program Files\IBM\Java50\lib\xalan.properties.</li>
<li>verificare il contenuto del file META-INF\services\org.apache.xalan.xsltc.dom.XSLTCDTMManager
per un nome della classe.</li>
<li>Utilizzare il service provider predefinito, org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li></ol><p class="indatacontent">Il processore XSLT Compiling rileva il service provider per il servizio org.apache.xalan.xsltc.dom.XSLTCDTMManager
quando viene creato un oggetto javax.xml.transform.TransformerFactory. 
Qualsiasi oggetto javax.xml.transform.Transformer oppure javax.xml.transform.sax.TransformerHandler creato
utilizzando l'oggetto TransformerFactory, utilizzer&agrave; lo stesso
service provider.  &Egrave; possibile modificare i service provider modificando una delle impostazioni descritte e quindi creando un nuovo oggetto TransformerFactory.</p>
<a name="wq49"></a>
<h3 id="wq49"><a href="#ToC_44">Utilizzo di una versione precedente di Xerces o Xalan</a></h3>
<p>Se si sta usando una versione meno recente di Tomcat, potrebbe applicarsi questa limitazione.</p>
<p>Se si sta usando una versione pi&ugrave; vecchia di Xerces (antecedente a 2.0) o Xalan (antecedente a
2.3), si potrebbe ricevere un'eccezione di puntatore nullo quando si lancia l'applicazione. Questa eccezione si verifica perch&eacute; le versioni pi&ugrave; vecchie non gestiscono correttamente il file
jaxp.properties.  </p>
<p>Per evitare questa situazione, usare una delle seguenti soluzioni alternative:</p>
<ul>
<li>Aggiornare ad una versione pi&ugrave; recente dell'applicazione in modo da implementare la specifica pi&ugrave; recente di
Java API per XML Programming (JAXP) (http://java.sun.com/xml/jaxp/index.html).
<br /></li>
<li>Eliminare il file jaxp.properties da C:\Program Files\IBM\Java50\jre\lib.
<br /></li>
<li>Eliminare il commento alle voci del file jaxp.properties in C:\Program Files\IBM\Java50\jre\lib.
<br /></li>
<li>Impostare esplicitamente SAX Parser, DocumentBuilder o Transformer factory
usando la variabile di ambiente <strong>IBM_JAVA_OPTIONS</strong>. Ad esempio:
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
  org.apache.xerces.jaxp.SAXParserFactoryImpl </pre>oppure
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</pre>oppure 
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
  org.apache.xalan.processor.TransformerFactoryImpl  </pre>
<br /></li>
<li>Impostare la propriet&agrave; di sistema per <strong>javax.xml.parsers.SAXParserFactory</strong>, <strong>javax.xml.parsers.DocumentBuilderFactory</strong> o <strong>javax.xml.transform.TransformerFactory</strong> dall'interno del codice dell'applicazione. Per un esempio, consultare le specifiche JAXP 1.3.
<br /></li></ul>
<a name="wq50"></a>
<h1 id="wq50"><a href="#ToC_45">Utilizzo di SDK per lo sviluppo di applicazioni Java</a></h1>
<p>Le seguenti sezioni forniscono informazioni sull'utilizzo di SDK per Windows per sviluppare applicazioni Java. Consultare <a href="#sdktools">Tool SDK</a> per informazioni dettagliate sugli strumenti disponibili.</p>
<a name="debugger"></a>
<h2 id="debugger"><a href="#ToC_46">Esecuzione del debug nelle applicazioni Java</a></h2>
<p>Per eseguire il debug dei programmi Java, &egrave; possibile usare l'applicazione JDB (Java Debugger) o altri programmi di debug che comunicano tramite l'uso di JPDA
(Java Platform Debugger Architecture) fornito da
SDK per Windows.</p>
<a name="jdb"></a>
<h3 id="jdb"><a href="#ToC_47">Java Debugger (JDB)</a></h3>
<p>JDB (Java Debugger) &egrave; incluso nel SDK per Windows. Il programma di debug &egrave; richiamato
dal comando <strong>jdb</strong>; questo si "collega" a JVM che usa usando JPDA. Per eseguire il debug di un'applicazione Java:</p>
<ol type="1">
<li>Avviare JVM con le seguenti opzioni:
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<em>&lt;porta></em>
     MyApp <em>&lt;arg MyApp></em></pre></li>
<li>JVM si avvia ma sospende l'esecuzione prima di avviare l'applicazione Java .
In una sessione separata, &egrave; possibile collegare il programma di debug a JVM:
<pre class="xmp">jdb -attach <em>&lt;numero porta></em></pre>Il programma di debug si collega a JVM ed &egrave; ora possibile emettere una gamma di comandi per esaminare e controllare le
applicazioni Java; ad esempio, immettere <tt class="xph">run</tt> per consentire l'esecuzione di
applicazioni Java.</li></ol>
<p>Per ulteriori informazioni sulle opzioni JDB, immettere:</p>
<pre class="xmp">jdb -help</pre><p class="indatacontent">Per ulteriori informazioni sui comandi JDB:</p>
<ol type="1">
<li>Immettere <tt class="xph">jdb</tt></li>
<li>Alla richiesta comandi jdb, immettere <tt class="xph">help</tt></li></ol><p class="indatacontent"> </p>
<p>&Egrave; inoltre possibile usare JDB per effettuare il debug delle applicazioni Java eseguite su macchine remote:</p>
<ol type="1">
<li>Avviare JVM come precedentemente indicato.</li>
<li>Collegare il programma di debug alla macchina in remoto:
<pre class="xmp">jdb -attach <em>&lt;nome macchina o indirizzo ip></em>:<em>&lt;numero porta></em></pre></li></ol>
<p>Quando si lancia una sessione di debug usando il trasporto dt_socket, accertarsi che le porte specificate
siano libere.</p>
<p><font color="red"><span id="changed">|</span>JVMDI (Java Virtual Machine Debugging Interface) <em>non</em> &egrave; supportata in questo rilascio. &Egrave; stata sostituita da JVMTI (Java Virtual Machine Tool Interface).</font></p>
<p>Per ulteriori informazioni su JDB e JPDA e sul loro uso, consultare questi siti web: </p>
<ul>
<li><a href="http://java.sun.com/products/jpda/">http://java.sun.com/products/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html</a></li></ul>
<br />
<a name="wq54"></a>
<h2 id="wq54"><a href="#ToC_48">Come stabilire se l'applicazione esegue una JVM a 32 o 64 bit</a></h2>
<p>Con alcune applicazioni Java deve essere possibile determinare se viene eseguita una JVM a 32 o 64 bit. Ad esempio,se l'applicazione dispone di una libreria di codice nativo, tale libreria deve essere compilata separatamente in moduli a 32 e 64 bit per le piattaforme che supportano entrambe le modalit&agrave; di funzionamento (a 32 e 64 bit). In questo caso,
l'applicazione deve caricare la libreria corretta al runtime, perch&eacute; non &egrave; possibile mischiare il codice a 32 bit con quello a 64 bit.</p>
<p>La propriet&agrave; di sistema <strong>com.ibm.vm.bitmode</strong> consente alle applicazioni di determinare il modo in cui &egrave; in esecuzione il JVM di cui si dispone. Vengono restituiti i seguenti valori: </p>
<ul>
<li>32 - la JVM &egrave; in esecuzione in modalit&agrave; a 32bit </li>
<li>64 - JVM &egrave; in esecuzione nel modo a 64 bit</li></ul><p class="indatacontent">&Egrave; possibile esaminare <strong>com.ibm.vm.bitmode</strong> dal codice dell'applicazione utilizzando la chiamata:</p>
<pre class="xmp">System.getProperty("com.ibm.vm.bitmode");</pre>
<a name="wq55"></a>
<h2 id="wq55"><a href="#ToC_49">Scrittura di applicazioni JNI</a></h2>
<p>I numeri di versione JNI validi che i programmi nativi possono specificare sulla chiamata JNI_CreateJavaVM() API sono:</p>
<ul>
<li>JNI_VERSION_1_2(0x00010002)</li>
<li>JNI_VERSION_1_4(0x00010004)</li></ul><p class="indatacontent">Questo numero di versione determina solo il livello dell'interfaccia nativa JNI da utilizzare. Il livello attuale di JVM creato viene specificato dalle librerie J2SE
(cio&egrave; v5.0). L'API interfaccia JNI <em>non</em> influisce sulla specifica del lingua implementata da JVM, le API delle librerie delle classi oppure qualsiasi altra area di azione di JVM.  Per ulteriori informazioni, visitare il sito
<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 per l'applicazione occorrono due librerie JNI, una creata per 31-bit e una per 64 -bit, utilizzare la propriet&agrave; di sistema <strong>com.ibm.vm.bitmode</strong> per determinare se si sta eseguendo con un JVM a 31 oppure a 64 bit
e selezionare la libreria appropriata.</p>
<a name="wq56"></a>
<div class="notetitle" id="wq56">Nota:</div>
<div class="notebody">La versione 1.1 di JNI (Java Native Interface) non &egrave; supportata.</div>
<a name="wq57"></a>
<h2 id="wq57"><a href="#ToC_50">Operazioni con gli applet</a></h2>
<p>Con Applet Viewer, &egrave; possibile eseguire una o pi&ugrave; applet chiamate come riferimento in una pagina web
(file HTML) usando le tag APPLET.
Applet Viewer individua le tag APPLET nel file HTML ed esegue le applet, in finestre separate, come specificato
dalle tag.</p>
<p>Poich&eacute; l'Applet Viewer
&egrave; solo per le applet di visualizzazione, non pu&ograve; visualizzare un'intera pagina web contenente molte tag HTML. Analizza solo le tag
APPLET e nessun altro HTML nella pagina web.</p>
<a name="wq58"></a>
<h3 id="wq58"><a href="#ToC_51">Esecuzione delle applet con Applet Viewer</a></h3>
<p>Per eseguire un'applet con il suo visualizzatore, immettere in una shell  di richiesta comando:</p>
<pre class="xmp">   appletviewer <em>name</em></pre>
<p>dove <em>name</em> &egrave; uno dei seguenti:</p>
<ul>
<li>Il nome di un file HTML che chiama un'applet</li>
<li>L'URL di una pagina Web che richiama un'applet</li></ul>
<p>Ad esempi, per richiamare un'Applet Viewer su un file HTML che chiama un'applet, immettere
su una shell  :</p>
<p></p>
<pre class="xmp">appletviewer &lt;demo>\GraphLayout\example1.html</pre><p class="indatacontent"> dove <em>&lt;demo></em> viene sostituito dal percorso completo in cui &egrave; stato spacchettato il pacchetto della demo.</p>
<p>Ad esempio, <tt>http://java.sun.com/applets/NervousText/example1.html</tt> &egrave; l'URL della pagina Web che richiama l'applet. Per richiamare Applet
Viewer su questa pagina web, immettere su una shell di comandi:</p>
<p></p>
<pre class="xmp">appletviewer http://java.sun.com/applets/NervousText/example1.html</pre><p class="indatacontent"> </p>
<p>L'Applet Viewer non riconosce l'opzione <strong>charset</strong> della tag
&lt;META>. Se il file caricato da appletviewer non &egrave; codificato come predefinito del sistema, potrebbe verificarsi
un'eccezione I/O. Per evitarla, usare l'opzione
<strong>-encoding</strong> quando si esegue appletviewer.
 Ad esempio: </p>
<pre class="xmp">appletviewer -encoding JISAutoDetect sample.html</pre>
<a name="wq59"></a>
<h3 id="wq59"><a href="#ToC_52">Esecuzione del debug delle applet con Applet Viewer</a></h3>
<p>Si pu&ograve; eseguire il debug delle applet usando l'opzione <strong>-debug</strong> di
Applet Viewer. Quando si esegue il debug delle applet, viene consigliato di richiamare
Applet Viewer dalla directory che contiene il file HTML che chiama l'applet. Ad esempio:</p>
<p></p>
<pre class="xmp">cd &lt;demo>\TicTacToe
appletviewer -debug example1.html</pre>
<p>Dove <em>&lt;demo></em> viene sostituito dal percorso completo in cui &egrave; stato
spacchettato il pacchetto della demo.</p>
<p>La documentazione su come eseguire il debug delle applet usando Applet
Viewer si trova sul sito web della 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">Configurazione dell'allocazione di memoria di pagine grandi</a></h2>
<span id="changed">|</span><p>&Egrave; possibile abilitare il supporto a pagine grandi, su sistemi che lo supportano, avviando Java con l'opzione <strong>-Xlp</strong>.</p>
<span id="changed">|</span><p>L'utilizzo di pagine grandi serve principalmente a fornire dei miglioramenti delle prestazioni alle applicazioni che allocano molta memoria e che accedono ad essa frequentemente.
<span id="changed">|</span>I miglioramenti delle prestazioni delle pagine grandi sono principalmente causati dal numero ridotto di mancati riscontri nel TLB (Translation Lookaside Buffer). TLB mappa un intervallo pi&ugrave; ampio di memoria virtuale e cos&igrave; effettua questo miglioramento.</p>
<span id="changed">|</span><p>Affinch&eacute; JVM utilizzi pagine grandi, il sistema deve avere un numero adeguato di pagine grandi contigue disponibili. 
<span id="changed">|</span>Se le pagine grandi non possono essere allocate, anche quando sono disponibili sufficienti pagine, &egrave; possibile che le pagine grandi non siano contigue.</p>
<span id="changed">|</span><p>Le allocazioni di pagine grandi avranno esito positivo se il criterio amministrativo locale per l'utente della JVM &egrave; configurato per consentire il blocco delle pagine in memoria. </p></font>
<a name="wq60"></a>
<h2 id="wq60"><a href="#ToC_54">Supporto CORBA</a></h2>
<p>Java 2 Platform, Standard Edition (J2SE) supporta, almeno, le specifiche definite nelle <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>. In alcuni casi, IBM J2SE ORB supporta le versioni pi&ugrave; recenti delle specifiche.</p>
<a name="wq61"></a>
<h3 id="wq61"><a href="#ToC_55">Supporto per GIOP 1.2</a></h3>
<p>Questo SDK supporta tutte le versioni di GIOP, come definito nei capitoli 13 e
15 delle specifiche CORBA 2.3.1, documento OMG <em>formal/99-10-07</em>, recuperabile su:</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>GIOP bidirezionale non &egrave; supportato.</p>
<a name="wq62"></a>
<h3 id="wq62"><a href="#ToC_56">Supporto per Portable Interceptors</a></h3>
<p>Questo SDK supporta Portable Interceptors, come definito da OMG nel documento
<em>ptc/01-03-04</em>, che &egrave; possibile ottenere da:</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>Portable Interceptors sono ganci posti in ORB attraverso cui i servizi ORB possono intercettare il normale flusso
esecutivo di ORB.</p>
<a name="wq63"></a>
<h3 id="wq63"><a href="#ToC_57">Supporto per Interoperable Naming Service</a></h3>
<p>SDK supporta Interoperable Naming Service, come definito da
OMG nel documento <em>ptc/00-08-07</em>, che &egrave; possibile ottenere da:</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>La porta predefinita usata da Transient Name Server (il comando <tt>tnameserv</tt>), quando non viene dato il parametro <strong>ORBInitialPort</strong>,
cambia da <em>900</em> a <em>2809</em>, che &egrave; il numero della porta registrata con IANA (Internet
Assigned Number Authority) per il servizio di assegnazione nomi CORBA. I programmi dipendenti da questo valori predefiniti, per lavorare con questa versione,
potrebbero aver bisogno di essere aggiornati.</p>
<p>Il contesto iniziale che viene restituito dal Transient Name Server &egrave; ora
un <tt>org.omg.CosNaming.NamingContextExt</tt>. I programmi esistenti che riducono il riferimento
ad un contesto <tt>org.omg.CosNaming.NamingContext</tt> funzionano comunque e non hanno bisogno di essere ricompilati.</p>
<p>ORB supporta i parametri <strong>-ORBInitRef</strong> e <strong>-ORBDefaultInitRef</strong> definiti dalla specifica di Interoperable Naming
Service, e l'operazione ORB::string_to_object supporta ora i formati di stringa
ObjectURL (corbaloc: e corbaname:) definiti dalla specifica di
Interoperable Naming Service.</p>
<p>OMG specifica un metodo ORB::register_initial_reference per registrare un servizio con
Interoperable Naming Service. Tuttavia, questo metodo non &egrave; disponibile in
Sun Java Core API alla Versione 5.0. I programmi che hanno bisogno di registrare un servizio nella versione corrente
devono richiamare questo metodo nella classe di implementazione ORB interna IBM. Ad esempio, per registrare un servizio "MyService":</p>
<p></p>
<pre class="xmp">((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MyService",
serviceRef); </pre>
<p>dove <tt>orb</tt> &egrave; un'istanza di <tt>org.omg.CORBA.ORB</tt>, che viene restituita da <tt>ORB.init()</tt>, e <tt>serviceRef</tt> e un Oggetto ORBA, che &egrave; connesso a ORB.
Questo meccanismo &egrave; temporaneo e non &egrave; compatibile con le future versioni o portatili ORB
non-IBM.</p>
<a name="wq64"></a>
<h3 id="wq64"><a href="#ToC_58">Propriet&agrave; di sistema per tracciare l'ORB</a></h3>
<p>Una funzione di debug al momento dell'esecuzione fornisce funzionalit&agrave; potenziate. Potrebbe risultare utile per la
diagnosi dei problemi o potrebbe essere richiesta dal personale di assistenza IBM.
La funzione di traccia &egrave; controllata da tre propriet&agrave; di sistema.</p>
<ul>
<li>Per attivare la funzione di traccia, impostare <tt><strong>com.ibm.CORBA.Debug</strong>=true</tt> .</li>
<li>Per formattare ed aggiungere alla traccia GIOP i messaggi inviati e ricevuti, impostare <tt><strong>com.ibm.CORBA.CommTrace</strong>=true</tt>.
Come valore predefinito, la traccia ORB si indirizza sui file che hanno nomi del formato orbtrc.DDMMYYYY.HHmm.SS.txt.</li>
<li>Per inviarlo ad un file differente, impostare <tt><strong>com.ibm.CORBA.Debug.Output</strong>=&lt;filename></tt>. </li></ul><p class="indatacontent"> Ad esempio, per tracciare gli eventi e i messaggi formattati GIOP, immettere:</p>
<pre class="xmp"> java -Dcom.ibm.CORBA.Debug=true  
		-Dcom.ibm.CORBA.CommTrace=true myapp   </pre><p class="indatacontent"> </p>
<p>Non attivare la traccia per le normali operazioni in quanto ci&ograve; potrebbe comportare un peggioramento delle
prestazioni. Anche se la traccia &egrave; stata disattivata, FFDC (First Failure
Data Capture) funziona comunque, per cui vengono riportati solo gli errori gravi.
se viene generato un file di output del debug, esaminarlo per verificare il problema. Ad esempio,
il server potrebbe essersi interrotto senza eseguire un ORB.shutdown().</p>
<p>Il contenuto e il formato dell'output di traccia potrebbero variare da versione a versione. </p>
<a name="wq65"></a>
<h3 id="wq65"><a href="#ToC_59">Propriet&agrave; di sistema per ottimizzare ORB</a></h3>
<p>Le seguenti propriet&agrave; agevolano l'ottimizzazione di ORB:</p>
<ul>
<li>Per controllare la frammentazione GIOP 1.2, impostare la propriet&agrave; di sistema  <strong>com.ibm.CORBA.FragmentSize</strong>.
<p>Ad esempio, per impostare la dimensione del frammento su
4096 byte:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.FragmentSize=4096 myapp
</pre>
<p>La dimensione predefinita del frammento &egrave; 1024 byte. E possibile disattivare la frammentazione impostando la dimensione del frammento su 0.</p> </li>
<li>In una rete eterogenea, la risposta ad una richiesta CORBA potrebbe essere ritardata o persa. E' possibile impostare il tempo massimo di attesa usando la propriet&agrave; di sistema <strong>com.ibm.CORBA.RequestTimeout</strong>. Inoltre, &egrave; possibile usare <strong> com.ibm.CORBA.LocateRequestTimeout</strong> per controllare il timeout perLocateRequests.
Ad esempio, per ridurre entrambi i ritardi a 30 secondi, immettere:
<pre class="xmp">java -Dcom.ibm.CORBA.RequestTimeout=30 
     -Dcom.ibm.CORBA.LocateRequestTimeout=30 myapp</pre>
<p>Come impostazione predefinita, ORB attende una risposta indefinitamente. Non impostare il timeout su un valore troppo basso, altrimenti le connessioni potrebbero terminare inutilmente. </p></li>
<li>Se il programma sta fornendo un servizio in una rete, potrebbe essere necessario salvare su un valore ben noto il numero della porta da cui ORB legge le richieste in entrata. E' possibile controllare ci&ograve; tramite la propriet&agrave; di sistema <strong>com.ibm.CORBA.ListenerPort</strong>.
<p> Ad esempio, per far in modo che ORB usi la porta
1050, immettere:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.ListenerPort=1050 myapp</pre>
<p>Se viene impostata questa propriet&agrave;, ORB si mette in ascolto appena viene inizializzato.
Altrimenti, inizia solo quando viene richiesto.</p></li></ul>
<a name="wq66"></a>
<h3 id="wq66"><a href="#ToC_60">Autorizzazioni di sicurezza Java 2 per ORB</a></h3>
<p>Quando si utilizza Java 2 SecurityManager, il richiamo di alcuni metodi nelle classi API di CORBA potrebbe comportare l'esecuzione di controlli sulle autorizzazioni, il che
potrebbe comportare una SecurityException. I metodi interessati comprendono quanto segue: </p>
<p></p>
<a name="corbatable"></a>
<table id="corbatable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabella 2. Metodi interessati durante l'utilizzo di Java 2 SecurityManager</caption>
<thead valign="bottom">
<tr>
<th id="wq67" width="32%" align="left">Classe/Interfaccia</th>
<th id="wq68" width="32%" align="left">Metodo </th>
<th id="wq69" width="34%" align="left">Autorizzazione richiesta</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 (Stringa, booleano)</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_get_interface_def</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>invoke</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>send_deferred</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>send_oneway</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">javax.rmi.<br />
PortableRemoteObject<br />
</div></td>
<td headers="wq68">
<p>narrow</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
</tbody>
</table>
<p>Se i programmi di cui si dispone usano alcuni di questi metodi, assicurarsi che siano garantite le autorizzazioni necessarie.</p>
<a name="wq70"></a>
<h3 id="wq70"><a href="#ToC_61">Classi di implementazione ORB</a></h3>
<p>Le classi di implementazione ORB in questo rilascio sono:</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>Questi sono i valori predefiniti, e viene posta all'attenzione l'avvertenza di non impostare
queste propriet&agrave; o di fare riferimento direttamente alle classi di implementazione.  Per la portabilit&agrave;, fare riferimento alle classi API di
CORBA API e non all'implementazione. Questi valori potrebbero essere modificati nei prossimi rilasci. </p>
<a name="rmi-iiop"></a>
<h2 id="rmi-iiop"><a href="#ToC_62">RMI su IIOP</a></h2>
<p>RMI (Remote Method Invocation) Java fornisce un semplice meccanismo per effettuare programmazione distribuita Java. RMI su IIOP (RMI-IIOP) utilizza il protocollo IIOP (Internet Inter-ORB Protocol) standard dell'archietttura CORBA (Common Object Request Broker Architecture) per estendere RMI Java di base ed effettuare comunicazioni. In tal modo, si consente la diretta interazione con qualsiasi altro ORB (CORBA Object Request Brokers), sia che sia implementato in Java che in qualsiasi altro linguaggio.</p>
<p>&Egrave; disponibile la seguente documentazione:</p>
<ul>
<li>Il manuale <a href="http://www.ibm.com/developerworks/java/rmi-iiop">RMI-IIOP Programmer's Guide</a> &egrave; un'introduzione alla scrittura di programmi RMI-IIOP. La guida viene installata quando si installa la documentazione.
<br /></li>
<li>La directory demo  contiene:
<ul>
<li>Un esempio "Hello World" che consente di passare dal protocollo JRMP (Java Remote Method Protocol ) al protocollo IIOP (demo\rmi-iiop\hello)
<br /></li>
<li>Un esempio "Hello World" che interagisce con un programma IDL standard (demo\rmi-iiop\idl)
<br /></li></ul></li>
<li>Il documento <em>Java Language to IDL Mapping</em> &egrave; una specifica tecnica dettagliata di
RMI-IIOP ed &egrave; reperibile presso il seguente sito:
<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">Implementazione di Connection Handler Pool per RMI</a></h2>
<p>Per impostazione predefinita, il pooling dei thread per i gestori di connessioni RMI <em>non</em> &egrave; abilitato.</p>
<p>Per abilitare il pooling delle connessioni implementato a livello del trasporto TCP RMI, impostare l'opzione </p>
<pre class="xmp">-Dsun.rmi.transport.tcp.connectionPool=true (o un qualsiasi valore non nullo) </pre>
<p>Questa versione di Runtime Environment non ha alcuna impostazione che &egrave; possibile utilizzare per limitare il numero di thread nel pool delle connessioni.</p>
<p>Per ulteriori informazioni, consultare il sito Java della Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq71"></a>
<h2 id="wq71"><a href="#ToC_64">Supporto bidirezionale avanzato</a></h2>
<p>IBM SDK comprende il supporto bidirezionale avanzato. Per ulteriori informazioni, consultare
<a href="http://www.ibm.com/developerworks/java/jdk/bidirectional/index.html">http://www-106.ibm.com/developerworks/java/jdk/bidirectional/index.html </a>. Il Javadoc per questo pacchetto bidirezionale &egrave; fornito con il SDK nel file docs/apidoc.zip.</p>
<a name="bigd"></a>
<h2 id="bigd"><a href="#ToC_65">BigDecimal migliorato</a></h2><font color="red"><span id="changed">|</span>
<span id="changed">|</span><p>Da Java 5.0, la classe BigDecimal IBM &egrave; stata adottata dalla Sun come java.math.BigDecimal.
<span id="changed">|</span> IBM non effettua pi&ugrave; manutenzione su com.ibm.math.BigDecimal ed &egrave; contrassegnato come sconsigliato.
<span id="changed">|</span> Si raccomanda di migrare il codice Java esistente in modo che usi java.math.BigDecimal.</p>
<span id="changed">|</span><p>Il nuovo java.math.BigDecimal usa gli stessi metodi di entrambe le precedenti
<span id="changed">|</span>java.math.BigDecimal e com.ibm.math.BigDecimal.  Il codice esistente che usa java.math.BigDecimal
<span id="changed">|</span>continua a funzionare correttamente.</p>
<span id="changed">|</span><p>Per migrare il codice Java esistente in modo che usi la classe java.math.BigDecimal, cambiare l'istruzione di importazione
<span id="changed">|</span>in cima al file java da: <tt class="xph">import com.ibm.math.*;</tt> in <tt class="xph">import java.math,*;</tt>.</p></font>
<a name="wq72"></a>
<h2 id="wq72"><a href="#ToC_66">Supporto del simbolo dell'Euro</a></h2>
<p>IBM SDK e Runtime Environment impostano  l'Euro come valuta predefinita per quelle nazioni dell'EMU
(European Monetary Union) per le date a partire dal 1 gennaio, 2002.</p>
<p>Per usare la valuta nazionale, specificare <tt>-Duser.variant=PREEURO</tt> sulla riga comandi Java.</p>
<p>Se si sta usando la locale UK, Danese o Svedese e si vuole usare
l'Euro, specificare <tt>-Duser.variant=EURO</tt> sulla riga comandi Java.</p>
<a name="jcommchapter"></a>
<h1 id="jcommchapter"><a href="#ToC_67">Uso di Java Communications API (JavaComm)</a></h1>
<p>L'interfaccia delle applicazioni di programmazione (API) di Java Communications
(JavaComm) &egrave; un pacchetto facoltativo fornito per essere usato con Runtime Environment
per Windows. JavaComm viene installato indipendentemente da SDK o da Runtime Environment.</p>
<p>L'API di JavaComm fornisce alle applicazioni Java un modo indipendente dalla piattaforma per eseguire comunicazioni
tra porte seriali e parallele per tecnologie come
voice mail, fax e smartcard. Dopo aver scritto comunicazioni per porte seriali o parallele per le applicazioni,
&egrave; possibile includere quei file nelle proprie applicazioni.</p>
<p>L'API di Java Communications supporta le porte seriali di Electronic Industries Association
(EIA)-232 (RS232) e le porte parallele dell'Institute of Electrical and Electronics
Engineers (IEEE) 1284 ed &egrave; supportata su sistemi con
IBM Versione 5.0 Runtime Environment.</p>
<p>Con l'utilizzo di Java Communications API, &egrave; possibile:</p>
<ul>
<li>Elencare le porte su un sistema</li>
<li>Aprire ed esigere la propriet&agrave; delle porte</li>
<li>Risolvere il problema della propriet&agrave; della porta tra applicazioni che usano l'API di Java Communications.</li>
<li>Eseguire controlli sincroni e asincroni su porte I/O attraverso la notifica degli eventi.</li>
<li>Ricevere eventi in stile bean ce descrivono i cambi di stato della porta.</li></ul>
<a name="instcomm"></a>
<h2 id="instcomm"><a href="#ToC_68">Installazione delle API di Java Communications</a></h2>
<p>Accertarsi che una copia di SDK o di Runtime Environment venga installata prima di installare l'API di
Java Communications.</p>
<p>Per installare l'API di Java Communications da un file zip :</p>
<ol type="1">
<li>Inserire il file zip di Java Communications API, ibm-java2-javacomm-50-win-i386.zip,
nella directory in cui &egrave; installato il SDK o Runtime Environment. Se l'installazione era stata eseguita nella directory predefinita,
la directory sar&agrave; C:\Program Files\IBM\Java50\.</li>
<li>Decomprimere il file. Questi file vengono estratti in questo modo: 
<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 durante l'installazione di Runtime
Environment &egrave; stata accettata la directory predefinita, il file comm.jar si trover&agrave; in C:\Program Files\IBM\Java50\jre\lib\ext.</p>
<p>Se il file ZIP viene decompresso in un'altra
directory, i file verranno memorizzati nella stessa struttura di
directory, mentre C:\Program Files\IBM\Java50\ viene sostituita dalla directory in cui era stato decompresso il file.</p> </li></ol>
<a name="wq74"></a>
<h2 id="wq74"><a href="#ToC_69">Configurazione di Java Communications API</a></h2>
<p>Dopo aver installato Java Communications API, bisogna:</p>
<ul>
<li>Cambiare la modalit&agrave; di accesso delle porte seriali e parallele.</li>
<li>Impostare il PATH, se l'impostazione non &egrave; stata effettuata durante l'installazione di Java. Consultare <a href="#pathcons">Impostazione di PATH</a>.</li></ul>
<a name="wq75"></a>
<h2 id="wq75"><a href="#ToC_70">Limitazioni di stampa con Java Communications API</a></h2>
<p>Quando si stampa con Java Communications API, potrebbe essere necessario premere
"<strong>Alimentazione fogli</strong>" o "<strong>Continua</strong>" o qualcosa di simile sulla stampante.</p>
<a name="wq76"></a>
<h2 id="wq76"><a href="#ToC_71">Disinstallazione di Java Communications API</a></h2>
<p>Per disinstallare Java Communications API, cancellare i seguenti file dalla directory in cui &egrave; stato installato
il Runtime Environment:</p>
<ul>
<li>jre\lib\ext\comm.jar</li>
<li>jre\bin\ibmcomm.dll</li>
<li>jre\lib\javax.comm.properties</li>
<li>docs\javacomm\License.html</li></ul>
<p>Per impostazione predefinita, Runtime
Environment viene installato in C:\Program Files\IBM\Java50\.</p>
<a name="wq77"></a>
<h2 id="wq77"><a href="#ToC_72">Documentazione di Java Communications API</a></h2>
<p>E' possibile trovare trovare la documentazione API ed esempi di Java Communications API sul sito web della
Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq78"></a>
<h1 id="wq78"><a href="#ToC_73">Sviluppo di applicazioni Java</a></h1>
<a name="wq79"></a>
<h2 id="wq79"><a href="#ToC_74">Utilizzo del plug-in di Java</a></h2>
<p>Il plug-in Java &egrave; un plug-in del browser Web. Se si utilizza il plug-in Java, &egrave; possibile ignorare il JVM
predefinito del browser Web e utilizzare il Runtime Environment desiderato per eseguire gli applet o i bean nel browser.</p>
<p>Occorre consentire gli applet per terminare il caricamento in modo da impedire al browser di rimanere 'bloccato'.
Ad esempio, se si utilizza il pulsante <strong>Indietro</strong> e quindi quello <strong>Avanti</strong> mentre si sta caricando un applet, &egrave; possibile che le pagine HTML non possano essere caricate.</p>
<p>La documentazione sul plug-in Java &egrave; resa disponibile dalla Sun presso il seguente sito:
<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">Browser supportati</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">Tabella 3. Browser supportati da Java Plug-in</font></caption>
<thead valign="bottom">
<tr>
<th id="wq80" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Sistema operativo</font></th>
<th id="wq81" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Internet Explorer</font></th>
<th id="wq82" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Netscape</font></th>
<th id="wq83" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Mozilla</font></th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows 2000</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">5.5 SP2, 6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows XP</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows Server 2003</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
</tbody>
</table><span id="changed">|</span><p class="indatacontent">Si noti che Internet Explorer 5.01, il browser predefinito su Windows 2000,
<span id="changed">|</span>non &egrave; supportato.</font></p>
<a name="wq84"></a>
<h3 id="wq84"><a href="#ToC_76">Supporto DOM (Document Object Model) comune</a></h3>
<p>A causa di limitazioni in alcuni browser, potrebbe non essere possibile implementare tutte le funzioni del pacchetto org.w3c.dom.html. </p>
<ul>
<li>sun.plugin.dom.exception.NotSupportedException ricevuto per alcune di queste funzioni.</li>
<li>sun.plugin.dom.exception.InvalidStateException ricevuto quando il browser
non supporta una funzione particolare.</li></ul>
<a name="wq85"></a>
<h3 id="wq85"><a href="#ToC_77">Utilizzo dei parametri DBCS</a></h3>
<p>Il plug-in Java supporta i caratteri a doppio byte (ad esempio il Cinese tradizionale BIG-5, il Coreano e il Giapponese) come parametri per le tag <tt class="xph">&lt;APPLET></tt>,<tt class="xph">  &lt;OBJECT></tt> e <tt class="xph">&lt;EMBED></tt>. E' necessario selezionare la codifica caratteri corretta per il documento HTML in modo che il plug-in Java possa analizzare il parametro. Specificare la codifica dei caratteri per il documento HTML utilizzando il tag <tt class="xph">&lt;META></tt> nella sezione <tt class="xph">&lt;HEAD></tt>, come riportato
di seguito:</p>
<pre class="xmp">&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"></pre><p class="indatacontent">Questo esempio indica al browser di utilizzare la codifica caratteri Cinese BIG-5 per l'analisi del file HTML. Tutti i parametri vengono passati al plug-in Java in modo corretto.
Tuttavia, alcune versioni meno recenti dei browser potrebbero non interpretare il tag correttamente. In questo caso, &egrave; possibile forzare il browser in modo da ignorare questo tag, ma potrebbe essere necessario modificare manualmente la codifica.</p>
<p>E' possibile specificare quale codifica utilizzare per l'analisi del file HTML: </p>
<ul>
<li><strong>Internet Explorer 5/6</strong> Menu Visualizza -> Codifica</li>
<li><strong>Netscape 4:</strong> Menu Visualizza -> Serie di caratteri </li>
<li><strong>Netscape 6:</strong> Menu Visualizza -> Codifica di caratteri</li></ul>
<a name="wq86"></a>
<h2 id="wq86"><a href="#ToC_78"> Utilizzo di Web Start</a></h2>
<p>E' possibile usare Java Web Start per distribuire le applicazioni Java.  Web Start consente agli utenti di lanciare e
di gestire le applicazioni direttamente dal Web. L'uso di Java
Web Start consente di avviare facilmente le applicazioni dal Web, assicurandosi che si sta usando la versione pi&ugrave; recente ed eliminando
le procedure di installazione o di aggiornamento.
 Java Web Start elimina la necessit&agrave; di scaricare ed installare il software, bypassando le opzioni
di installazione.</p>
<p><font color="red"><span id="changed">|</span>In aggiunta a java-vm-args documentata su <a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources</a>, Web Start supporta <strong>-Xgcpolicy</strong> per l'impostazione della politica di raccolta dei dati obsoleti.</font></p>
<p>Per informazioni sui browser supportati da Web Start, consultare <a href="#suppbrowse">Browser supportati</a>.</p>
<p>Per ulteriori informazioni su Web Start, consultare: <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>. Per ulteriori informazioni sulla distribuzione delle applicazioni, consultare: <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">Esecuzione di Web Start</a></h3>
<p>E' possibile richiamare Web Start in tre modi:</p>
<ol type="1">
<li>Selezionare un collegamento su una pagina Web che fa riferimento al file .jnlp.</li>
<li>Dalla riga comandi, immettere
<tt class="xph">javaws &lt;URL></tt>, dove <tt class="xph">&lt;URL></tt> &egrave; l'ubicazione di un file .jnlp.</li>
<li><font color="red"><span id="changed">|</span>Se &egrave; gi&agrave; stato utilizzato Java Web Start per aprire l'applicazione,
<span id="changed">|</span>eseguire javaws dalla directory jre\bin, per avviare
<span id="changed">|</span>Java Application Cache Viewer.</font></li></ol>
<p>Una volta scaricata l'applicazione, questa viene memorizzata nella cache delle applicazioni Java. Se si accede di nuovo all'applicazione, Java Web Start scarica una versione pi&ugrave; recente dell'applicazione, se
disponibile, ed utilizza la versione nella cache nel caso che non vi siano versioni pi&ugrave; recenti.</p>
<p>Se si verifica un errore in un file .jnlp (quale un nome tag non valido), Web Start
non funziona e non visualizza alcun messaggio di errore.</p>
<a name="wq88"></a>
<h2 id="wq88"><a href="#ToC_80">Invio di applicazioni Java</a></h2>
<p>  Un'applicazione Java, diversamente da un applet Java, non pu&ograve; fare affidamento su browser Web
per l'installazione e i servizi runtime. Quando si invia un'applicazione Java, il pacchetto
software probabilmente &egrave; formato dalla parti seguenti: </p>
<ul>
<li>La classe, la risorsa e i file di dati
<br /></li>
<li>Una procedura o programma di installazione
<br /></li></ul>
<p>Per eseguire l'applicazione, occorre Runtime Environment per Windows.
 Il software SDK per Windows contiene un Runtime Environment. Tuttavia, non &egrave; possibile supporre che il software
SDK per Windows sia installato. </p>
<p>La licenza software SDK per Windows <strong>non</strong> consente di ridistribuire alcun file SDK con l'applicazione.
Occorre assicurarsi che sia installata una versione su licenza di SDK per Windows
sulla macchina di destinazione.</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">Condivisione di dati di classe tra JVM</a></h1>
<span id="changed">|</span><p>L'IBM Virtual Machine (VM) consente di condividere classi bootstrap e delle applicazioni tra VM, memorizzandoli in una cache della memoria condivisa. La condivisione delle classi riduce il consumo totale della memoria virtuale quando pi&ugrave; VM condividono una cache. La condivisione di classi riduce inoltre il tempo di avvio per un VM dopo la creazione della cache. La cache della classe condivisa &egrave; indipendente da qualsiasi VM attivo e persiste oltre la durata del VM che ha avviato la cache.</p>
<span id="changed">|</span><a name="wq89"></a>
<span id="changed">|</span><h2 id="wq89"><a href="#ToC_82">Panoramica sulla condivisione di classi</a></h2>
<span id="changed">|</span><p>IBM SDK consente di condividere il maggior numero di classi possibile ed &egrave; trasparente all'utente.</p>
<span id="changed">|</span><a name="wq90"></a>
<span id="changed">|</span><h3 id="wq90"><a href="#ToC_83">Contenuto della cache</a></h3>
<span id="changed">|</span><p>La cache delle classi condivise contiene dati e metadati di classe statiche di sola lettura che descrivono le classi. Qualsiasi VM pu&ograve; leggere o aggiornare la cache. I VM che sono in condivisione devono essere allo stesso livello di release. Prestare molta attenzione
<span id="changed">|</span>se viene utilizzata la modifica del bytecode di avvio. (Consultare <a href="#runtimebytecode">Modifiche bytecode al runtime</a>.)</p>
<span id="changed">|</span><a name="wq91"></a>
<span id="changed">|</span><h3 id="wq91"><a href="#ToC_84">Aggiornamento dinamico della cache</a></h3>
<span id="changed">|</span><p>Poich&eacute; la cache delle classi condivise persiste oltre la durata di qualsiasi VM, la cache viene aggiornata in modo dinamico per riflettere tutte le modifiche che potrebbero essere apportate ai JAR o alle classi nel sistema di file. L'aggiornamento dinamico rende la cache trasparente all'applicazione che la utilizza.</p>
<span id="changed">|</span><a name="wq92"></a>
<span id="changed">|</span><h3 id="wq92"><a href="#ToC_85">Abilitazione della condivisione di classi</a></h3>
<span id="changed">|</span><p>Abilitare la condivisione di classi con l'opzione <strong>-Xshareclasses</strong>  quando si avvia un VM,
<span id="changed">|</span>affinch&eacute; il VM si colleghi ad una cache esistente oppure ne crei una se non esiste. Tutte le classi bootstrap e delle applicazioni caricate dal VM vengono condivise per impostazione predefinita. Classloader personalizzati effettuano automaticamente la condivisione se estendono il classloader delle applicazioni, altrimenti, devono utilizzare le API di Java Helper fornite con il VM per accedere alla cache. (Consultare <a href="#adaptingclassloaders">Adattamento dei classloader personalizzati per la condivisione di classi</a>.)</p>
<span id="changed">|</span><a name="wq93"></a>
<span id="changed">|</span><h3 id="wq93"><a href="#ToC_86">Sicurezza della cache</a></h3>
<span id="changed">|</span><p>L'accesso alla cache delle classi condivise &egrave; limitato dalle autorizzazioni del sistema operativo e da quelle della sicurezza. Solo un programma di caricamento classi con classi di condivisione registrate pu&ograve; aggiungere classi alla cache delle classi condivise. Se viene installato un Java SecurityManager, ai ClassLoader, esclusi quelli di estensione, applicazione e bootstrap predefiniti, dovr&agrave; essere concessa l'autorizzazione alla condivisione di classi aggiungendo
<span id="changed">|</span>SharedClassPermissions al file java.policy. (Consultare <a href="#usingsharedclasspermissions">Utilizzo di SharedClassPermissions</a>.)
<span id="changed">|</span>RuntimePermission "createClassLoader" limita la creazione di nuovi ClassLoader e di conseguenza anche l'accesso alla cache.</p>
<span id="changed">|</span><a name="wq94"></a>
<span id="changed">|</span><h3 id="wq94"><a href="#ToC_87">Intervallo di tempo valido della cache</a></h3>
<span id="changed">|</span><p>Su un sistema possono esistere pi&ugrave; cache e sono specificate per
<span id="changed">|</span>nome come un'opzione secondaria del comando <strong>-Xshareclasses</strong>. Una VM pu&ograve; collegarsi ad una sola cache per volta. Viene specificata la dimensione della cache all'avvio utilizzando <strong>-Xscmx&lt;n>[k|m|g]</strong>, ma tale dimensione &egrave; quindi fissata per la durata della cache. Le cache esistono finch&eacute; non vengono distrutte esplicitamente utilizzando un'opzione secondaria del comando
<span id="changed">|</span><strong>-Xshareclasses</strong> oppure finch&eacute; il sistema non viene riavviato. </p>
<span id="changed">|</span><a name="wq95"></a>
<span id="changed">|</span><h3 id="wq95"><a href="#ToC_88">Programmi di utilit&agrave; della cache</a></h3>
<span id="changed">|</span><p>Tutti i programmi di utilit&agrave; della cache sono opzioni secondarie del comando <strong>-Xshareclasses</strong>. Utilizzare <strong>-Xshareclasses:help</strong> per consultare un elenco di opzioni secondarie disponibili.</p>
<span id="changed">|</span><a name="sharedclassesxoptions"></a>
<span id="changed">|</span><h2 id="sharedclassesxoptions"><a href="#ToC_89">Utilizzo di opzioni della riga comandi per la condivisione di classi</a></h2>
<span id="changed">|</span><p>La condivisione di classi &egrave; abilitata e configurata utilizzando le opzioni <strong>-Xshareclasses</strong> e <strong>-Xscmx</strong> della riga comandi.</p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>-Xscmx</strong>&lt;<em>dimensione</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Specifica la dimensione della cache. Questa opzione si applica solo se viene creata cache e non esiste un'altra cache con lo stesso nome.  La dimensione predefinita della cache dipende dalla piattaforma.
<span id="changed">|</span>&Egrave; possibile scoprire il valore della dimensione utilizzato aggiungendo <strong>-verbose:sizes</strong> come argomento di riga comandi. La dimensione minima della cache &egrave; 4 kB. Anche la dimensione massima della cache dipende dalla piattaforma. (Consultare <a href="#cachesizelimits">Limiti di dimensioni della cache</a>.)</li></ul></li>
<span id="changed">|</span><li><strong>-Xshareclasses</strong>:&lt;<em>opzionesecondaria1</em>>[,&lt;<em>opzionesecondaria2</em>>...]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Abilita la condivisione di classi. Pu&ograve; avere una serie di opzioni secondarie, alcune delle quali sono programmi di utilit&agrave; della cache. I programmi di utilit&agrave; della cache effettuano l'operazione richiesta sulla cache specificata ma senza l'avvio del VM. &Egrave; possibile combinare pi&ugrave; opzioni secondarie, separate da virgole, ma i programmi di utilit&agrave; della cache si escludono a vicenda.</li></ul>&Egrave; possibile utilizzare le seguenti opzioni secondarie  con l'opzione <strong>-Xshareclasses</strong>, ad esempio, <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>Visualizza un elenco di tutte le opzioni della riga comandi.</li></ul></li>
<span id="changed">|</span><li><strong>name=</strong>&lt;<em>nome</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Collega una cache di un nome specificato, creando una cache se non esiste gi&agrave;. Utilizzare l'opzione del programma di utilit&agrave; <strong>listAllCaches</strong> per visualizzare quale
<span id="changed">|</span>cache sono disponibili al momento. Se non si specifica un nome, viene utilizzato il nome predefinito
<span id="changed">|</span>"sharedcc_" viene combinato con il nome utente per creare il nome della cache. </li></ul></li>
<span id="changed">|</span><li><strong>verbose</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Questa opzione fornisce un'output dettagliato sull'attivit&agrave; di I/O della cache, elencando le informazioni sulle classi che vengono individuate e memorizzate. A ciascun classloader viene assegnato un ID univoco (il programma di caricamento di avvio &egrave; sempre 0) e l'output visualizza la gerarchia dei classloader attivi, dove i
<span id="changed">|</span>classloader devono chiedere ai parent una classe prima di poterla caricare. &Egrave; normale che vi siano molte richieste non riuscite; questo comportamento &egrave; previsto per la gerarchia dei classloader. Si noti che l'opzione standard <strong>-verbose:class</strong> abilita anche l'output verboso di condivisione classi se la condivisione delle classi &egrave; abilitata. </li></ul></li>
<span id="changed">|</span><li><strong>modified=</strong>&lt;<em>contenuto modificato</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Questa opzione &egrave; richiesta se &egrave; installato un agente bytecode che possa modificare
<span id="changed">|</span>bytecode durante il runtime. Se non si specifica questa opzione e viene installato un agente bytecode, non vengono individuate o memorizzate classi nella cache. <em>&lt;contenuto modificato</em> &egrave; un descrittore scelto dall'utente, ad esempio,
<span id="changed">|</span>"myModification1". In tal modo viene partizionata la cache, affinch&eacute; solo i JVM che utilizzano il contesto
<span id="changed">|</span>myModification1 possano condividere le stesse classi. Ad esempio, se si esegue "HelloWorld"
<span id="changed">|</span>con un contesto di modifica e quindi lo si esegue di nuovo con una contesto di modifica differente, verranno visualizzate tutte le classi memorizzate due volte nella cache.</li></ul></li>
<span id="changed">|</span><li><strong>destroy</strong> (opzione di utilit&agrave;)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Distrugge una cache utilizzando il nome specificato nell'opzione secondaria <strong>name=</strong>&lt;<em>nome</em>>. Se non viene specificato il nome, la cache predefinita viene distrutta. Una cache pu&ograve; essere distrutta solo se sono chiusi tutti i VM che la utilizzano e l'utente ha un livello di autorizzazione  sufficiente.</li></ul></li>
<span id="changed">|</span><li><strong>destroyAll</strong> (opzione di utilit&agrave;)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Cerca di distruggere tutte le cache disponibili agli utenti. Una cache pu&ograve; essere distrutta solo se sono chiusi tutti i VM che la utilizzano e l'utente ha un livello di autorizzazione  sufficiente.</li></ul></li>
<span id="changed">|</span><li><strong>expire=</strong>&lt;<em>tempo espresso in minuti</em>>
<span id="changed">|</span>(opzione di utilit&agrave;)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Distrugge tutte le cache che non sono utilizzate nel periodo di tempo specificato.</li></ul></li>
<span id="changed">|</span><li><strong>listAllCaches</strong> (opzione di utilit&agrave;)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Fornisce un elenco di tutte le cache sul sistema, indicando se sono in uso e quando sono state utilizzate l'ultima volta. </li></ul></li>
<span id="changed">|</span><li><strong>printStats</strong> (opzione di utilit&agrave;)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Visualizza informazioni statistiche di riepilogo sulla cache specificata nell'opzione secondaria <strong>name=</strong>&lt;<em>nome</em>>. Se non viene specificato il nome, vengono visualizzate le informazioni sulla cache predefinita. Le informazioni pi&ugrave; utili visualizzate sono relative a quanto &egrave; piena la cache e a quante classi contiene. Si noti che le classi "stale" sono classi aggiornate sul sistema di file e che la cache ha quindi contrassegnato come "stale". Le classi stale non vengono eliminate dalla cache. Consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> per ulteriori informazioni.</li></ul></li>
<span id="changed">|</span><li><strong>printAllStats</strong> (opzioni di utilit&agrave;)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Visualizza informazioni dettagliate sul contesto della cache specificata nell'opzione secondaria <strong>name=</strong>&lt;<em>nome</em>>.
<span id="changed">|</span>Se non viene specificato il nome, vengono visualizzate le informazioni sulla cache predefinita.
<span id="changed">|</span>Ogni classe viene elencata in ordine cronologico con un riferimento alla posizione dalla quale &egrave; stata caricata.  Consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> per ulteriori informazioni.</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">Creazione, popolamento ed eliminazione di una cache</a></h2>
<span id="changed">|</span><p>Per abilitare la condivisione di classi, aggiungere <strong>-Xshareclasses[:name=&lt;nome</strong>
<span id="changed">|</span>alla riga comandi dell'applicazione. La VM si collegher&agrave; ad una cache esistente con il nome specificato oppure creer&agrave; una nuova cache con quel nome. Se &egrave; stata creata una nuova cache, in essa verranno inserite tutte le classi bootstrap e delle applicazioni caricate finch&eacute; non si riempie. Se vengono avviati contemporaneamente due o pi&ugrave; VM, popoleranno tutti contemporaneamente la cache.  </p>
<span id="changed">|</span><p>Per verificare che la cache sia stata creata, eseguire <tt class="xph">java -Xshareclasses:listAllCaches</tt>. Per verificare quante classi sono state memorizzate e quanti dati delle classi, eseguire <tt class="xph">java -Xshareclasses:[name=&lt;nome>],printStats</tt>. Tali programmi di utilit&agrave; possono essere eseguiti dopo che il VM dell'applicazione &egrave; stato terminato oppure in un'altra finestra comandi.</p>
<span id="changed">|</span><p>Per visualizzare le classi caricate dalla cache oppure memorizzate nella cache, aggiungere <tt class="xph">-Xshareclasses:[name=&lt;nome>],verbose</tt> alla riga comandi dell'applicazione.</p>
<span id="changed">|</span><p>Per eliminare la cache creata, eseguire <tt class="xph">java -Xshareclasses:[name=&lt;nome>],delete</tt>.  Occorre eliminare le cache solo se contengono molte classi stale oppure se la cache &egrave; piena e si desidera crearne una pi&ugrave; grande.  </p>
<span id="changed">|</span><p>Si consiglia di regolare la dimensione della cache per la specifica applicazione utilizzata, perch&eacute; &egrave; improbabile che l'impostazione predefinita sia la dimensione ottimale. Il modo migliore per determinare la dimensione ottimale per la cache consiste nello specificare una cache di grandi dimensioni (utilizzando <strong>-Xscmx</strong>), eseguire l'applicazione e quindi utilizzare printStats per stabilire la quantit&agrave; di dati di classe memorizzati. Aggiungere una piccola quantit&agrave; al valore mostrato in printStats. Si noti che poich&eacute; le classi possono essere caricare in qualsiasi momento della durata della VM, &egrave; consigliabile eseguire questa analisi una volta terminata l'applicazione. Tuttavia, una cache completa non ha un impatto negativo sulle prestazioni o sulle funzionalit&agrave; delle VM ad essa collegate, pertanto &egrave; possibile impostare una dimensione della cache pi&ugrave; piccola di quella richiesta.</p>
<span id="changed">|</span><p>Se una cache si riempie, viene emesso un messaggio sulla riga comandi di tutte le VM che utilizzano tale cache e le VM caricheranno ulteriori classi nella propria memoria processi. Le classi in una cache piena possono essere condivise, ma una cache piena &egrave; di sola lettura e non pu&ograve; essere aggiornata con nuove classi. </p>
<span id="changed">|</span><a name="wq97"></a>
<span id="changed">|</span><h2 id="wq97"><a href="#ToC_91">Prestazioni e consumo della memoria</a></h2>
<span id="changed">|</span><p>La condivisione di classi &egrave; particolarmente utile su sistemi che utilizzano pi&ugrave; VM con un codice simile;  i traggono vantaggio dal consumo ridotto di memoria virtuale. Inoltre, &egrave; utile su sistemi che avviano e chiudono VM di frequente, che traggono vantaggio dal miglioramento del tempo di avvio. </p>
<span id="changed">|</span><p>Il sovraccarico per creare e popolare una nuova cache &egrave; minimo. Il consumo per il tempo di avvio per una singola VM &egrave; compreso tra 0 e 5%, a seconda di quante classi vengono caricate. Il miglioramento del tempo di avvio del VM con una cache popolata &egrave; di solito tra il 10% e il 40%, a seconda del sistema operativo e del numero di classi caricate. Pi&ugrave; VM in esecuzione contemporaneamente mostrano maggiori vantaggi del tempo di avvio generale.</p>
<span id="changed">|</span><p>Quando si esegue l'applicazione con la condivisione di classi, &egrave; possibile utilizzare gli strumenti del sistema operativo per visualizzare la riduzione del consumo della memoria virtuale.</p>
<span id="changed">|</span><a name="wq98"></a>
<span id="changed">|</span><h2 id="wq98"><a href="#ToC_92">Limitazioni e considerazioni sull'uso della condivisione di classi</a></h2>
<span id="changed">|</span><a name="cachesizelimits"></a>
<span id="changed">|</span><h3 id="cachesizelimits"><a href="#ToC_93">Limiti di dimensioni della cache</a></h3>
<span id="changed">|</span><p>La cache massima teorica &egrave; 2 GB. La cache viene limitata dai seguenti fattori:</p>
<span id="changed">|</span><p></p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li>Spazio su disco disponibile. Viene creato un file su disco per memorizzare i dati delle classi. Questa directory
<span id="changed">|</span>&egrave; in genere impostata su C:\Documents and Settings\&lt;nomeutente>\Application Data\.
<span id="changed">|</span>Questo file viene eliminato ogni volta che viene riavviato Windows.</li>
<span id="changed">|</span><li>Spazio di indirizzo virtuale disponibile. Dal momento che lo spazio di indirizzo virtuale di un processo viene condiviso tra la cache di classi condivise e l'heap
<span id="changed">|</span>Java, l'aumento della dimensione massima dell'heap Java riduce la dimensione della cache delle classi condivise che &egrave; possibile creare.</li></ul>
<span id="changed">|</span><a name="runtimebytecode"></a>
<span id="changed">|</span><h3 id="runtimebytecode"><a href="#ToC_94">Modifiche bytecode al runtime</a></h3>
<span id="changed">|</span><p>Qualsiasi VM che utilizza un agente JVMTI, che pu&ograve; modificare bytecode, non &egrave; in grado di condividere le classi a meno che non si utilizzi l'opzione secondaria modified=&lt;contesto_modificato> da riga comandi (consultare la sezione relativa). Il contesto modificato &egrave; un descrittore specificato dall'utente che descrive il tipo di modifica da effettuare. Tutti i VM che utilizzano un contesto modificato specificato devono modificare il
<span id="changed">|</span>bytecode in un modo ripetibile e prevedibile per ciascuna classe, cos&igrave; che le classi memorizzate nella cache avranno le modifiche previste quando verranno caricate da un altro VM. Ogni modifica deve essere prevedibile poich&eacute; le classi caricate da una cache di classi condivise non pu&ograve; essere modificata di nuovo dall'agente. Si noti che bytecode modificati e non modificati possono essere memorizzati nella stessa cache. Consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> per ulteriori informazioni su questo argomento.</p>
<span id="changed">|</span><a name="wq99"></a>
<span id="changed">|</span><h3 id="wq99"><a href="#ToC_95">Limitazioni del sistema operativo</a></h3>
<span id="changed">|</span><p>Per sistemi operativi che possono eseguire applicazioni sia a 32 bit che a 64 bit, non &egrave; consentita la condivisione di classi tra VM a 32 bit e quelli a 64 bit.
<span id="changed">|</span>L'opzione secondaria <strong>listAllCaches</strong> elencher&agrave; le cache a 31 bit e quelle a 64 bit, a seconda del modo di indirizzo del VM utilizzato.</p>
<span id="changed">|</span><p>La cache delle classi condivise richiede spazio su disco per memorizzare le informazioni di identificazione relative alle cache esistenti sul sistema. Queste informazioni vengono posizionate nella directory del profilo utente.  Se la directory delle informazioni di identificazione viene eliminata, il VM non pu&ograve; identificare le classi condivise sul sistema e devono ricreare la cache. </p>
<span id="changed">|</span><p>Le autorizzazioni per l'accesso a una cache delle classi condivise vengono applicate dal sistema operativo. Se un nome della cache non &egrave; specificato, il nome utente viene
<span id="changed">|</span>aggiunto al nome predefinito cos&igrave; che pi&ugrave; utenti sullo stesso sistema creino la loro cache per impostazione predefinita.</p>
<span id="changed">|</span><a name="usingsharedclasspermissions"></a>
<span id="changed">|</span><h3 id="usingsharedclasspermissions"><a href="#ToC_96">Utilizzo di SharedClassPermissions</a></h3>
<span id="changed">|</span><p>Se SecurityManager viene utilizzato insieme alla condivisione delle classi e l'applicazione in esecuzione utilizza propri classloader, a tali devono essere concesse autorizzazioni SharedClassPermissions prima di poter condividere le classi. Aggiungere SharedClassPermissions
<span id="changed">|</span>al file java.policy utilizzando al nome classe ClassLoader (i caratteri jolly sono consentiti)
<span id="changed">|</span>e "read", "write" o "read,write" per determinare l'accesso concesso.
<span id="changed">|</span>Ad esempio:</p>
<span id="changed">|</span><pre class="xmp">permission com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*", "read,write";</pre><p class="indatacontent">Se un ClassLoader non ha l'autorizzazione SharedClassPermission corretta e tenta di condividere classi, viene inviata un'eccezione AccessControlException.  Non &egrave; possibile modificare o ridurre le autorizzazioni dei classloader di estensione, applicazione o bootstrap predefiniti.</p>
<span id="changed">|</span><a name="adaptingclassloaders"></a>
<span id="changed">|</span><h2 id="adaptingclassloaders"><a href="#ToC_97">Adattamento dei classloader personalizzati per la condivisione di classi</a></h2>
<span id="changed">|</span><p>Pi&ugrave; applicazioni Java utilizzeranno i propri classloader del VM oppure avranno classloader personalizzati
<span id="changed">|</span>che estendono java/net/URLClassLoader. Le applicazioni che utilizzano tali classloader potranno condividere automaticamente le classi bootstrap e delle applicazioni.
<span id="changed">|</span>I classloader personalizzati, che non estendono java/net/URLClassLoader, richiedono che le modifiche utilizzino la condivisione di classi.  A tutti i classloader personalizzati dovranno essere concesse autorizzazioni SharedClassPermissions se viene utilizzato un SecurityManager. Consultare. <a href="#usingsharedclasspermissions">Utilizzo di SharedClassPermissions</a>. IBM fornisce svariate interfacce Java per diversi tipi di classloader personalizzati, che consentono ai classloader di individuare e memorizzare classi nella cache di classi condivise.
<span id="changed">|</span>Tali classi si trovano nel pacchetto
<span id="changed">|</span>com.ibm.oti.shared. Il Javadoc per questo pacchetto &egrave; fornito con il SDK nel file docs/apidoc.zip.
<span id="changed">|</span>Consultare <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
<span id="changed">|</span>Guide</a>  per ulteriori informazioni su queste interfacce.</p></font>
<a name="wq100"></a>
<h1 id="wq100"><a href="#ToC_98">Servizio e supporto per fornitori di software indipendente</a></h1>
<p> Se si ha diritto ai servizi per il codice del programma conforme a IBM Solutions Developer Program, rivolgersi a IBM Solutions Developer Program
attraverso il normale metodo di accesso oppure presso il seguente sito Web: <a href="http://www.ibm.com/partnerworld/">http://www-1.ibm.com/partnerworld/</a>.</p>
<p>Se &egrave; stato acquistato un contratto di servizio (cio&egrave; Personal Systems Support Line IBM
oppure un servizio equivalente nel vostro paese), i termini e le condizioni di tale contratto di servizio determinano a quali servizi si ha diritto, se disponibili, rispetto al programma.</p>
<a name="wq101"></a>
<h1 id="wq101"><a href="#ToC_99">Accessibilit&agrave;</a></h1>
<p>Le guide per l'utente fornite con SDK e Runtime Environment sono state testate usando dei lettori di schermi.  E' possibile usare uno screen reader come Home
Page Reader o JAWS con queste guide.</p>
<p>Per cambiare le dimensioni dei font nelle guide, usare la funzione fornita dal
browser, che di solito si trova nel menu <strong>Visualizza</strong>.</p>
<p>Per gli utenti che richiedono la navigazione tramite tastiera, una descrizione delle sequenze di tasti per le applicazioni Swing &egrave; reperibile in "Swing Key Bindings" all'indirizzo Web<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">Accessibilit&agrave; iKeyman</a></h2>
<p><font color="red"><span id="changed">|</span>Oltre alla GUI, il tool iKeyman fornire il tool di riga comandi <strong>IKEYCMD</strong>, che ha le stesse funzioni della GUI. <strong>IKEYCMD</strong> consente di gestire chiavi, certificati e richieste di
<span id="changed">|</span>certificato. E' possibile chiamare <strong>IKEYCMD</strong> dagli script shell nativi e dai programmi che devono essere usati quando le
<span id="changed">|</span>applicazioni hanno bisogno di aggiungere interfacce personalizzate al certificato e alle attivit&agrave; di gestione chiavi. <strong>IKEYCMD</strong> pu&ograve; creare file di database per tutti i tipi che
<span id="changed">|</span>iKeyman supporta al momento. <strong>IKEYCMD</strong> pu&ograve; inoltre creare richieste di certificati, importare
<span id="changed">|</span>certificati firmati CA e gestire certificati auto-firmati. </font></p>
<p>Per eseguire un comando <strong>IKEYCMD</strong>, immettere:</p>
<pre class="xmp">java [-Dikeycmd.properties=&lt;properties file>]com.ibm.gsk.ikeyman.ikeycmd
&lt;oggetto> &lt;azione> [opzioni]</pre><p class="indatacontent">dove:</p>
<dl>
<dt class="bold">&lt;oggetto></dt>
<dd>&egrave; uno dei seguenti:
<dl>
<dt class="bold">-keydb</dt>
<dd>Azioni intraprese sul database di chiavi (un file del database di chiavi CMS, un file
keyring WebDB oppure di classe SSLight)
</dd>
<dt class="bold">-cert</dt>
<dd>Azioni da eseguire su un certificato in un database di chiavi 
</dd>
<dt class="bold">-certreq</dt>
<dd>Azioni da eseguire a una richiesta di certificato in un database di chiavi 
</dd>
<dt class="bold">-versione</dt>
<dd>Visualizza informazioni sulla versione per <strong>IKEYCMD</strong>
</dd>
<dt class="bold">-help</dt>
<dd>Visualizza l'aiuto per i richiami <strong>IKEYCMD</strong>.
</dd>
</dl>
</dd>
<dt class="bold">&lt;azione></dt>
<dd><font color="red"><span id="changed">|</span>L'azione specificata intrapresa sull'oggetto. Per visualizzare le azioni disponibili per un oggetto, richiamare <strong>IKEYCMD</strong> passando solo l'oggetto come argomento. Viene visualizzata la guida sensibile al contesto che mostra le azioni disponibili per l'oggetto.</font>
</dd>
<dt class="bold">-Dikeycmd.properties</dt>
<dd>Specifica il nome del file facoltativo delle propriet&agrave; da usare per questo richiamo di Java. Un file predefinito delle propriet&agrave;,
ikeycmd.properties, &egrave; fornito come campione da modificare e usare da qualunque applicazione Java.
</dd>
</dl>
<a name="wq102"></a>
<div class="notetitle" id="wq102">Nota:</div>
<div class="notebody">Le parole chiave dell'oggetto e dell'azione devono trovarsi in una sequenza specificata.
Tuttavia, le opzioni non sono legate alla posizione e possono essere in una sequenza qualunque, purch&eacute; vengano
specificate come opzione e coppia di operandi.</div>
<p>Per ulteriori informazioni, consultare la guida di iKeyman all'indirizzo: <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">Tastiera trasversale di componenti JComboBox in Swing</a></h2>
<p>Se ci si sposta lateralmente lungo l'elenco a discesa del componente JComboBox con i tasti del cursore, il pulsante
o il campo editabile delle caselle combinate non modificano il loro valore finch&eacute; non viene selezionata una voce. Questo &egrave; il comportamento desiderato per questo rilascio e migliora l'accessibilit&agrave; e l'usabilit&agrave; assicurando che il
comportamento trasversale della tastiera sia coerente con quello del mouse.</p>
<a name="wq104"></a>
<h2 id="wq104"><a href="#ToC_102">Accessibilit&agrave; Web Start</a></h2>
<p>IBM Java Web Start v5.0 contiene diversi miglioramenti di accessibilit&agrave; ed utilizzo rispetto ai release
precedenti, compreso un supporto migliore per screen reader e una tastiera per la navigazione migliorata.</p>
<p>E' possibile usare la riga comandi solo per lanciare un'applicazione Java abilitata per Web Start.  Per cambiare le opzioni delle preferenze, editare il file di configurazione,
<strong>Application Data\IBM\Java\Deployment\deployment.properties</strong> nella directory principale dell'utente. Prima di modificare questo file farne una copia di riserva.
 Non tutte le preferenze impostabili in Java Application Cache Viewer
sono disponibili nel file di configurazione.</p>
<a name="wq105"></a>
<h1 id="wq105"><a href="#ToC_103">Note generali sulla sicurezza</a></h1>
<p>&Egrave; possibile ottenere file delle politiche di giurisdizione illimitata da <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>.    La documentazione relativa a
JCE, JCEFIPS, JSSE2, JSSEFIPS, JGSS, JAAS e dei pacchetti di sicurezza IBM e la crittografia
hardware &egrave; anche disponibile presso questo sito Web.</p>
<a name="wq106"></a>
<h1 id="wq106"><a href="#ToC_104">Limiti noti</a></h1>
<p>Prendere nota di queste limitazioni in IBM 32-bit SDK for Windows, v5.0:</p>
<ul>
<li>IBM 32-bit SDK for Windows, v5.0 supporta
le seguenti locali:
<ul>
<li>Bengali (bn_IN)</li>
<li>Malayalam (ml_IN)</li>
<li>Oriya (or_IN)</li></ul>Tuttavia, i font di queste locali potrebbero non funzionare sui componenti AWT.
<p></p></li>
<li>IBM 32-bit SDK for Windows, v5.0 supporta IPv6. <span><font color="red"><span id="changed">|</span>Tuttavia, poich&eacute; il supporto IPv6 corrente in Windows non &egrave; dual-stack,
<span id="changed">|</span>SDK emula un comportamento dual-stack su un sistema IPv6 abilitato. Le proprie applicazioni Java
<span id="changed">|</span>potrebbero usare sino a due volte i socket a causa della natura dell'emulazione. Per disabilitare questa emulazione,
<span id="changed">|</span>disabilita il supporto IPv6 in SDK impostando la propriet&agrave; del sistema
<span id="changed">|</span><strong>java.net.preferIPv4Stack</strong> su <tt class="xph">true</tt>.</font></span>
<p></p></li>
<li>Durante la gestione di IME, la composizione caratteri deve essere
completata ed il candidato selezionato prima utilizzando lo spazio di lavoro
per le altre operazioni.
<p></p></li>
<li>La creazione di coppie di chiavi DSA di lunghezza insolita pu&ograve; richiedere
molto tempo su macchine lente. Il ritardo non deve essere interpretato come un blocco poich&eacute; il processo verr&agrave; completato se viene dato tempo sufficiente. L'algoritmo di generazione delle chiavi DSA &egrave; stato ottimizzato in modo da generare lunghezze di chiavi standard (ad esempio 512, 1024) pi&ugrave; velocemente di altre.
<p></p></li>
<li>I firewall personali possono causare problemi al codice
Windows NIO, comportando il malfunzionamento di particolari operazioni. Ad esempio, la chiamata del metodo <strong>Selector.open()</strong> pu&ograve; comportare un
<tt class="xph">java.io.IOException: Unable to establish loopback connection</tt> con una causa di
<tt class="xph">java.net.ConnectException: Connection refused: connect</tt>.  L'eccezione viene causata dal sistema operativo che si collega su una porta bloccata dal
firewall. JVM tenter&agrave; l'operazione di connessione, richiedendo al sistema operativo
di scegliere uno numero di porta differente. Se, dopo ripetuti tentativi, non &egrave; ancora possibile
connettersi, viene ricevuto un <tt class="xph">ConnectException</tt>.
<p>Se si verifica questa eccezione, si pu&ograve; impostare la propriet&agrave; di sistema <strong>java.nio.debug=pipe</strong> per vedere quali sono i numeri delle porte bloccate.</p></li>
<li>Quando un utente immette del testo in un'area di testo AWT mentre utilizza un IME, e modifica quindi la finestra dell'applicazione <em> prima</em> di eseguire il commit del testo, il commit del testo viene eseguito automaticamente.
<p></p></li>
<li>Un Windows 2000 e XP, il valore predefinito del numero di file che possono essere aperti simultaneamente &egrave; troppo basso e provocher&agrave; problemi alle applicazioni che hanno un I/O intenso. Per correggere questa limitazione, modificare il file &lt;windows>\system32\CONFIG.NT ed impostare i seguenti valori:
<ul>
<li><tt class="xph">files=200</tt></li>
<li><tt class="xph">buffers=60</tt></li></ul>dove &lt;windows> &egrave; la directory dove &egrave; installato Windows.
<p></p></li>
<li>Su Windows 2000, con un'intensit&agrave; di colore a 32-bit, il meccanismo DirectDraw di
JVM non ridisegna l'area al di sotto del puntatore del mouse. Il risultato &egrave; che appaiono riquadri grigi o neri sui menu dopo che vi &egrave; passato sopra il mouse. Per risolvere il problema, occorre disattivare Direct Draw (<tt>-Dsun.java2d.noddraw</tt>) oppure cambiare la risoluzione colori del video assegnando un altro valore, quale ad esempio 256 colori.
<p></p></li>
<li>Quando si installa la libreria nativa PKCS 11 su un JVM v1.4.x, occorre
posizionare la libreria nella directory JRE bin con altre librerie native JRE.
<p></p></li>
<li>La chiamata <strong>SocketChannel finishConnect()</strong> NIO pu&ograve; restituire <tt class="xph">true</tt> (il canale &egrave; connesso) oppure <tt class="xph">false</tt> (il processo di collegamento non &egrave; completata) oppure restituire un'eccezione. Su Windows 2000, quando si utilizzano connessioni non bloccate, pu&ograve; essere restituito <tt class="xph">false</tt> persino dopo che una precedente chiamata <strong>select()</strong> java implica che esiste un canale pronto per l'elaborazione. 
<p></p></li>
<li>Non &egrave; possibile modificare l'intervallo dello stack
del thread Java principale (anche noto come thread primordiale) durante l'esecuzione. Il thread principale ha una dimensione fissa di 256 KB, determinata come valore ottimale per le prestazioni. &Egrave; possibile utilizzare l'opzione <strong>-Xss</strong> per modificare l'intervallo di stack solo sui thread diversi da quello principale. A causa della dimensione fissa del
thread principale, si consiglia di non effettuare attivit&agrave; ricorsive imponenti, poich&eacute; il thread principale &egrave; pi&ugrave; pronto all'overflow degli stack di altri thread.
<p></p></li>
<li>Se si sta scrivendo con caratteri DBCS in JTextArea, JTextField o JFileChooser, il
passaggio da IME cinesi (in particolare, codice interno cinese e
Zhengma) a Intelligent ABC IME potrebbe causare un core dump.
<p></p></li>
<li>Per gli utenti della repubblica ceca, si noti che il pannello di selezione della lingua di installshield offre una voce tradotta in un'installazione diversamente non tradotta. Questa limitazione &egrave; dovuta a installshield. La stringa viene richiamata dal sistema operativo basato sulla codepage. Poich&eacute; il Polacco (per il quale &egrave; stata tradotta l'installazione) e il Ceco hanno la codepage 1250, Installshield cerca di richiamare un elenco di lingue dal sistema per entrambe queste lingue, e viene visualizzata questa stringa nell'elenco di lingue.
<p></p></li>
<li>Se si utilizza il cinese tradizionale, non utilizzare il carattere pipe per l'emissione dall'applicazione Java
direttamente nel comando <strong>more</strong>.  Reindirizzare invece l'output in un file temporaneo e quindi visualizzare il file separatamente.

<p></p></li>
<li>Per gli utenti catalani, utilizzare il carattere Lucida Console per evitare la visualizzazione errata delle lettere maiuscole accentate. Questa limitazione riguarda solo gli utenti di Windows 2000.
<p></p></li></ul>
<a name="rcf"></a>
<h1 id="rcf"><a href="#ToC_105">Inoltro dei commenti relativi a questa guida utente</a></h1>
<p>Se si hanno dei commenti da esprimere relativi all'utilit&agrave; o dei commenti di qualsiasi tipo su questa guida &egrave; possibile utilizzare uno dei canali riportati di seguito.
Si noti che tali canali non sono impostati per rispondere ad interrogazioni tecniche ma sono intesi solo per i commenti relativi alla documentazione. Inviare i commenti a:</p>
<ul>
<li>Tramite e-mail a idrcf@hursley.ibm.com.</li>
<li>Con fax: 
<ul>
<li>Dal Regno Unito: 01962 842327 </li>
<li>Da fuori il Regno Unito:&lt;prefisso internazionale&gt;44 1962 842327 </li></ul> </li>
<li>Per posta a:
<div class="lines">IBM United Kingdom Ltd<br />
User Technologies, <br />
Mail Point 095&nbsp;&nbsp;&nbsp;<br />
Hursley Park&nbsp;&nbsp;&nbsp;<br />
Winchester&nbsp;&nbsp;&nbsp;<br />
Hampshire&nbsp;&nbsp;&nbsp;<br />
SO21 2JN United Kingdom <br />
</div></li></ul>
<p><strong>Annotazioni. </strong> Inviando un messaggio alla IBM, tutte le informazioni in esso contenute, incluso i dati di feedback, come ad esempio domande, commenti, suggerimenti verranno ritenute non riservate e IBM non avr&agrave; nessun obbligo di nessun tipo rispetto a tali informazioni e potr&agrave; riprodurle, utilizzarle, diffonderle e distribuirle a terzi illimitatamente. IBM inoltre, si riserva il diritto di utilizzare idee, concetti, conoscenze o tecniche contenute in tali informazioni per qualsiasi scopo, incluso ma non limitato allo sviluppo, fabbricazione e commercializzazione di prodotti che incorporano tali informazioni. </p>
<a name="notices"></a>
<h1 id="notices"><a href="#ToC_106">Informazioni particolari</a></h1>
<p> Queste informazioni sono state sviluppate per prodotti e servizi
offerti negli Stati Uniti d'America.   E' possibile che la IBM non offra i prodotti, i servizi o le
funzioni trattati in questo documento in altri paesi. Consultare il rappresentante commerciale IBM per informazioni
relative ai prodotti e servizi disponibili nel proprio paese.
Ogni riferimento a
prodotti programmi o servizi IBM non significa che possano essere usati soltanto tali
programmi, prodotti o servizi. In sostituzione a quelli forniti dall'IBM, possono
essere usati prodotti, programmi o servizi funzionalmente equivalenti
che non comportino violazione dei diritti di propriet&agrave; intellettuale. Tuttavia,
&egrave; responsabilit&agrave; dell'utente valutare e verificare
la possibilit&agrave; di usare programmi, prodotti o servizi non IBM.</p>
<p>L'IBM pu&ograve; avere brevetti o domande di brevetto in corso relativi a
quanto trattato nella presente pubblicazione. La fornitura di questa
pubblicazione non implica la concessione di alcuna
licenza su di essi. Chi desiderasse ricevere informazioni relative
a licenze pu&ograve; rivolgersi per iscritto a:</p>
<ul>
<li>IBM Director of Licensing 
<br /> IBM Corporation 
<br />North Castle Drive, Armonk 
<br />NY 10504-1758 U.S.A. 
<br /></li></ul>
<p>Chi desiderasse ricevere delucidazioni sulle licenze relative alle
informazioni DBCS, pu&ograve; contattare IBM Intellectual Property
Department nel proprio paese o rivolgersi per iscritto a:</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>Il seguente paragrafo non &egrave; valido per il Regno Unito o per tutti
i paesi le cui leggi nazionali siano in contrasto con le disposizioni
in esso contenute:</p>
<p>L'IBM FORNISCE QUESTA PUBBLICAZIONE SENZA ALCUNA GARANZIA,
ESPLICITA O IMPLICITA, IVI INCLUSE EVENTUALI GARANZIE DI
COMMERCIABILIT&Agrave;' ED IDONEIT&Agrave;' AD UNO SCOPO PARTICOLARE. Alcune
nazioni non escludono le garanzie implicite; di conseguenza la suddetta
esclusione potrebbe, in questo caso, non essere applicabile.</p>
<p>Queste informazioni potrebbero contenere imprecisioni tecniche o
errori tipografici. Le correzioni relative saranno incluse nelle
nuove edizioni. L'IBM si riserva il diritto di apportare
miglioramenti o modifiche al prodotto o al programma descritto in
qualsiasi momento e senza preavviso.</p>
<p>Tutti i riferimenti a pubblicazioni e a siti Web non dell'IBM
contenuti in questo documento sono forniti solo per consultazione. I
materiali contenuti in tali pubblicazioni e siti Web non fanno parte
di questo prodotto e l'utilizzo di questi &egrave; a discrezione dell'utente. </p>
<p>L'IBM pu&ograve; utilizzare o distribuire qualsiasi informazione voi
forniate nel modo pi&ugrave; appropriato senza incorrere in alcuna
obbligazione nei vostri riguardi.</p>
<p>Coloro che detengono la licenza su questo programma e desiderano
avere informazioni su di esso allo scopo di consentire: (i) uno
scambio di informazioni tra programmi indipendenti ed altri (compreso
questo) e (ii) l'uso reciproco di tali informazioni, dovrebbero
rivolgersi a:</p>
<ul>
<li>JIMMAIL@uk.ibm.com 
<br />[Hursley Java Technology Center
(JTC) contact]</li></ul>
<p>Queste informazioni possono essere rese disponibili secondo
condizioni contrattuali appropriate, compreso, in alcuni
casi, l'addebito di un canone.</p>
<p>Il programma su licenza descritto in queste informazioni e tutto
il materiale su licenza ad esso relativo sono forniti dall'IBM nel
rispetto delle condizioni previste dalla licenza d'uso.</p>
<p>I dati relativi alle prestazioni contenuti nel presente documento
sono stati ottenuti in un ambiente controllato.
Pertanto, i risultati
ottenibili in altri ambienti operativi potrebbero variare
significativamente.
Alcune rilevazioni sono state effettuate su
sistemi in fase di sviluppo e non si garantisce in alcun modo che
tali rilevazioni siano uguali su tutti i sistemi. Inoltre, alcune rilevazioni non state effettuate tramite
estrapolazione.
Pertanto, i risultati effettivi possono essere differenti. Gli utenti devono verificare l'applicabilit&agrave; dei dati negli specifici
ambienti operativi.</p>
<p>Le informazioni relative a prodotti non IBM sono state ottenute
dai fornitori di tali prodotti. L'IBM non ha verificato tali prodotti e, pertanto, non pu&ograve; garantirne
l'accuratezza delle prestazioni.
Eventuali commenti relativi alle prestazioni dei prodotti non IBM
devono essere indirizzati ai fornitori di tali prodotti.</p>
<a name="wq107"></a>
<h2 id="wq107"><a href="#ToC_107">Marchi</a></h2>
<p>IBM &egrave; un marchio della International Business Machines Corporation.</p>
<p>Java e tutti i marchi ed i logo basati su Java sono marchi
della Sun Microsystems, Inc.</p>
<p>Microsoft, Windows e il logo Windows logo sono marchi della Microsoft Corporation
negli Stati Uniti e/o in altre nazioni.</p>
<p>I nomi di altre societ&agrave;, prodotti e servizi potrebbero essere marchi di altre societ&agrave;.</p>
<p>Questo prodotto &egrave; basato anche parzialmente su FreeType
Project. Per ulteriori informazioni su Freetype, consultare <a href="http://www.freetype.org">http://www.freetype.org</a>.</p>
<p>Questo prodotto include il software sviluppato da 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>
