# IBM Runtime Environment for Linux platforms, Java 2 Technology Edition, Version 1.4.2

# 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 del manuale è valida per queste piattaforme quando diventano disponibili:

- IBM Runtime Environment a 32 bit per Linux sull'architettura Intel(TM), Java 2 Technology Edition, Versione 1.4.2
- IBM Runtime Environment a 64 bit per Linux sull'architettura Intel, Java 2 Technology Edition, Versione 1.4.2
- IBM Runtime Environment a 32 bit per Linux su iSeries(TM) e pSeries(R), Java 2 Technology Edition, Versione 1.4.2
- IBM Runtime Environment a 64 bit per Linux su iSeries e pSeries, Java 2 Technology Edition, Versione 1.4.2
- IBM Runtime Environment a 31 bit per Linux su zSeries(R), Java 2 Technology Edition, Versione 1.4.2
- IBM Runtime Environment a 64 bit per Linux su zSeries, Java 2 Technology Edition, Versione 1.4.2

e a 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

Questa guida per l'utente descrive IBM(R) Runtime Environment per tutte le piattaforme Linux. Le informazioni specifiche per le piattaforme sono chiaramente indicate come tali. Accertarsi di leggere il materiale relativo alla propria piattaforma. In particolare, Web Start ed il Plug-in sono specifici per SDK per Linux a 32 bit su architettura Intel.

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.

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

Per un elenco delle distribuzioni su cui è stato testato SDK per Linux, consultare http://www-106.ibm.com/developerworks/java/jdk/linux/tested.html

Si noti che Runtime Environment per Linux è 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
Panoramica
| |
Convenzioni
Compatibilità versione
| |
Informazioni per gli utenti di Linux PPC64
File inclusi in Runtime Environment per Linux
Accordo di licenza
Compilatore JIT (just-in-time)
Java Native Interface e Native Method Interface
| |
Installazione su Red Hat Enterprise Linux (RHEL) 3
Configurazione di Runtime Environment per Linux
Disinstallazione di Runtime Environment per Linux
Disinstallazione del pacchetto RMP (Red Hat Package Manager) installabile
Disinstallazione del pacchetto TAR (Tape Archive) compresso
| |
JDBC/ODBC bridge reintegrato
Avvio di un'applicazione Java
Riepilogo dei comandi
Opzioni
Opzioni standard
Opzioni non standard
Globalizzazione dei comandi java
Gestione dei classpath
| |
Configurazione dell'allocazione di memoria di pagine grandi
Gestione di bootclasspath
Specifica della politica di raccolta dei dati obsoleti
Tempo di pausa
Riduzione della pausa
Ambienti con heap molto pieni
Ulteriori informazioni sulla raccolta di dati obsoleti
Modalità di elaborazione di JVM dei segnali
Segnali usati da JVM
Collegamento di un driver di codice nativo alla libreria concatenazione di segnali
| |
Implementazione del pool di gestori di connessioni per RMI
Ricerca del numero di build IBM e del numero della versione
(Solo Linux IA a 32 bit) Utilizzo del plug-in di Java
Installazione e configurazione del plug-in Java per Netscape 6 e Mozilla
Installazione e configurazione del plug-in di Java per Netscape 4
Utilizzo del plug-in Java con browser Mozilla compilati gcc3.2.x
Utilizzo dei parametri DBCS
(Solo Linux IA a 32 bit) Utilizzo di Web Start
Installazione di Web Start
Gestione degli stack mobili
Passaggio del metodo di immissione nelle lingue DBCS
Installazione dell'applicazione in un sistema utente
Limiti noti
Limiti validi per tutte le piattaforme Linux tranne dove indicato
Limitazioni di Linux IA a 32 bit
Limitazioni di Linux PPC a 32 bit e a 64 bit
Limitazioni di Linux PPC a 32 bit
Limitazioni di Linux zSeries a 64 bit
Limitazioni di Linux zSeries a 32 bit e a 64 bit
Inoltro dei commenti relativi a questa guida utente
Informazioni particolari
Marchi

# Panoramica

Runtime Environment per Linux contiene l'insieme secondario di classi richieste per creare un ambiente Java runtime e per eseguire programmi Java. Inoltre, contiene Java Virtual Machine, le classi Java principali e i file di supporto. Runtime Environment per Linux contiene solo un insieme secondario delle classi disponibili in SDK.

| | |

## Convenzioni

|

In questa guida per l'utente, la directory di installazione predefinita di SDK è indicata come /opt/IBMJava2-142/. Le piattaforme di seguito elencate hanno le seguenti directory di installazione predefinite; utilizzare la directory appropriata per la propria piattaforma quando si vede /opt/IBMJava2-142/:

|

|
- Linux IA a 32 bit: /opt/IBMJava2-142/
|
- Linux IA a 64 bit: /opt/IBMJava2-142/
|
- Linux PPC a 32 bit: /opt/IBMJava2-ppc-142/
|
- Linux PPC a 64 bit: /opt/IBMJava2-ppc64-142/
|
- Linux zSeries a 31 bit: /opt/IBMJava2-s390-142/
|
- Linux zSeries a 64 bit: /opt/IBMJava2-s390x-142/

## Compatibilità versione

In generale, qualsiasi applet o applicazione eseguibile nelle versioni 1.1.8, 1.2.2 o 1.3.1 di SDK per Linux dovrebbe essere eseguita correttamente in questa versione. Le applet che dipendono dalle API 1.4.2 Java Sun funzionano solo sui browser che supportano le API Java 1.4.2.

E' possibile che le classi compilate 1.4.2 non funzionino su rilasci di Runtime Environment precedenti a 1.4.0.

| | |

### Informazioni per gli utenti di Linux PPC64

|

Runtime Environment v1.4.2 non è supportato su SLES 8. Se si desidera eseguire SDK su SLES 8, utilizzare SDK v1.4.1 SR1.

## File inclusi in Runtime Environment per Linux

Runtime Environment per Linux include file .so di cui non è possibile eseguire il debug e file di classe necessari per il supporto di un programma al momento dell'esecuzione. Runtime Environment per Linux non include strumenti di sviluppo, come, ad esempio, appletviewer oppure javac, oppure classi specifiche di un sistema di sviluppo.

Inoltre, i pacchetti API Java Communications vengono forniti per essere utilizzati con Runtime Environment per Linux. (Tranne su Linux IA a 64 bit e Linux zSeries a 31 bit e a 64 bit).

## Accordo di licenza

Il file LICENSE_xx.html contiene l'accordo di licenza per il software Runtime Environment per Linux. (xx è l'abbreviazione per la lingua.)

Per visualizzare o stampare l'accordo di licenza, aprire il file in un browser Web.

## Compilatore JIT (just-in-time)

Il compilatore JIT (Just-in-time) (libjitc.so) 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 Linux include il JIT (libjitc.so), 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 comandi nella finestra in cui eseguire l'applicazione:

        export JAVA_COMPILER=NONE

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

        export JAVA_COMPILER=jitc

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

        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)

## Java Native Interface e Native Method Interface

Java Native Interface (JNI) è compreso nel Runtime Environment. Per informazioni sull'utilizzo di JNI, consultare il sito Web della Sun: http://java.sun.com.

IBM non supporta Native Method Interface in questo rilascio. Non utilizzare tale interfaccia nelle proprie applicazioni.

| | |

# Installazione su Red Hat Enterprise Linux (RHEL) 3

|

Il Runtime Environment dipende dalla libreria condivisa /usr/lib/libstdc++-libc6.2-2.so.3. |Questa libreria non è installata per impostazione predefinita per RedHat Enterprise Linux (RHEL) |3.0.

|

L'rpm che contiene questa libreria è `compat-libstdc++-7.3-2.96.122.i386.rpm`. Per installare la libreria, da una richiesta comandi shell immettere:

|

    rpm -ivh compat-libstdc++-7.3-2.96.122.i386.rpm

|

Per includere la libreria durante l'installazione di RHEL 3:

|

|
1. When you reach the Package Defaults screen, select |the option Customize the Set of packages to be installed.
|
2. At the Package Group Selection screen, under the Development options, select Legacy Software |Development.

# Configurazione di Runtime Environment per Linux

Una volta installato Runtime Environment per Linux, modificare lo script di login di shell ed aggiungere la seguente directory all'istruzione PATH:

/opt/IBMJava2-142/jre/bin

Se si è installato Runtime Environment per Linux in una directory differente, sostituire a /opt/IBMJava2-142/ la directory in cui si è installato Runtime Environment.

Nota:
(Solo per gli utenti di Linux IA a 32 bit in cinese) A causa di incongruenze nelle codifiche dei font su RedHat Advanced Server, quando si esegue l'installazione per un ambiente in cui si desidera che il cinese sia la lingua predefinita, è meglio installare con l'inglese come lingua predefinita e modificare quindi la lingua specificando il cinese dopo che l'installazione è stata completata. Altrimenti, è possibile che i font del cinese non vengano visualizzati.

# Disinstallazione di Runtime Environment per Linux

Il modo in cui si rimuove Runtime Environment varia a seconda se si è installato il pacchetto RPM (Red Hat Package Manager) installabile o quello TAR (Tape Archive) compresso. Consultare Disinstallazione del pacchetto RMP (Red Hat Package Manager) installabile o Disinstallazione del pacchetto TAR (Tape Archive) compresso per le istruzioni.

## Disinstallazione del pacchetto RMP (Red Hat Package Manager) installabile

Per disinstallare Runtime Environment per Linux con installato il pacchetto RMP installabile:

1. In uno script shell, immettere:

   -         rpm -e IBMJava2-JRE-1.4.2

   - Per Linux PPC 32-bit:

         rpm -e IBMJava2-JRE-ppc-1.4.2

   - Per Linux PPC 64-bit:

         rpm -e IBMJava2-JRE-ppc64-1.4.2

   In alternativa, è possibile utilizzare uno strumento grafico, come ad esempio kpackage oppure yast2
2. Rimuovere dall'istruzione PATH la directory in cui è stato installato Runtime Environment.
3. (Solo per Linux IA a 32 bit) Se è stato installato il plug-in Java, rimuovere i relativi file dalla directory del browser Web.

## Disinstallazione del pacchetto TAR (Tape Archive) compresso

Per disinstallare Runtime Environment per Linux con il pacchetto TAR compresso installato:

1. Rimuovere i file di Runtime Environment dalla directory in cui è stato installato Runtime Environment.
2. Rimuovere dall'istruzione PATH la directory in cui è stato installato Runtime Environment.
3. (Solo per Linux IA a 32 bit) Se è stato installato il plug-in Java, rimuovere i relativi file dalla directory del browser Web.

| | |

# JDBC/ODBC bridge reintegrato

|

JDBC/ODBC bridge, che è stato rimosso da IBM SDK, v1.4.0, |è stato reintegrato per v1.4.2.

# 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

- -D<nome_proprietà>=<valore>
  - Imposta una proprietà di sistema.
- -assert
  - Visualizza l'aiuto sulle opzioni correlate all'asserzione.
- -cp o -classpath <directory e file zip o jar separati da :>
  - Imposta il percorso di ricerca per le risorse e classe dell'applicazione. Se non vengono utilizzate -classpath e -cp e non si imposta CLASSPATH il classpath utente è predefinito sulla directory corrente (.). Consultare anche Gestione dei classpath.
- -help o -?
  - Visualizza le informazioni relative all'utilizzo.
- -showversion
  - Visualizza la versione del prodotto e continua.
- -verbose:[class | gc | jni]
  - Abilita l'output dettagliato.
- -version
  - Visualizza la versione del prodotto.
- -X
  - Visualizza le istruzioni relative alle opzioni non 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.

- -Xargencoding
  - Consente alle opzioni nel comando java di utilizzare le sequenze escape Unicode per rappresentare i caratteri che non sono in una serie di caratteri della locale. Le sequenze di escape Unicode hanno il formato \u#### in cui # è una cifra esadecimale.
- -Xbootclasspath:<directory e file zip o jar separati da ;>
  - Imposta il percorso di ricerca per le risorse e le classi bootstrap. Vi sono altri modi per impostare bootclasspath. Consultare Gestione di bootclasspath.
- -Xbootclasspath/a:<directory e file zip o jar separati da ;>
  - Accoda alla fine del percorso della classe bootstrap.
- -Xbootclasspath/p:<directory e file zip o jar separati da ;>
  - Inserisce all'inizio del percorso di classe bootstrap. Consultare Gestione di bootclasspath.
- -Xcheck:jni
  - Esegue un'ulteriore verifica per le funzioni JNI.
- -Xcheck:nabounds
  - Esegue un'ulteriore verifica per le operazioni di matrice JNI.
- -Xdebug
  - Avvia JVM con il debugger abilitato.
- -Xdisableexplicitgc
  - Cambia le chiamate a System.gc() in no-ops.
- -Xdisablejavadump
  - Disabilita la funzione java dump per la fine processo anomala. Quando java dump è disabilitata, viene eseguito lo scaricamento della fine processo di sistema. Java dump è utile quando si verifica un problema con il codice java. Se il problema è all'interno dei componenti di sistema, può risultare più utile richiamare il normale scaricamento di sistema.
- -Xgcpolicy:{optthruput | optavgpause }
  - Specifica l'impostazione della raccolta di dati obsoleti. L'impostazione predefinita è optthruput. Per ulteriori dettagli, consultare Specifica della politica di raccolta dei dati obsoleti.
- |-Xlp |
  |
  - Richiede alla JVM di allocare l'heap di Java (l'heap da cui gli oggetti Java vengono allocati) con pagine grandi, la cui dimensione è in megabyte. Se le pagine grandi non sono disponibili, l'heap di Java è allocata con le pagine standard di Linux, che sono di norma 4 KB di dimensione. La JVM utilizza shmget() per allocare pagine grandi per l'heap. Le pagine grandi sono supportate dai sistemi che eseguono dei kernel Linux V2.6 o successive.
- -Xms<dimensione>
  - Imposta la dimensione iniziale della memoria heap di Java.
- -Xmx<dimensione>
  - Imposta la dimensione massima della memoria heap di Java.
- -Xnoclassgc
  - Disabilita la raccolta disordinata di classi.
- -Xoss<dimensione>
  - Imposta la dimensione di stack Java minima per i thread.
- -Xquickstart
  - Migliora il tempo di avviamento delle applicazioni. Se non si specifica questa opzione, la compilazione iniziale dei metodi viene effettuata con un'alta ottimizzazione (cioè, JIT non ricompila metodi "hot" poiché i metodi sono inizialmente compilati con un'alta ottimizzazione).
- -Xrs
  - Riduce l'utilizzo dei segnali del sistema operativo.
- -Xrunnome_libreria[:opzioni]
  - Carica le librerie dell'helper. Per caricare più librerie, specificarle più volte nella riga comandi. Alcuni esempi di libreria sono:
    - -Xrunhprof[:help] | [:<opzione>=<valore>, ...]
      - Esegue heap, CPU, profili di controllo.
    - -Xrunjdwp[:help] | [:<opzione>=<valore>, ...]
      - Carica le librerie di debug per il supporto del debug remoto delle applicazioni.
- -Xss<dimensione>
  - Imposta la dimensione di stack nativo massima per i thread. Per ulteriori informazioni, consultare Gestione di stack mobili.
- -Xverbosegclog:<percorso per il file><nomefile>[X, Y]
  - 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 è 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 Y di file, ciascuno contenente il numero X di cicli gc valido per l'output verboseGC. Questi file hanno il formato nomefile1, nomefile2 e così via.
    Nota:
    La variabile di ambiente IBM_JVM_ST_VERBOSEGC_LOG è stata rimossa.
- -Xverify
  - Abilita verifiche precise, anticipando le impostazioni predefinite che saranno utilizzate.

## 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 ~/myapp/thisapp.class` equivale alla specifica di `java -classpath ~/myapp thisapp`.

| | |

## Configurazione dell'allocazione di memoria di pagine grandi

|

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. |I miglioramenti delle prestazioni delle pagine grandi sono principalmente causati dal numero ridotto di mancati riscontri nel TLB (Translation Lookaside Buffer). Questo miglioramento è causato dal TLB che associa un intervallo di memoria virtuale più grande.

|

Per configurare l'allocazione di memoria di pagine grandi, accertarsi prima che il kernel in esecuzione supporti le pagine grandi. Controllare che il file /proc/meminfo contenga le seguenti righe:

|

    HugePages_Total:     4
    |HugePages_Free:      4
    |Hugepagesize:     4096 kB

Notare che i valori di questi campi dipendono dal sistema. |Se il kernel non supporta le pagine grandi, bisogna compilare un nuovo kernel con il supporto per le pagine grandi.

|

La quantità di memoria che è possibile allocare alle pagine grandi è dato dal prodotto di `HugePages_Free * Hugepagesize`. Il responsabile del sistema deve configurare il numero di pagine grandi nel sistema per soddisfare i requisiti heap di Java. Il responsabile del sistema può configurare il numero di pagine grandi modificando il file /proc/sys/vm/nr_hugepages.

|

A volte, quando il sistema ha un numero adeguato di pagine grandi libere disponibili, il richiamo di shmget() per l'allocazione di memoria per pagine grandi ha esito negativo. Questo esito negativo si verifica perché le pagine di notevoli dimensioni non sono contigue. Per impedire questo esito negativo, il responsabile del sistema deve specificare l'opzione `hugepages=<n>` all'avvio del sistema (invece di farlo successivamente tramite /proc).

|

shmget(), che utilizza shmmax, alloca la memoria per le pagine grandi. Per modificare il valore di shmmax, modificare il file /proc/sys/kernel/shmmax.

|

Notare che shmget() ha esito positivo solo se viene eseguito dal root. Per utilizzare pagine grandi, è possibile eseguire Java come root oppure impostare il bit suid dell'eseguibile Java.

## 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/

# 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 segnali, il controllo viene dato a detto gestore. Altrimenti, il segnale viene ignorato (indipendentemente dal fatto che non sia l'azione predefinita del segnale).

Per le eccezioni ed i segnali di errore, JVM:

- Gestisce la condizione e recupera (quando l'eccezione è causata dal codice dell'applicazione), oppure
- Immette una sequenza di chiusura controllata che:
  1. Chiama il gestore segnali dell'applicazione per quel segnale
  2. Genera un Javadump, per descrivere lo stato di JVM al momento del malfunzionamento
  3. Chiama eventuali hook di uscita di applicazioni installate
  4. Esegue le necessarie pulizie per una chiusura pulita

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:

- Chiama il gestore segnali dell'applicazione per quel segnale
- Esegue tutti gli hook di chiusura delle applicazioni
- Chiama eventuali hook di uscita di applicazioni installate
- Esegue le necessarie pulizie JVM

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 è SIGQUIT, 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:

- Eccezioni: Il sistema operativo emette in modo sincrono un appropriato segnale di eccezione ogni volta che si verifica una condizione irreversibile.
- Errori: JVM emette un SIGABRT se rileva una condizione per la quale non può effettuare il recupero.
- Interruzioni: Per richiedere una chiusura, i segnali di interruzione vengono emessi in modo asincrono al di fuori del processo JVM.
- Controlli: Altri segnali di controllo usati da JVM.

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
SIGBUS | Eccezione | Errore Bus (tentativo di indirizzare ubicazione memoria non esistente) | Sì
SIGSYS | Eccezione | Emessa chiamata di sistema difettosa | Sì
SIGXCPU | Eccezione | Superato tempo limite CPU (in esecuzione da troppo tempo) | Sì
SIGXFSZ | Eccezione | Superato limite dimensione file | Sì
SIGABRT | Errore | Fine anomala. JVM emette questo segnale quando rileva un problema JVM. | Sì
SIGINT | Interruzione | Attenzione interattiva (CTRL-C). JVM esce normalmente. | Sì
SIGTERM | Interruzione | Richiesta termine. JVM uscirà normalmente. | Sì
SIGHUP | Interruzione | Disconnessione. JVM esce normalmente. | Sì
SIGUSR1 | Controllo | Definito dall'utente. Usato da alcuni JVM per controllo interno. | No
SIGUSR2 | Controllo | Definito dall'utente. Usato da alcuni JVM per controllo interno. | No
SIGQUIT | Controllo | Segnale di uscita per un terminale. Usato da JVM per effettuare dei Javadump. | Sì
SIGTRAP | Controllo | Interno usato da dbx o ptrace. Usato da alcuni JVM per controllo interno. | Sì
SIGPIPE | Controllo | Scrittura su pipe non letta. Ignorato da JVM. | No

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 `1 (SIGHUP)`, `2 (SIGINT)`, `4 (SIGILL)`, `6 (SIGABRT)`, `7 (SIGEMT)`, `8 (SIGFPE)`, `10 (SIGBUS)`, `11 (SIGSEGV)`, `12 (SIGSYS)`, `15 (SIGTERM)`, e `24 (SIGXCPU)` causano 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 concatenazione di segnali

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.

La funzione di concatenazione di segnali abilita un'applicazione a collegare e caricare la libreria condivisa libjsig.so prima delle librerie di sistema. La libreria libjsig.so che chiamate quali `signal()`, `sigset()` e `sigaction()` vengano intercettate così che i loro gestori non sostituiscano i gestori di segnale della JVM. Al contrario, tali chiamate salvano i nuovi gestori di segnale o li concatenano dietro 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 libjsig.so:

- Eseguire il collegamento all'applicazione che crea oppure inserisce una JVM:

      gcc -L$JAVA_HOME/bin -ljsig
      	-L$JAVA_HOME/bin/classic -ljvm java_application.c

  oppure
- Utilizzare la variabile di ambiente LD_PRELOAD:

      export LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<java_application> (bash e ksh)

      setenv LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<applicazione_java> (csh)

  (Presumendo che `JAVA_HOME` sia impostato; altrimenti, utilizzare /opt/IBMJava2-142/jre.)

Se si installano gestori di segnale che utilizzano `sigaction()` , alcuni indicatori sa_flags non vengono rispettati quando la JVM utilizza il segnale. Tali indicatori sono:

- SA_NOCLDSTOP - Sempre non impostato.
- SA_NOCLDWAIT - Sempre non impostato.
- SA_RESTART - Sempre impostato.
- SA_ONSTACK - Questo è sempre impostato (solo SIGSEGV) per Linux IA e zSeries e non è impostato per Linux PPC.

La libreria libjsig.so nasconde anche i gestori di segnale della JVM all'applicazione. Per questo motivo, chiamate come `signal()`, `sigset()` e `sigaction()` eseguite dopo l'avvio della JVM non restituiscono un riferimento al gestore di segnale della JVM ma restituiscono i gestori installati prima dell'avvio della JVM.

| | |

# Implementazione del pool di gestori di connessioni 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.

# 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 comandi :

`java -version`

# (Solo Linux IA a 32 bit) Utilizzo del plug-in di Java

Il plug-in Java è un plug-in del browser Web. Se viene utilizzato il plug-in di Java, è possibile ignorare il valore predefinito del browser Web di JVM ed utilizzare invece il Runtime Environment per l'esecuzione di applet o di bean nel browser.

La documentazione relativa al plug-in Java è disponibile sul sito Sun all'indirizzo: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/.

In questo release di SDK, il plug-in Java non supporta la stampa.

Il plug-in di Java è supportato su Netscape 4, Netscape 6 e Mozilla, come fornito dalla distribuzione.

## Installazione e configurazione del plug-in Java per Netscape 6 e Mozilla

Per installare e configurare il plug-in Java per Netscape 6 o Mozilla, creare un collegamento simbolico dal file della libreria /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so alla directory dei plug-in del proprio browser (/percorso di installazione del browser/plugins).

Per rendere il plug-in Java disponibile a tutti gli utenti:

1. Collegarsi come root.
2. Inserire un collegamento simbolico al file di libreria /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so nella directory plugin Mozilla o Netscape (di norma /usr/local/mozilla/plugins/ (o netscape), anche se potrebbe essere diversa in alcune distribuzioni).

       ln -s /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so \
          /usr/local/mozilla/plugins/

Nota:
libjavaplugin_oji.so deve essere collegato simbolicamente e non copiato; in caso contrario, non è possibile trovare l'ubicazione della JVM.

## Installazione e configurazione del plug-in di Java per Netscape 4

Per installare e configurare il plug-in Java per Netscape 4, creare un collegamento simbolico dal file della libreria /opt/IBMJava2-142/jre/bin/javaplugin.so alla directory dei plug-in del proprio browser (/percorso di installazione del browser/plugins).

Per rendere il plug-in Java disponibile all'utente corrente:

1. Se non esiste già, creare una directory con il nome plugins nella directory $HOME/.netscape.
2. Creare un collegamento simbolico dal file di libreria /opt/IBMJava2-142/jre/bin/javaplugin.so a /$HOME/.netscape/plugins.

Per rendere il plug-in Java disponibile a tutti gli utenti:

1. Collegarsi come root.
2. Inserire un collegamento simbolico al file di libreria /opt/IBMJava2-142/jre/bin/javaplugin.so nella directory plugin (di norma /usr/local/netscape/plugins/, anche se potrebbe essere diversa in alcune distribuzioni).

       ln -s /opt/IBMJava2-142/jre/bin/javaplugin.so \
          /usr/local/netscape/plugins/

Nota:
javaplugin.so deve essere collegato simbolicamente e non copiato; in caso contrario, non è possibile trovare l'ubicazione della JVM.

## Utilizzo del plug-in Java con browser Mozilla compilati gcc3.2.x

Se si sta utilizzando una distribuzione fornita con un browser Mozilla compilato gcc3.2.x (SLES8, Suse8.1), bisogna utilizzare le librerie di plug-in compilate gcc3 che vengono fornite con IBM SDK for Linux, v1.4.2: libjavaplugin_ojigcc3.so e libjavaplugin_jnigcc3.so. Per utilizzare queste librerie, creare un collegamento simbolico a libjavaplugin_ojigcc3.so sotto la directory <dir_installazione_mozilla>/plugins:

    ln -s <sdkdir>/jre/bin/libjavaplugin_ojigcc3.so libjavaplugin_ojigcc3.so

## Utilizzo dei parametri DBCS

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 `<APPLET>`,`<OBJECT>` e `<EMBED>`. 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 la tag `<META>` nella sezione `<HEAD>`, come riportato di seguito:

    <meta http-equiv="Content-Type" content="text/html; charset=big5">

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 la tag correttamente. In questo caso, è possibile forzare il browser in modo da ignorare questa tag, ma potrebbe essere necessario modificare manualmente la codifica.

E' possibile specificare quale codifica utilizzare per l'analisi del file HTML:

- Netscape 4: Menu Visualizza -> Serie di caratteri
- Mozilla: Menu Visualizza -> Codifica d caratteri

# (Solo Linux IA a 32 bit) Utilizzo di Web Start

Java Web Start consente la distribuzione di applicazioni basate sulla tecnologia Java. Collega il computer e Internet e consente all'utente di avviare e gestire applicazioni direttamente dal Web. Java Web Start consente l'attivazione delle applicazioni con un solo clic ed assicura che l'utente stia eseguendo sempre la versione più aggiornata del programma, eliminando le procedure di installazione o di aggiornamento. Spesso, la distribuzione del software nel Web richiede che l'utente ricerchi il programma di installazione sul Web, lo scarichi e lo esegua. Dopo avere eseguito il programma di installazione, vengono richieste le directory e le opzioni di installazione, come ad esempio, completa, tipica e minima. Tale attività può richiedere tempo ed essere complicata ed inoltre, va ripetuta per ogni nuova versione del software.

Al contrario, le applicazioni distribuite sul Web, come il client email e il calendario HTML sono pronte per l'installazione e l'utilizzo. Il browser Web ha reso automatico tale processo. Non vi sono complicati passi di scaricamento, installazione e configurazione e si eseguirà sempre la versione più aggiornata. Java Web Start ha gli stessi vantaggi delle applicazioni complete.

Per ulteriori informazioni su Web Start, consultare: http://java.sun.com/products/javawebstart e se si desiderano ulteriori pubblicazioni, consultare: http://java.sun.com/j2se/1.4.2/docs/guide/jws/index.html.

## Installazione di Web Start

Lo script di installazione di Web Start viene installato con JRE per Java V1.4.2.

Lo script è denominato /opt/IBMJava2-142/jre/bin/webstart_install_sdk.sh. Per utilizzare Web Start, eseguire lo script. Impostare la directory di lavoro corrente sulla posizione in cui si desidera installare Web Start. La procedura di installazione crea una sottodirectory denominata javaws nella directory di lavoro corrente.

La procedura di installazione aggiorna anche i tipi mime utilizzati da Mozilla e da altri browser.

E' possibile richiamare Web Start in tre modi:

1. Selezionare un collegamento in una pagina Web che si riferisce ad un file .jnlp.
2. Avviare javaws dalla directory javaws creata in precedenza e visualizzare la finestra Web Start da cui è possibile selezionare le applicazioni.
3. Uno script shell, tipo `javaws <URL>`, dove `<URL>` è l'ubicazione del file .jnlp.

Tutte queste azioni fanno in modo che Web Start avvii l'applicazione selezionata. Se è la prima volta che si utilizza l'applicazione, questa viene scaricata. Quando l'applicazione viene richiamata successivamente, viene eseguita una ricerca sul sito Web per verificare la disponibilità di aggiornamenti. Web Start scarica tali aggiornamenti prima dell'avvio dell'applicazione.

Se si verifica un errore in un file jnlp (ad esempio, un nome di tag non valido), Web Start viene interrotto senza visualizzare un messaggio di errore.

# Gestione degli stack mobili

Su un sistema Linux a stack non mobili, indipendentemente da quanto impostato per -Xss, viene fornita una dimensione di stack nativo minima di 256 KB. Su un sistema Linux a stack mobili, i valori specificati per -Xss vengono applicati. Pertanto, se si sta eseguendo una migrazione da un sistema Linux con stack non mobili, è necessario verificare che tutti i valori -Xss specifichino delle dimensioni sufficienti e non dipendano dal valore minimo di 256 KB.

(solo Linux IA a 32 bit) Alcune distribuzioni Linux, come, ad esempio, Red Hat, hanno abilitato una funzione GLIBC detta 'a stack mobili'. A causa di limitazioni del kernel Linux, JVM non viene eseguito su hardware SMP con gli stack mobili abilitati se il livello del kernel è inferiore a 2.4.10. In questo ambiente, gli stack mobili devono essere disabilitati prima di avviare JVM o qualsiasi applicazione che determina l'avvio di JVM. Su Red Hat, è possibile disabilitare gli stack mobili esportando una variabile di ambiente:

    export LD_ASSUME_KERNEL=2.2.5

# Passaggio del metodo di immissione nelle lingue DBCS

Nei sistemi DBCS (double-byte character set), se si desidera passare il metodo di immissione, occorre utilizzare la classe java.util.prefs.Preferences invece delle variabili di ambiente IBMJAVA_INPUTMETHOD_SWITCHKEY e IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS. Consultare Specifiche Framework del metodo di input Sun per i dettagli.

# Installazione dell'applicazione in un sistema utente

Dopo aver sviluppato il prodotto, se si desidera disporne, sarà necessario installarlo su un sistema utente, configurare il sistema dell'utente affinché supporti il software e configurare l'ambiente di runtime.

Se si utilizza Runtime Environment per Linux, accertarsi che l'installazione non ricopra un'installazione esistente, a meno che non si tratti di una versione Runtime Environment per Linux precedente.

Per distribuire Runtime Environment per Linux, è possibile installarlo sul proprio sistema e copiare i file di Runtime Environment richiesti nel set di installazione. Se viene scelto questo approccio, è necessario inserire tutti i file richiesti con Runtime Environment per Linux. Il software Runtime Environment per Linux può essere ridistribuito solo se vengono inclusi tutti i file. Quando viene fornita l'applicazione, essa dispone di una propria copia di Runtime Environment per Linux.

Per informazioni sui file che devono essere redistribuiti, consultare l'Accordo di licenza.

# Limiti noti

Le sezioni seguenti illustrano i limiti noti di Runtime Environment per Linux.

## Limiti validi per tutte le piattaforme Linux tranne dove indicato

- Potrebbe non essere possibile utilizzare gli Appunti di sistema con i caratteri DBCS (double-byte character set) per copiare le informazioni tra applicazioni Linux e Java se si utilizza KDE (K Desktop Environment).
- SDK implementa i sottoprocessi Java come sottoprocessi nativi, quindi ciascun sottoprocesso costituirà un processo separato di Linux. Se il numero dei sottoprocessi Java supera il numero massimo di processi consentiti, viene visualizzato un messaggio di errore, un errore SIGSEGV o il sistema si blocca.

  Il numero massimo dei sottoprocessi disponibili viene stabilito in base al minimo di quanto riportato di seguito:

  - Le impostazioni dell'utente (ulimit -u) in /etc/security/limits.conf
  - Il limite definito in /proc/sys/kernel/threads_max
  - Il limite PTHREAD_THREADS_MAX definito in libpthreads.so (la modifica richiede la ricompilazione di glibc)

  Tuttavia, la memoria virtuale potrebbe esaurirsi prima di raggiungere il numero massimo di thread.

- Se si termina un'applicazione Java con Ctrl-C, diversi processi potrebbero essere lasciati in sospeso.
- Il tentativo di visualizzare finestre create con Swing potrebbe determinare un ritardo di alcuni secondi.
- I risultati di KeyEvent che includono l'utilizzo del tasto ALT variano in base ai diversi gestori di finestre in Linux. Inoltre, variano anche dai risultati di altri sistemi operativi. Nella finestra di Enlightenment, Alt+A e Maius+Alt+A comportano l'esecuzione di diverse funzioni di modifica, mentre Ctrl+Alt+A non produce alcun risultato. In WindowMaker, invece la combinazione di tasti Ctrl+Alt+A è associata ad una funzione.
- In Linux X Window System, the la tastiera è impostata su: 64 0xffe9 (Alt_L) 0xffe7 (Meta_L) e 113 0xffea (Alt_R) 0xffe8 (Meta_R). Per abilitare tale funzione, immettere quanto segue ad una richiesta comandi shell:

      xmodmap -pk

  Questo è il motivo per cui SDK considera che Meta e Alt vengano premuti insieme. Per evitare tale problema, è possibile eliminare Meta_x, immettendo quanto riportato di seguito ad una richiesta comandi shell:

      xmodmap -e "keysym Alt_L = Alt_L" -e "keysym Alt_R = Alt_R"

  Nota:
  Tale operazione potrebbe influire su altre applicazioni X-Window in esecuzione nello stesso schermo se utilizzano il tasto Meta eliminato.
- La creazione di coppie di chiavi DSA di lunghezza insolita può richiedere molto tempo su macchine lente. Il ritardo non indica un blocco. L'algoritmo di generazione delle chiavi DSA è stato ottimizzato in modo da generare lunghezze di chiavi standard (ad esempio 512, 1024) più velocemente di altre.
- I programmi nativi non possono creare un JVM 1.1. Non è possibile richiamare JNI_CreateJavaVM() e passargli una versione di JNI_VERSION_1_1(0x00010001). Le versioni che possono essere passate sono:
  - JNI_VERSION_1_2(0x00010002)
  - JNI_VERSION_1_4(0x00010004)

  La JVM creata in ogni caso è quella specificata dalle librerie (quindi 1.2.2, 1.3.x, 1.4.x), non quella indicata dall'interfaccia JNI. L'API dell'interfaccia non influisce sulla specifica della lingua implementata dalla JVM, dalle API di libreria della classe o da altre aree di funzionamento della JVM. L'API dell'interfaccia specifica solo il modo in cui il codice nativo può richiamare il funzionamento richiesto.

- Solo per gli utenti di cinese classico, i tasti Invio, Spazio, Indietro ed ESC non funzionano nel modo previsto quando si utilizzano gli IME LinYi ZhuYin, YiTian ZhuYin e Bosham per l'immissione dei caratteri TCH. Il tasto Invio inserisce una nuova riga, il stato ESC è utilizzato per cancellare una stringa modificata o la finestra candidati e la barra spaziatrice inserisce uno spazio. La finestra candidati dovrebbe scomparire dopo che viene premuto il tasto di commit e non dovrebbe essere visualizzata quando si preme il tasto Indietro mentre si utilizzano gli IME Bosham, LinYi ZhuYin e YiTian ZhuYin per l'immissione di caratteri del cinese classico.
- Se sono in esecuzione molti thread contemporaneamente, potrebbe essere visualizzato un messaggio di avvertenza: `java.lang.OutOfMemoryError`. Tale messaggio indica che le risorse di sistema della macchina sono in esaurimento; i messaggi possono essere determinati dalle seguenti cause:
  1. Non è possibile creare nuovi thread perchè:
     - Il numero di processi creati supera il limite utente.
     - Non sono disponibili risorse di sistema sufficienti per creare nuovi thread. In questo caso, potrebbero essere visualizzate anche altre eccezioni Java, in base all'applicazione in esecuzione.
  2. La memoria del kernel è in esaurimento oppure è frammentata. Potrebbero essere visualizzati messaggi kernel relativi all'esaurimento della memoria in /var/log/messages con gli ID processo terminati.
  Provare a regolare il sistema in modo da incrementare le risorse di sistema corrispondenti.
- Durante l'installazione, se è già stata installata una versione precedente di questo prodotto distribuita da Red Hat, RPM (Red Hat Package Manager) indica che il pacchetto IBM è precedente rispetto a qualsiasi versione del prodotto distribuita da Red Hat. Questa condizione si verifica perchè Red Hat aggiunge al pacchetto RPM un "numero di serie" che ricopre lo schema della versione del prodotto nel pacchetto e, per impostazione predefinita, RPM non installa un pacchetto precedente ad un pacchetto già installato. L'opzione --oldpackage del comando rpm consente di installare il nuovo pacchetto IBM.
- In SDK Versione 1.4.2, le applicazioni in esecuzione su delle macchine SMP (symmetric multiprocessor) su SLES 8 hanno delle prestazioni migliori con un'implementazione JVM IBM modificata di monitor Java. Poiché le prestazioni della maggior parte delle applicazioni verranno migliorate o non subiranno alcuna modifica, il nuovo algoritmo è adesso il comportamento predefinito. Se, invece, la nuova impostazione predefinita riduce le prestazioni della propria JVM, è possibile ripristinare il vecchio algoritmo impostando la variabile di ambiente: `export IBM_JVM_MONITOR_OLD=<qualsiasi valore>`.

  Per ulteriori informazioni, consultare la Diagnostics Guide for v1.4.2.

- Quando si esegue un'applicazione java awt/swing asu una macchina Linux e si esporta la visualizzazione su una seconda macchina, è possibile che si verifichino dei problemi nella visualizzazione di alcune finestre di dialogo se il gruppo di font caricato sulla macchina client X è diverso dal gruppo caricato sulla macchina server X. Questo problema può verificarsi in particolare con SLES8 con delle locale in cinese, dove l'installazione predefinita della versione server installa i font arphic ma l'installazione del client non lo fa. Per evitare questo problema, installare gli stessi font su entrambe le macchine.
- |Se la propria locale di sistema sta utilizzando una codifica UTF-8, alcune funzioni SDK potrebbero generare una sun.io.MalformedInputException. Per rilevare se il proprio sistema sta utilizzando una codifica UTF-8, esaminare le variabili di ambiente specifiche per la locale, quali LANG o LC_ALL per vedere se finiscono con il suffisso ".UTF-8". Se si riceve questasun.io.MalformedInputException, modificare i caratteri che non rientrano nell'intervallo ASCII a 7 bit (0x00 - 0x7f) e non sono rappresentati come valori letterali di carattere Unicode in valori letterali di carattere Unicone Java (ad esempio: '\u0080'). E' anche possibile aggirare questo problema rimuovendo il suffisso ".UTF-8" dalle variabili di ambiente specifiche della locale; ad esempio, se la propria macchina ha una locale predefinita di "en_US.UTF-8", |impostare LANG su "en_US". | |
  Nota:
  |
  Alcune distribuzioni di RedHat, incluso Redhat9 e RHEL3, utilizzano la codifica UTF-8 per impostazione predefinita.
  |
  |
- |Se si sta utilizzando AMI e xcin in un ambiente tra varie piattaforme (ad esempio, se si tenta di esportare la visualizzazione tra un sistema a 32 bit ed un sistema a 64 bit o tra un sistema big-endian ed un sistema little-endian) si potrebbero verificare dei problemi. Se si verifica questo tipo di problema, rivolgersi al distributore Linux. |
  |
- |Su Redhat Enterprise Linux 3.0, i caratteri cinesi potrebbero non essere visualizzati nei componenti di testo AWT fatta eccezione per i caratteri GB2312 nella locale GB18030 in cinese. |
  |

## Limitazioni di Linux IA a 32 bit

- Il plug-in Java non supporta la stampa in questo release di SDK.
- SLES 8 per il coreano potrebbe non visualizzare i caratteri coreani. Per correggere questo problema, installare il pacchetto rpm "baekmuk-ttf" ed eseguire `SUSEconfig`:

        # touch /usr/X11R6/lib/X11/fonts/truetype/fonts.scale.baekmuk
        # SUSEconfig

- Per gli utenti di testo in arabo, quando si utilizza Linux con una scheda video Matrox e l'accelerazione abilitata, potrebbe verificarsi una distorsione dei caratteri quando si utilizza drawString per visualizzare dei font grandi. Questo problema è causato dal driver per queste schede. Il metodo consigliato per aggirare questo problema è la disabilitazione dell'accelerazione per la periferica.

## Limitazioni di Linux PPC a 32 bit e a 64 bit

- Se il codice Java utilizza le chiamate JNI e una qualsiasi chiamata dispone di più di 8 elementi mobili o di parametri doppi, il codice C dovrà essere compilato con il livello gcc-2.95.3 Free Software Foundation (FSF) del compilatore GNU C (GCC).
- Se si esegue XFree86 versione 3.x, viene ricevuto un errore SIGSEGV. Per evitare tale problema, si consiglia di utilizzare XFree86 versione 4.x.
- Se la data è antecedente al 1970, all'avvio di Java si otterrà un errore di eccezione. Per risolvere questo problema, impostare manualmente la macchina sulla data corrente.

## Limitazioni di Linux PPC a 32 bit

- I CD di installazione di SLES 8.0 per PowerPC non includono i font cinesi TrueType adeguati per Java per una corretta visualizzazione del cinese. Installare il pacchetto ttf-hanyi-20021016-0.noarch.rpm da United Linux 1.0 per migliorare la visualizzazione dei font cinesi.

## Limitazioni di Linux zSeries a 64 bit

Le seguenti limitazioni sono valide per gli utenti di Linux zSeries a 64 bit in cinese, taiwanese e coreano:

- Il server del metodo di input in cinese e taiwanese (xcin) non è stato testato con la versione 1.4.2.
- Solo per gli utenti del cinese moderno, alcuni caratteri cinesi potrebbero non essere visualizzati. Per evitare questo problema, scaricare il seguente font TrueType su SLES8 per il proprio sistema zSeries a 64 bit:
  - ttf-hanyi-20021016-0
  Il font è disponibile dal sito web SUSE all'indirizzo: http://www.suse.com/index_us.html.
- Solo per gli utenti del cinese classico, alcuni caratteri cinesi potrebbero non essere visualizzati. Per evitare questo problema, scaricare i seguenti font TrueType su SLES8, che funzione come un client grafico:
  - ttf-arphic-bkai00mp-20001125-103
  - ttf-arphic-gbsn00lp-20001125-103
  - ttf-arphic-gkai00mp-20001125-103
  - ttf-arphic-bsmi00lp-20001125-103
  - ttf-arphic-20001125-323
  I font sono disponibili dal sito web SUSE all'indirizzo: http://www.suse.com/index_us.html.

## Limitazioni di Linux zSeries a 32 bit e a 64 bit

- Se si utilizza l'audio su una macchina che non dispone di scheda audio, potrebbe essere visualizzato un messaggio che indica che la memoria non è sufficiente quando Java prova a riprodurre suoni. Il messaggio viene visualizzato nella console, ma non influenza l'applicazione Java.
- Sebbene il kernel Linux nelle distribuzioni correnti fornisca il supporto per IP6 (Internet Protocol versione 6), potrebbero verificarsi alcuni problemi durante il relativo utilizzo. In questo rilascio è incluso il supporto per IP6 da Java, tuttavia è necessario disabilitare il supporto utilizzando l'opzione -Djava.net.preferIPv4Stack=true del comando Java. Se si installa un kernel che supporta completamente IP6, questa opzione non è necessaria.

# 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:

- Tramite e-mail a idrcf@hursley.ibm.com.
- Con fax:
  - Dal Regno Unito: 01962 842327
  - Da fuori il Regno Unito:<prefisso internazionale>44 1962 842327
- Per posta a:
  IBM United Kingdom Ltd
  User Technologies,
  Mail Point 095
  Hursley Park
  Winchester
  Hampshire
  SO21 2JN United Kingdom

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:

- IBM Director of Licensing
  IBM Corporation
  North Castle Drive, Armonk
  NY 10504-1758 U.S.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:

- IBM World Trade Asia Corporation Licensing
  2-31 Roppongi 3-chome, Minato-ku
  Tokyo 106-0032, Japan

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:

- JIMMAIL@uk.ibm.com
  [Hursley Java Technology Center (JTC) contact]

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, iSeries, pSeries e zSeries sono marchi della International Business Machines Corporation.

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

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/.