Nota: Prima di usare questo prodotto e le relative informazioni, leggere le informazioni contenute nella sezione Informazioni particolari.
Questa edizione del manuale User Guide si applica a IBM Runtime Environment per Linux su architettura AMD64, Java 2 Technology Edition, Versione 1.4.2.
(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.
Questa guida per l'utente descrive IBM(R) Runtime Environment per Linux(TM) nell'architettura AMD64 .
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 SDK include Runtime Environment per Linux, che consente di eseguire solo le 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.
Runtime Environment contiene Java Virtual Machine, le classi Java principali e i file di supporto. Runtime Environment contiene solo un insieme secondario delle classi disponibili in SDK e consente di eseguire le classe Java ma non consente la compilazione dei programmi Java.
Runtime Environment per Linux include file di oggetto binari e file di classe necessari per il supporto di un programma al momento dell'esecuzione. Runtime Environment per Linux non include gli strumenti di sviluppo, come ad esempio appletviewer o il compilatore Java javac) o le classi pertinenti solo ad un sistema di sviluppo.
Inoltre, i pacchetti API Java Communications vengono forniti per essere utilizzati con Runtime Environment per Linux. Se è stata installata la API Java Communications, è possibile consultare le relative informazioni nel manuale JavaComm API User Guide.
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.
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 il JIT, utilizzare l'opzione Xint. Dalla finestra di richiesta shell, immettere quanto segue:
java -Xint class
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)
Se JIT non è in uso, viene visualizzato un messaggio che comprende:
(JIT disabilitato)
Java Native Interface (JNI) è compreso nel Runtime Environment. Per informazioni sull'utilizzo di JNI, consultare il sito Web della Sun: http://java.sun.com/j2se/1.4.2/docs/guide/jni.
IBM non supporta Native Method Interface in questo rilascio. Non utilizzare tale interfaccia nelle proprie applicazioni.
Una volta installato Runtime Environment, modificare lo script di login di shell ed aggiungere la seguente directory all'istruzione PATH:
/opt/IBMJava2-142/jre/bin
Se è installato Runtime Environment in una directory diversa da /opt/IBMJava2-142/, sostituire /opt/IBMJava2-142/ con la directory in cui è installato Runtime Environment per Linux.
Il processo da utilizzare per rimuovere Runtime Environment per Linux è diverso se è stato installato il pacchetto RPM (Red Hat Package Manager) installabile oppure il pacchetto 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.
Per disinstallare Runtime Environment per Linux con installato il pacchetto RMP installabile:
rpm -e IBMJava2-JRE-1.4.2-0.0
Per disinstallare Runtime Environment per Linux con il pacchetto TAR compresso installato:
Lo strumento java avvia un'applicazione Java. Richiede come parametro un nome classe java iniziale. Se non viene fornito viene visualizzato un messaggio relativo all'utilizzo.
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 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.
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.
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.
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 -X sotto elencate sono non standard e soggette a modifica senza preavviso.
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 anche 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).
In alternativa, per specificare che il nome classe e gli argomenti comando sono con codifica UTF8, utilizzare -Xargencoding:utf8 oppure con codifica ISO8859_1 utilizzando -Xargencoding:latin.
I comandi java e javaw forniscono messaggi di output tradotti. Tali messaggi differiscono in base alla lingua in cui Java è in esecuzione. Le descrizione di errore dettagliate e le altre informazioni di debug restituite da java sono in Inglese.
E' possibile specificare un nome classe come un nome file completo che include il percorso completo e l'estensione .class. Nelle versioni precedenti, era possibile specificare solo la classe che era relativa al CLASSPATH e non era consentita 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.
L'opzione di runtime JVM -Xgcpolicy specifica la politica di raccolta dati obsoleti.
-Xgcpolicy prende i valori optthruput (il valore predefinito), optavgpause o gencon. 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
-Xgcpolicy:gencon
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.
JVM utilizza due tecniche per ridurre i tempi di pausa:
L'opzione della riga comandi -Xgcpolicy:optavgpause 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à di raccolta dei dati obsoleti contemporaneamente all'esecuzione normale del programma per ridurre le interruzioni causate dalla raccolta della memoria riservata. L'opzione -Xgcpolicy:optavgpause limita inoltre l'effetto dell'incremento della dimensione della memoria riservata nella lunghezza della pausa della raccolta dei dati obsoleti. L'opzione -Xgcpolicy:optavgpause è molto utile per configurazioni che hanno grandi memorie riservate. Con il tempo di pausa ridotto, è possibile che si verifichi una riduzione nella capacità di elaborazione delle applicazioni.
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, è 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à. L'asilo è il più piccolo del due e contiene oggetti più giovani; il possesso è più grande e contiene oggetti più vecchi. Gli oggetti vengono prima assegnati all'asilo; se essi sopravvivono abbastanza a lungo, vengono eventualmente promossi nell'area di possesso.
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ù spazio riciclabile. Invece di utilizzare tempi di pausa lunghi per la raccolta dell'intera memoria riservata, i dati nell'asilo vengono raccolti più spesso e, se l'asilo è 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 -Xgcpolicy:gencon richiede l'uso combinato della raccolta dati simultanea e generazionale per ridurre il tempo impiegato nella pausa della raccolta dei dati obsoleti.
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 JVM creerà un file diagnostico denominato "javadump." 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.
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 è installato un gestore applicazioni per questo segnale e non è stata specificata l'opzione riga comandi -Xnosigchain, quando JVM termina l'elaborazione, viene richiamato il gestore applicazioni per questo 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 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.
Per i segnali di errore e eccezione, JVM esegue quanto segue:
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 è SIGQUIT, che genera un Javadump.
Tabella 1 di seguito vengono illustrati i segnali usati da JVM. I segnali sono raggruppati in una tabella per tipo o uso, nel seguente modo:
Nome segnale | Tipo segnale | Descrizione | Disabilitato da -Xrs |
---|---|---|---|
SIGBUS | Eccezione | Accesso errato alla memoria (allineamento errato di dati ) | No |
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. | No |
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ì |
SIGQUIT | Controllo | Un segnale di uscita per un terminale. JVM lo utilizza per effettuare i Javadump. | No |
SIGPIPE | Controllo | Pipe interrotta. Impostare su SIG_IGN | 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), 7 (SIGBUS), 8 (SIGFPE), 11 (SIGSEGV) e 15 (SIGTERM) nei thread JVM causano la chiusura di JVM, pertanto, è necessario che un gestore segnali non tenti di eseguire il recupero da tali segnali a meno che non richieda più i servizi di JVM.
Runtime Environment contiene il concatenamento dei 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 concatenamento dei segnali consente ad un'applicazione di 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 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:
5gcc -L$JAVA_HOME/bin -ljsig -L$JAVA_HOME/bin/j9vm -ljvm java_application.coppure
export LD_PRELOAD=$JAVA_HOME/bin/libjsig.so; java_application (bash e ksh) setenv LD_PRELOAD=$JAVA_HOME/bin/libjsig.so; java_application (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:
La libreria libjsig.so nasconde anche i gestori segnali 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.
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.
Per ulteriori informazioni, consultare il sito Java della Sun: http://java.sun.com.
Per ottenere il numero di build e di versione, digitare quanto riportato di seguito in una richiesta comandi :
java -version
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.
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.
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.
Le sezioni seguenti illustrano i limiti noti di Runtime Environment per Linux.
Il numero massimo dei sottoprocessi disponibili viene stabilito in base al minimo di quanto riportato di seguito:
Tuttavia, la memoria virtuale potrebbe esaurirsi prima di raggiungere il numero massimo di thread.
xmodmap -pkQuesto è 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"
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.
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.
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.
Linux è un marchio della Linus Torvalds.
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/.