IBM 64-bit Runtime Environment for Windows on Intel Itanium architecture, Java 2 Technology Edition, Version 1.4.2

Runtime Environment Guida per l'utente


Informazioni sul copyright

Nota: Prima di usare questo prodotto e le relative informazioni, leggere le informazioni contenute nella sezione Informazioni particolari.

Questa edizione della guida per l'utente è valida per IBM 64-bit Runtime Environment for Windows on Intel Itanium architecture, Java 2 Technology Edition, Version 1.4.2, e tutti i successivi rilasci, versioni e modifiche se non diversamente specificato nelle nuove edizioni.

(c) Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. Tutti i diritti riservati.

(c) Copyright International Business Machines Corporation, 1999, 2004. Tutti i diritti riservati.

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.

Prefazione

IBM(R) 64-bit Runtime Environment for Windows(R) on Intel(R) Itanium(R) architecture, Java(TM) 2 Technology Edition, Version 1.4.2 contiene Java Virtual Machine (JVM), le classi Sun Microsystems Java e i file di supporto. Runtime Environment non contiene tutte le classi disponibili nel pacchetto SDK.

IBM Runtime Environment contiene JVM (Java Virtual Machine), le classi Sun Microsystems Java Core e i file di supporto. Runtime Environment non contiene tutte le classi disponibili nel pacchetto SDK.

La Guida per l'utente fornisce informazioni generiche su Runtime Environment e informazioni specifiche sulle differenze dell'implementazione IBM rispetto a quella Sun. Consultare questa Guida utente e l'altra documentazione dal sito Web di Sun: http://java.sun.com.

Runtime Environment è supportato da Microsoft(R) Windows XP 64-Bit Edition e da Windows Server 2003 64-bit edition.

Il manuale IBM JVM Diagnostics Guide fornisce informazioni più dettagliate sulla JVM IBM.

Si noti che Runtime Environment per Windows è una serie secondaria di SDK e abilita solo all'esecuzione di applicazioni Java. Se è installato SDK, è incluso Runtime Environment.

I termini "Runtime Environment" e "Java Virtual Machine" sono utilizzati scambievolmente in questa Guida per l'utente.

Le modifiche tecniche per questa Guida per l'utente versione Version 1.4.2 diverse da quelle ovvie o di minor importanza, come l'aggiornamento da "1.4.1" a "1.4.2", sono indicate in rosso durante la visualizzazione nella copia HTML o nella stampa a colori e da barre verticali nella parte sinistra delle modifiche.

Indice

Informazioni sul copyright
Prefazione
Utilizzo di Runtime Environment
Ricerca del numero di build IBM e del numero della versione
Compilatore JIT (just-in-time)
Avvio di un'applicazione Java
Riepilogo dei comandi
Opzioni
Globalizzazione dei comandi java
Gestione dei classpath
Esecuzione automatica di un file Java
Gestione di bootclasspath
Specifica della politica di raccolta dei dati obsoleti
| |
Implementazione di Connection Handler Pool per RMI
Modalità di elaborazione di JVM dei segnali
Segnali usati da JVM
Collegamento di un driver di codice nativo alla libreria di segnale a catena
Gestione di IME (Input Method Editor)
Utilizzo del comando more
Limiti noti
Inoltro dei commenti relativi a questa guida utente
Informazioni particolari
Marchi

Utilizzo di Runtime Environment

E' possibile che le classi compiliate 1.4.2 non funzionino sui release Runtime Environment precedenti a 1.4.0.

Ricerca del numero di build IBM e del numero della versione

Per ottenere il numero di build e di versione, digitare quanto riportato di seguito in una richiesta shell:

java -version

Compilatore JIT (just-in-time)

Il compilatore JIT (Just-in-time)(jitc.dll) genera dinamicamente il codice macchina per le sequenze di codici di tipo bytecode di uso frequente in applicazioni Java e nelle applet mentre sono in esecuzione.

Runtime Environment per Windows include il JIT (jitc.dll), che è abilitato come valore predefinito.Per individuare un problema relativo ad un'applicazione Java, ad un'applet o al compilatore stesso, è possibile disabilitare JIT.

Per disabilitare JIT, immettere quanto segue da una richiesta shell nella finestra in cui eseguire l'applicazione:

    set JAVA_COMPILER=NONE

Per abilitare JIT, immettere quanto segue da una richiesta shell:

    set JAVA_COMPILER=jitc

Per verificare se JIT è abilitato, immettere quanto segue da una richiesta shell:

    java -versione

Se il JIT è in uso, viene visualizzato un messaggio che comprende:

(JIT abilitato: jitc)

Se JIT non è in uso, viene visualizzato un messaggio che comprende:

(JIT disabilitato)

Avvio di un'applicazione Java

Lo strumento java avvia un'applicazione Java.

JVM ricerca la classe di startup 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 dopo il nome classe o il nome file JAR vengono passati alla funzione principale.

Il comando javaw è identico a java, tranne javaw che non ha alcuna finestra di console associata. Usare javaw quando non si desidera che venga visualizzata una finestra di richiesta comandi. Il programma di avvio javaw visualizza una casella di dialogo con le informazioni sugli errore nel caso in cui l'avvio abbia esito negativo.

Riepilogo dei comandi

I comandi java e javaw hanno la seguente sintassi:

java [ opzioni ] classe [ argomenti ... ]
java [ opzioni ] -jar file.jar [ argomenti ... ]
javaw [ opzioni ] classe [ argomenti ... ]
javaw [ opzioni ] -jar file.jar [ argomenti ... ]

Le voci tra parentesi sono facoltative.

opzioni
Opzioni della riga comandi.
classe
Il nome della classe da richiamare.
file.jar
Il nome del file jar da richiamare. Utilizzato solo con -jar.
argomento
L'argomento passato alla funzione principale.

Se si specifica l'opzione -jar, 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.

Opzioni

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.

Opzioni standard

Opzioni non standard

Le opzioni -X elencate di seguito sono una serie secondaria delle opzioni disponibili. Sono non standard e sono soggette a modifica senza preavviso.

Globalizzazione dei comandi java

Il comando java e gli altri comandi di avvio java (come ad esempio javaw) consentono di specificare un nome classe come un qualsiasi carattere Unicode che si trovi nella serie di caratteri della locale corrente.

E' possibile specificare un qualsiasi carattere Unicode nel nome classe e gli argomenti utilizzando le sequenze di escape java. Per eseguire tale operazione, occorre specificare -Xargencoding. Per specificare un carattere Unicode, utilizzare sequenze di escape nel formato \u####, dove # è una cifra esadecimale (da 0 a 9, dalla A alla F).

Per specificare che il nome classe e gli argomenti comando sono nella codifica UTF8 o ISO8859_1, utilizzare -Xargencoding:utf8 e -Xargencoding:latin.

In Runtime Environment, se si sta utilizzando una locale non Inglese, i comandi java e javaw emettono messaggi tradotti. Tali messaggi sono diversi da quelli nella versione 1.3.1 e differiscono anche in base alla locale in cui Java è in esecuzione. Le descrizioni dettagliate dell'errore ed altre informazioni di debug restituite da java sono in lingua inglese. Le informazioni di debug restituite durante l'inizializzazione sono visualizzate tra parentesi.

Gestione dei classpath

In Runtime Environment, è possibile specificare un nome classe come nome file completo includendo un percorso completo e l'estensione .class. Nelle versioni precedenti di SDK, era possibile specificare solo la classe relativa in CLASSPATH e non era possibile utilizzare l'estensione .class. L'utilizzo del nome file completo consente di avviare un'applicazione java dal desktop o dal programma di avvio file. Se si specifica un file .class con percorso e estensione, il percorso specificato viene inserito in CLASSPATH. Ad esempio, il comando java c:\myapp\thisapp.class corrisponde a java -classpath c:\myapp thisapp.

Esecuzione automatica di un file Java

Per impostare un file jar o una classe java in modo che vengano eseguiti automaticamente da file, utilizzare l'opzione Strumenti->Opzioni cartella->Tipo file di Windows Explorer. Oppure, da una richiesta comandi, immettere:

assoc .class=javaclass 
ftype javaclass=C:\Program Files\IBM\Java142\jre\bin\java.exe %l %*
Note:
  1. %l è la lettera l e non il numero 1.
  2. Se Java è installato in una directory diversa da C:\Program Files\IBM\Java142\, sostituire la directory specificata.

Gestione di bootclasspath

E' possibile impostare le proprietà di sistema ibm.jvm.bootclasspath usando l'opzione -D descritta in Avvio di un'applicazione Java. Il valore di tale proprietà viene utilizzato come percorso di ricerca aggiuntivo, inserito tra un qualsiasi valore definito con -Xbootclasspath/p: e il percorso di classe (classpath) di bootstrap. Il percorso di classe bootstrap è quello predefinito oppure quello definito utilizzando l'opzione -Xbootclasspath:.

Non distribuire le applicazioni che utilizzano l'opzione -Xbootclasspath: o -Xbootclasspath/p: per ignorare una classe in core.jar, graphics.jar, server.jar, security.jar, xml.jar, tools.jar, oppure charsets.jar, perché tale distribuzione contravverrebbe alla licenza sul codice binario di Java 2 Runtime Environment.

Specifica della politica di raccolta dei dati obsoleti

L'opzione di runtime JVM -Xgcpolicy specifica la politica di raccolta dati obsoleti.

-Xgcpolicy assume i valori optthruput (il valore predefinito) o optavgpause. Questa opzione controlla il comportamento del programma di raccolta dei dati obsoleti, bilanciando la velocità effettiva dell'applicazione e del sistema in generale e le pause determinate dalla raccolta dei dati obsoleti.

Il formato dell'opzione ed i suoi valori sono:

-Xgcpolicy:optthruput

-Xgcpolicy:optavgpause

Tempo di pausa

Quando il tentativo di un'applicazione di creare un oggetto non può essere immediatamente soddisfatto a causa dello spazio disponibile nell'heap, il programma di raccolta dei dati obsoleti è responsabile dell'identificazione degli oggetti cui non si fa riferimento (obsoleti), della loro cancellazione e della reimpostazione dell'heap 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à delle applicazioni crescono, e gli heap diventano di conseguenza più grandi, questa pausa per la raccolta dei dati obsoleti tende a crescere. Il valore di raccolta dati obsoleti predefinito, optthruput, consente un elevata velocità di esecuzione delle applicazioni, tuttavia possono verificarsi delle pause occasionali, che possono variare da pochi millisecondi a molti secondi, in base alla dimensione della memoria riservata e alla quantità di dati obsoleti.

Riduzione della pausa

L'opzione optavgpause riduce notevolmente le pause nelle raccolte dei dati obsoleti e limita l'effetto dell'aumento della dimensione della memoria riservata nella lunghezza della pausa di raccolta dei dati obsoleti. Questa opzione è particolarmente importante nelle configurazioni con degli heap di notevoli dimensioni. Le pause vengono ridotte eseguendo alcune attività di raccolta dei dati obsoleti simultaneamente all'esecuzione del normale programma. Con la riduzione della pausa, potrebbe ridursi la velocità effettiva dell'applicazione, che varia secondo le applicazioni.

Ambienti con heap molto pieni

Quando un heap Java è quasi pieno ed i dati obsoleti da eliminare sono pochi, è possibile che le richieste per nuovi oggetti non possano essere soddisfatte rapidamente poiché non c'è spazio immediatamente disponibile. Se l'heap viene utilizzato quando è quasi pieno, è 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 dell'heap, l'applicazione riceve un'eccezione OutofMemory, che determina la chiusura del JVM se l'eccezione non viene rilevata e risolta. A questo punto la JVM produrrà due file di diagnostica: Heapdump e Javadump. Questi sono spiegati in modo dettagliato nel manuale Diagnostics Guide per Java 1.4.2 e possono essere utilizzati per determinare cosa ha causato l'elevata occupazione dell'heap Java. Il manuale Diagnostics Guide si trova in developerWorks, all'indirizzo: http://www-106.ibm.com/developerworks/java/jdk/diagnosis/. In queste situazioni, si consiglia di aumentare la dimensione dell'heap utilizzando l'opzione e -Xmx oppure di ridurre il numero di oggetti di applicazione in uso.

Ulteriori informazioni sulla raccolta di dati obsoleti

Per ulteriori informazioni sulla raccolta dei dati obsoleti, consultare:

http://www.ibm.com/developerworks/ibm/library/i-garbage1/

http://www.ibm.com/developerworks/ibm/library/i-garbage2/

http://www.ibm.com/developerworks/ibm/library/i-garbage3/

| | |

Implementazione di Connection Handler Pool per RMI

|

Per impostazione predefinita, il pooling dei thread per i gestori di connessioni RMI non è abilitato.

|

Per abilitare il pooling delle connessioni implementato a livello del trasporto TCP RMI, impostare l'opzione

|
-Dsun.rmi.transport.tcp.connectionPool=true (o un qualsiasi valore non nullo)
|

Questa versione di Runtime Environment non ha alcuna impostazione che è possibile utilizzare per limitare il numero di thread nel pool delle connessioni.

Modalità di elaborazione di JVM dei segnali

Quando viene generato un segnale che possa essere di interesse per JVM, viene richiamato un programma di gestione segnali. Questo, determina se è stato invocato per un thread Java oppure per un non-Java. Se il segnale è per un thread Java, JVM prende il controllo della gestione del segnale. Se il segnale è per un thread non-Java, e l'applicazione che installava JVM aveva precedentemente installato il proprio gestore per il segnale, il controllo viene dato a detto gestore. Altrimenti, il segnale viene ignorato (indipendentemente dal fatto che non sia l'azione predefinita del segnale). L'eccezione a questa regola è su Windows, dove, per un segnale generato esternamente (ad esempio, CTRL-C oppure CTRL-Pausa) viene creato un nuovo thread per eseguire il gestore segnali. In questo caso, il gestore segnali JVM assume che il segnale sia per JVM.

Per le eccezioni ed i segnali di errore, JVM:

Per informazioni su come scrivere un programma di avvio che specifica gli hook sopra indicati, consultare: http://www-106.ibm.com/developerworks/java/library/i-signalhandling/. Questo elemento è stato scritto per Java V1.3.1 ma è valido anche per le versioni successive.

Per segnali di interruzione, JVM immette inoltre una sequenza di chiusura controllata, ma questa volta viene trattata come una normale chiusura che:

La chiusura è identica a quella iniziata da una chiamata al metodo Java System.exit().

Altri segnali usati da JVM servono per controlli interni e non causano la chiusura. L'unico segnale di controllo di interesse è SIGBREAK, che genera un Javadump.

Segnali usati da JVM

Tabella 1 di seguito vengono illustrati i segnali usati da JVM. I segnali sono stati raggruppati in una tabella per tipo o uso, nel seguente modo:

Tabella 1. Segnali usati da JVM
Nome segnale Tipo segnale Descrizione Disabilitato da -Xrs
SIGSEGV Eccezione Accesso alla memoria non corretto (scrittura su memoria non accessibile) No
SIGILL Eccezione Istruzione non valida (tentativo di richiamare istruzione macchina sconosciuta) No
SIGFPE Eccezione Eccezione virgola mobile (dividere per zero) No
SIGABRT Errore Fine anomala. JVM emette questo segnale quando rileva un problema JVM.
SIGINT Interruzione Attenzione interattiva (CTRL-C). JVM esce normalmente.
SIGTERM Interruzione Richiesta termine. JVM uscirà normalmente.
SIGBREAK Controllo Segnale di interruzione per un terminale. Usato da JVM per effettuare dei Javadump.

Usare l'opzione -Xrs (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 http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html.

I segnali 2 (SIGINT), 4 (SIGILL), 6 (SIGABRT), 8 (SIGFPE), 11 (SIGSEGV) e 15 (SIGTERM) comportano la chiusura di JVM, pertanto l'applicazione del gestore segnali non dovrebbe provare a recuperarli, a meno che non vengano più richiesti da JVM.

Collegamento di un driver di codice nativo alla libreria di segnale a catena

Runtime Environment contiene una funzione di concatenazione di segnali. Questa consente a JVM di operare in modo più efficiente con il code nativo che installa i propri gestori di segnale.

Il segnale a catena consente ad un'applicazione di collegarsi e di caricare la libreria condivisa jsig.dll prima di msvcrt.dll. La libreria jsig.dll assicura che le chiamate a signal() 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 preinstallati.

Per utilizzare jsig.dll, eseguire il collegamento all'applicazione che crea oppure inserisce una JVM.

Gestione di IME (Input Method Editor)

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.

Utilizzo del comando more

Se si è un utente della versione Cinese tradizionale, occorre non utilizzare il carattere pipe per l'emissione dall'applicazione Java direttamente con il comando more. Reindirizzare invece l'output in un file temporaneo e quindi visualizzare il file separatamente.

Limiti noti

|La seguente limitazione è valida per Windows XP per il giapponese |e Windows XP per il cinese classico. Quando un utente immette del testo in un'area di testo AWT mentre utilizza un IME, e modifica quindi la finestra dell'applicazione prima di eseguire il commit del testo, il commit del testo viene eseguito automaticamente.

Inoltro dei commenti relativi a questa guida utente

Se si hanno dei commenti da esprimere relativi all'utilità o dei commenti di qualsiasi tipo su questa guida è 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:

Annotazioni. 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à nessun obbligo di nessun tipo rispetto a tali informazioni e potrà 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.

Informazioni particolari

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à intellettuale. Tuttavia, è responsabilità dell'utente valutare e verificare la possibilità di usare programmi, prodotti o servizi non IBM.

L'IBM può 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ò rivolgersi per iscritto a:

Chi desiderasse ricevere delucidazioni sulle licenze relative alle informazioni DBCS, può contattare IBM Intellectual Property Department nel proprio paese o rivolgersi per iscritto a:

Il seguente paragrafo non è valido per il Regno Unito o per tutti i paesi le cui leggi nazionali siano in contrasto con le disposizioni in esso contenute:

L'IBM FORNISCE QUESTA PUBBLICAZIONE SENZA ALCUNA GARANZIA, ESPLICITA O IMPLICITA, IVI INCLUSE EVENTUALI GARANZIE DI COMMERCIABILITÀ' ED IDONEITÀ' AD UNO SCOPO PARTICOLARE. Alcune nazioni non escludono le garanzie implicite; di conseguenza la suddetta esclusione potrebbe, in questo caso, non essere applicabile.

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.

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 è a discrezione dell'utente.

L'IBM può utilizzare o distribuire qualsiasi informazione voi forniate nel modo più appropriato senza incorrere in alcuna obbligazione nei vostri riguardi.

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:

Queste informazioni possono essere rese disponibili secondo condizioni contrattuali appropriate, compreso, in alcuni casi, l'addebito di un canone.

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.

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à dei dati negli specifici ambienti operativi.

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ò garantirne l'accuratezza delle prestazioni. Eventuali commenti relativi alle prestazioni dei prodotti non IBM devono essere indirizzati ai fornitori di tali prodotti.

Marchi

IBM è un marchio della International Business Machines Corporation.

IBM è un marchio della International Business Machines Corporation.

Java e tutti i marchi ed i logo basati su Java sono marchi della Sun Microsystems, Inc.

Microsoft, Windows, Windows NT e i logo Windows sono marchi della Microsoft Corporation.

Intel, Intel Inside (i logo), MMX e Pentium sono marchi della Intel Corporation.

I nomi di altre società, prodotti e servizi potrebbero essere marchi di altre società.

Questo prodotto include il software sviluppato da Apache Software Foundation http://www.apache.org/.