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

# Benutzerhandbuch

# Copyrightvermerk

Anmerkung: Vor Verwendung dieser Informationen und des dazugehörigen Produkts sollten Sie die allgemeinen Informationen im Abschnitt Bemerkungen lesen.

Diese Ausgabe des Benutzerhandbuchs bezieht sich auf folgende Plattformen, wenn sie verfügbar sind:

- IBM 32-bit Runtime Environment for Linux on Intel(TM) architecture, Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment for Linux on Intel architecture, Java 2 Technology Edition, Version 1.4.2
- IBM 32-bit Runtime Environment for Linux on iSeries(TM) and pSeries(R), Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment for Linux on iSeries and pSeries, Java 2 Technology Edition, Version 1.4.2
- IBM 31-bit Runtime Environment for Linux on zSeries(R), Java 2 Technology Edition, Version 1.4.2
- IBM 64-bit Runtime Environment for Linux on zSeries, Java 2 Technology Edition, Version 1.4.2

Weiterhin bezieht sich diese Ausgabe des Benutzerhandbuchs auf alle nachfolgenden Releases und Änderungen bis zur Herausgabe neuer Dateiversionen.

(c) Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. Alle Rechte vorbehalten.

(c) Copyright International Business Machines Corporation, 1999, 2004. Alle Rechte vorbehalten.

(c) Copyright IBM Deutschland GmbH 1999, 2004. Alle Rechte vorbehalten.

# Vorwort

Dieses Benutzerhandbuch beschreibt IBM(R) Runtime Environment für alle Linux-Plattformen. Plattformspezifische Informationen sind als solche genau markiert. Stellen Sie sicher, dass das Material, das Sie lesen, sich auf die von Ihnen verwendete Plattform bezieht. Insbesondere Web Start und das Plug-in sind für 32-bit SDK for Linux unter Intel Architecture spezifisch.

IBM Runtime Environment umfasst Java Virtual Machine (JVM), die wichtigsten Java-Klassen von Sun Microsystems und Unterstützungsdateien. Runtime Environment enthält nicht alle Klassen des SDK-Pakets.

Das Benutzerhandbuch stellt allgemeine Informationen zu Runtime Environment und spezielle Informationen zu allen Unterschieden zwischen der IBM Implementierung und der Sun Microsystems-Implementierung von Runtime Environment zur Verfügung. Lesen Sie dieses Benutzerhandbuch zusammen mit der ausführlicheren Dokumentation auf der folgenden Website von Sun Microsystems: http://java.sun.com.

Das Handbuch IBM JVM Diagnostics Guide enthält weitere Informationen zu IBM JVM.

Unter der folgenden Adresse finden Sie eine Liste der Distributionen, mit denen SDK unter Linux getestet wurde: http://www-106.ibm.com/developerworks/java/jdk/linux/tested.html

Beachten Sie, dass es sich bei Runtime Environment for Linux um eine Untergruppe von SDK handelt, mit der Sie nur Java-Anwendungen ausführen können. Wenn Sie SDK installiert haben, ist auch Runtime Environment enthalten.

Die Begriffe "Runtime Environment" und "Java Virtual Machine" sind in diesem Handbuch gleichbedeutend.

Technische Änderungen, die in diesem Benutzerhandbuch zu Version 1.4.2 enthalten sind, außer unwichtiger oder offensichtlicher Änderungen, wie beispielsweise die Aktualisierung von "1.4.1" in "1.4.2", sind rot dargestellt, wenn sie als HTML-Datei angezeigt oder als Farbkopie ausgedruckt werden. Außerdem wird durch vertikale Balken am linken Rand auf diese Änderungen hingewiesen.

# Inhaltsverzeichnis

Copyrightvermerk
Vorwort
Übersicht
Konventionen
Versionskompatibilität
Information zu Linux PPC64-Benutzern
In Runtime Environment for Linux enthaltene Dateien
Lizenzvereinbarung
Der JIT-Compiler (Just-in-Time)
Java Native Interface und Native Method Interface
Installieren unter Red Hat Enterprise Linux (RHEL) 3
Konfigurieren von Runtime Environment for Linux
Deinstallieren von Runtime Environment for Linux
Deinstallieren des installierbaren RPM-Pakets (Red Hat Package Manager)
Deinstallieren des komprimierten TAR-Pakets (Tape Archive)
JDBC/ODBC-Bridge erneut eingerichtet
Starten einer Java-Anwendung
Befehle im Überblick
Optionen
Standardoptionen
Vom Standard abweichende Optionen
Globalisierung des Befehls 'java'
Arbeiten mit Klassenpfaden
Konfigurieren einer Speicherzuordnung von großen Seiten
Arbeiten mit dem Merkmal 'bootclasspath'
Angeben der Garbage Collection-Richtlinie
Pausezeit
Verringerung der Pausezeit
Umgebungen mit sehr vollen Freispeichern
Weitere Informationen zu Garbage Collection
Signalverarbeitung durch die JVM
Von der JVM verwendete Signale
Verbinden eines nativen Codetreibers mit der Signalverkettungsbibliothek
Implementieren des Steuerroutinenpools für Verbindungen für RMI
Abrufen der IBM Build- und Versionsnummer
(Nur Linux IA, 32 Bit) Verwenden des Java-Plug-ins
Installieren und Konfigurieren des Java-Plug-ins für Netscape 6 und Mozilla
Installieren und Konfigurieren des Java-Plug-ins für Netscape 4
Verwenden des Java Plug-ins mit Mozilla-Browsern, die mit gcc3.2.x kompiliert wurden
Verwenden von DBCS-Parametern
(Nur Linux IA, 32 Bit) Verwenden von 'Web Start'
Installieren von Web Start
Verwenden der Funktion 'floating stacks'
Ändern der Eingabemethode in DBCS-Sprachen
Installieren Ihrer Anwendung auf dem System eines Benutzers
Bekannte Einschränkungen
Einschränkungen, die für alle Linux-Plattformen gelten (wenn nicht anders angegeben)
Einschränkungen für Linux IA (32 Bit)
Einschränkungen für Linux PPC (32 Bit) und (64 Bit)
Einschränkungen für Linux PPC (32 Bit)
Einschränkungen für Linux zSeries (64 Bit)
Einschränkungen für Linux zSeries (32 und 64 Bit)
Kommentare zu diesem Handbuch
Bemerkungen
Marken

# Übersicht

Runtime Environment for Linux enthält die zum Erstellen einer Java-Laufzeitumgebung und zum Ausführen von Java-Programmen erforderlichen Untergruppen von Klassen. Es umfasst außerdem die Java Virtual Machine, Java-Klassen und Unterstützungsdateien. Runtime Environment for Linux enthält nur eine Untergruppe der Klassen aus SDK.

## Konventionen

In diesem Handbuch lautet das Standardinstallationsverzeichnis von SDK /opt/IBMJava2-142/. Für die unten aufgeführten Plattformen gelten folgende Standardinstallationsverzeichnisse. Verwenden Sie das für Ihre Plattform entsprechende Verzeichnis, wenn /opt/IBMJava2-142/ angezeigt wird:

- Linux IA (32 Bit): /opt/IBMJava2-142/
- Linux IA (64 Bit): /opt/IBMJava2-142/
- Linux PPC (32 Bit): /opt/IBMJava2-ppc-142/
- Linux PPC (64 Bit): /opt/IBMJava2-ppc64-142/
- Linux zSeries (31 Bit): /opt/IBMJava2-s390-142/
- Linux zSeries (64 Bit): /opt/IBMJava2-s390x-142/

## Versionskompatibilität

Normalerweise werden alle Applets oder Anwendungen, die in Version 1.1.8, 1.2.2 oder 1.3.1 von SDK for Linux ausgeführt werden können, auch in dieser Version ordnungsgemäß ausgeführt. Applets, die unter Java 1.4.2-APIs von Sun ausgeführt werden, funktionieren nur mit Browsern, die Java 1.4.2-APIs unterstützen.

Es ist nicht gewährleistet, dass mit Version 1.4.2 kompilierte Klassen mit einem Runtime Environment-Release vor Version 1.4.0 funktionieren.

### Information zu Linux PPC64-Benutzern

Runtime Environment Version 1.4.2 wird unter SLES 8 nicht unterstützt. Wenn Sie das SDK unter SLES 8 ausführen wollen, verwenden Sie SDK Version 1.4.1 SR1.

## In Runtime Environment for Linux enthaltene Dateien

Runtime Environment for Linux enthält SO-Dateien, die nicht für die Verwendung mit einem Debugger geeignet sind, sowie Klassendateien, die zur Unterstützung eines Programms zur Laufzeit benötigt werden. Runtime Environment for Linux enthält keines der Entwicklungstools, wie appletviewer oder javac, und auch keine Klassen, die nur zu einem Entwicklungssystem gehören.

Außerdem wird das Paket von Java Communications API für die Verwendung mit Runtime Environment for Linux bereitgestellt. (Außer unter Linux IA (64 Bit) und Linux zSeries (31 und 64 Bit)).

## Lizenzvereinbarung

Die Datei LICENSE_xx.html enthält die Lizenzvereinbarung für die Software von Runtime Environment for Linux. (xx ist eine Abkürzung für die Sprache.)

Zum Anzeigen oder Drucken der Lizenzvereinbarung können Sie die Datei in einem Webbrowser öffnen.

## Der JIT-Compiler (Just-in-Time)

Der JIT-Compiler (Just-in-Time), libjitc.so, generiert während der Ausführung dynamisch Maschinencode für häufig verwendete Bytecodesequenzen in Java-Anwendungen und Java-Applets.

Runtime Environment für Linux enthält den JIT-Compiler (libjitc.so), der standardmäßig aktiviert ist. Sie können den JIT-Compiler inaktivieren, um beispielsweise mögliche Probleme mit einer Java-Anwendung, einem Java-Applet oder dem Compiler selbst einzugrenzen.

Geben Sie zum Inaktivieren des JIT-Compilers folgenden Befehl an einer Shelleingabeaufforderung in dem Fenster ein, über das Sie die Anwendung ausführen möchten:

        export JAVA_COMPILER=NONE

Geben Sie folgenden Befehl an der Shelleingabeaufforderung ein, um den JIT-Compiler zu aktivieren:

        export JAVA_COMPILER=jitc

Wenn Sie prüfen wollen, ob der JIT-Compiler aktiviert ist, geben Sie folgenden Befehl an der Shelleingabeaufforderung ein:

        java -version

Wenn der JIT-Compiler aktiv ist, wird folgende Nachricht angezeigt:

    (JIT enabled: jitc)

Wenn der JIT-Compiler nicht aktiv ist, wird folgende Nachricht angezeigt:

    (JIT disabled)

## Java Native Interface und Native Method Interface

Java Native Interface (JNI) ist in Runtime Environment enthalten. Weitere Informationen zur Verwendung von JNI finden Sie auf der folgenden Sun-Website: http://java.sun.com.

IBM unterstützt Native Method Interface in diesem Release nicht. Diese Schnittstelle dürfen Sie in Ihren Anwendungen nicht verwenden.

# Installieren unter Red Hat Enterprise Linux (RHEL) 3

Runtime Environment ist von der gemeinsam genutzten Bibliothek /usr/lib/libstdc++-libc6.2-2.so.3 abhängig. Diese Bibliothek wird nicht standardmäßig für Red Hat Enterprise Linux (RHEL) 3.0 installiert.

Der RPM (Red Hat Package Manager), der diese Bibliothek enthält, ist `compat-libstdc++-7.3-2.96.122.i386.rpm`. Geben Sie Folgendes an einer Shelleingabeaufforderung ein, um die Bibliothek zu installieren:

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

Gehen Sie wie folgt vor, um die Bibliothek in die Installation von RHEL 3 aufzunehmen:

1. Wenn Sie die Anzeige Package Defaults erreichen, wählen Sie die Option Customize the Set of packages to be installed aus.
2. Wählen Sie in der Anzeige Package Group Selection unter den Development-Optionen Legacy Software Development aus.

# Konfigurieren von Runtime Environment for Linux

Nach der Installation von Runtime Environment for Linux müssen Sie Ihr Shellanmeldescript editieren und in der Anweisung PATH folgendes Verzeichnis hinzufügen:

/opt/IBMJava2-142/jre/bin

Wenn Sie Runtime Environment for Linux in einem anderen Verzeichnis installiert haben, müssen Sie das Verzeichnis /opt/IBMJava2-142/ durch das Verzeichnis ersetzen, in dem Sie Runtime Environment installiert haben.

Anmerkung:
(Nur für chinesische Benutzer von Linux IA, 32 Bit) Auf Grund der Inkonsistenz der Verschlüsselungen von Schriftarten auf dem RedHat Advanced Server ist es bei der Installation für eine Umgebung, in der Chinesisch die voreingestellte Sprache sein soll, von Vorteil, bei der Installation Englisch als voreingestellte Sprache festzulegen und sie nach Abschluss der Installation in Chinesisch zu ändern. Andernfalls werden chinesische Zeichen möglicherweise nicht angezeigt.

# Deinstallieren von Runtime Environment for Linux

Der Deinstallationsprozess von Runtime Environment ist davon abhängig, ob auf Ihrem System das installierbare RPM-Paket (Red Hat Package Manager) oder das komprimierte TAR-Paket (Tape Archive) installiert ist. Anweisungen hierzu finden Sie im Abschnitt Deinstallieren des installierbaren RPM-Pakets (Red Hat Package Manager) oder Deinstallieren des komprimierten TAR-Pakets (Tape Archive).

## Deinstallieren des installierbaren RPM-Pakets (Red Hat Package Manager)

Gehen Sie wie folgt vor, um Runtime Environment for Linux zu deinstallieren, wenn Sie das installierbare RPM-Paket installiert haben:

1. Geben Sie Folgendes an einer Shelleingabeaufforderung ein:

   -         rpm -e IBMJava2-JRE-1.4.2

   - Für Linux PPC (32 Bit):

         rpm -e IBMJava2-JRE-ppc-1.4.2

   - Für Linux PPC (64 Bit):

         rpm -e IBMJava2-JRE-ppc64-1.4.2

   Sie können auch ein grafisches Tool verwenden, wie beispielsweise kpackage oder yast2.
2. Entfernen Sie das Verzeichnis, in dem Sie Runtime Environment installiert haben, aus der Anweisung PATH.
3. (nur Linux IA, 32 Bit) Wenn Sie das Java-Plug-in installiert haben, entfernen Sie die Java-Plug-in-Dateien aus dem Webbrowser-Verzeichnis.

## Deinstallieren des komprimierten TAR-Pakets (Tape Archive)

Gehen Sie wie folgt vor, um Runtime Environment for Linux zu deinstallieren, wenn Sie das komprimierte TAR-Paket installiert haben:

1. Entfernen Sie die Runtime Environment-Dateien aus dem Verzeichnis, in dem Sie Runtime Environment installiert haben.
2. Entfernen Sie das Verzeichnis, in dem Sie Runtime Environment installiert haben, aus der Anweisung PATH.
3. (nur Linux IA, 32 Bit) Wenn Sie das Java-Plug-in installiert haben, entfernen Sie die Java-Plug-in-Dateien aus dem Webbrowser-Verzeichnis.

# JDBC/ODBC-Bridge erneut eingerichtet

Die JDBC/ODBC-Bridge, die von IBM SDK Version 1.4.0 entfernt wurde, wurde für Version 1.4.2. erneut eingerichtet.

# Starten einer Java-Anwendung

Mit dem Tool java wird eine Java-Anwendung gestartet.

JVM sucht die Systemstartklasse und andere verwendete Klassen in den drei folgenden Positionsgruppen: im Klassenpfad des Bootprogramms, in den installierten Erweiterungen und im Benutzerklassenpfad. Argumente, die auf den Klassennamen oder den Namen der JAR-Datei folgen, werden an die Funktion "main" weitergegeben.

Der Befehl javaw ist identisch mit dem Befehl java, außer dass beim Verwenden des Befehls javaw kein zugeordnetes Konsolfenster angezeigt wird. Verwenden Sie den Befehl javaw, wenn kein Fenster mit einer Eingabeaufforderung angezeigt werden soll. Der Startbefehl javaw zeigt im Falle eines fehlgeschlagenen Starts ein Dialogfenster mit Fehlerinformationen an.

## Befehle im Überblick

Die Befehle java und javaw haben folgende Syntax:

    java [ Optionen ] Klasse [ Argumente ... ]
    java [ Optionen ] -jar Datei.jar [ Argumente ... ]
    javaw [ Optionen ] Klasse [ Argumente ... ]
    javaw [ Optionen ] -jar Datei.jar [ Argumente ... ]

Elemente in eckigen Klammern sind optional.

Optionen
  Befehlszeilenoptionen.
Klasse
  Der Name der Klasse, die aufgerufen werden soll.
Datei.jar
  Der Name der Datei mit der Erweiterung 'jar', die aufgerufen werden soll. Sie wird nur mit der Option -jar verwendet.
Argumente
  Die Argumente, die an die Funktion main weitergeleitet werden.

Wenn die Option -jar angegeben wurde, enthält die benannte JAR-Datei Klassen- und Ressourcendateien für die Anwendung, wobei die Systemstartklasse über den Manifestheader für die Hauptklasse angegeben wird.

## Optionen

Das Startprogramm verfügt über mehrere Standardoptionen, die in der aktuellen Laufzeitumgebung und auch in zukünftigen Releases unterstützt werden. Daneben gibt es mehrere vom Standard abweichende Optionen.

### Standardoptionen

- -D<Merkmalname>=<Wert>
  - Definiert ein Systemmerkmal.
- -assert
  - Zeigt Hilfe für auf Festlegungen bezogene Optionen an.
- -cp oder -classpath <durch : getrennte Verzeichnisse und ZIP- oder JAR-Dateien>
  - Definiert den Suchpfad für Anwendungsklassen und Ressourcen. Wenn die Optionen -classpath und -cp nicht verwendet werden und wenn CLASSPATH nicht definiert wurde, ist der Benutzerklassenpfad standardmäßig das aktuelle Verzeichnis (.). Siehe auch den Abschnitt Arbeiten mit Klassenpfaden.
- -help oder -?
  - Zeigt einen Benutzungshinweis an.
- -showversion
  - Zeigt die Produktversion an und setzt den Vorgang fort.
- -verbose:[class | gc | jni]
  - Aktiviert die ausführliche Ausgabe.
- -version
  - Zeigt die Produktversion an.
- -X
  - Zeigt Hilfe für vom Standard abweichende Optionen an.

### Vom Standard abweichende Optionen

Bei den unten aufgelisteten Optionen -X handelt es sich um eine Untergruppe der verfügbaren Optionen. Sie weichen vom Standard ab und können jederzeit ohne vorherige Ankündigung geändert werden.

- -Xargencoding
  - Mit dieser Option können die Optionen des Befehls java Unicode-Escapezeichenfolgen verwenden, um Zeichen darzustellen, die sich nicht im Zeichensatz der Ländereinstellung befinden. Unicode-Escapezeichenfolgen weisen das Format \u#### auf. Dabei ist # eine Hexadezimalziffer.
- -Xbootclasspath:<durch ; getrennte Verzeichnisse und ZIP- oder JAR-Dateien>
  - Definiert den Suchpfad für Bootklassen und -ressourcen. Zum Definieren des Bootklassenpfads gibt es andere Möglichkeiten. Siehe den Abschnitt Arbeiten mit dem Merkmal 'bootclasspath'.
- -Xbootclasspath/a:<durch ; getrennte Verzeichnisse und ZIP- oder JAR-Dateien>
  - Fügt an das Ende des Bootklassenpfads an.
- -Xbootclasspath/p:<durch ; getrennte Verzeichnisse und ZIP- oder JAR-Dateien>
  - Fügt vor dem Klassenpfad des Bootprogramms ein. Siehe den Abschnitt Arbeiten mit dem Merkmal 'bootclasspath'.
- -Xcheck:jni
  - Führt zusätzliche Prüfungen für JNI-Funktionen aus.
- -Xcheck:nabounds
  - Führt zusätzliche Prüfungen für JNI-Bereichsoperationen aus.
- -Xdebug
  - Startet JVM mit aktiviertem Debugger.
- -Xdisableexplicitgc
  - Ändert Aufrufe von System.gc() in `no-op`.
- -Xdisablejavadump
  - Inaktiviert die Java-Speicherauszugsfunktion für abnormale Prozessbeendigung. Wenn der Java-Speicherauszug inaktiviert ist, wird der Speicherauszug für die Beendigung des Systemprozesses ausgeführt. Der Java-Speicherauszug wird empfohlen, wenn ein Fehler im Java-Code auftritt. Wenn Fehler bei Systemkomponenten auftreten, ist es möglicherweise hilfreicher, den normalen Systemspeicherauszug abzurufen.
- -Xgcpolicy:{optthruput | optavgpause }
  - Gibt die Einstellung für Garbage Collection an. Die Standardeinstellung lautet optthruput. Weitere Informationen finden Sie im Abschnitt Angeben der Garbage Collection-Richtlinie.
- -Xlp
  - Fordert JVM an, dem Java-Freispeicher (der Freispeicher, aus dem Java-Objekte zugeordnet werden) große Seiten zuzuordnen, deren Größe in Megabyte angegeben wird. Wenn keine großen Seiten verfügbar sind, werden dem Java-Freispeicher Linux-Standardseiten zugeordnet, die normalerweise 4 KB groß sind. JVM verwendet shmget(), um dem Freispeicher große Seiten zuzuordnen. Große Seiten werden von Systemen unterstützt, die Linux-Kernel der Version 2.6 oder höher ausführen.
- -Xms<Größe>
  - Definiert die Anfangsgröße des Java-Freispeichers.
- -Xmx<Größe>
  - Definiert die Maximalgröße des Java-Freispeichers.
- -Xnoclassgc
  - Inaktiviert Garbage Collection für Klassen.
- -Xoss<Größe>
  - Definiert die Maximalgröße für den Java-Stack für einen beliebigen Thread.
- -Xquickstart
  - Optimiert die Startzeit von Anwendungen. Wenn Sie diese Option nicht angeben, wird die ursprüngliche Kompilierung von Methoden mit einem hohen Optimierungsgrad durchgeführt (dies bedeutet, dass der JIT-Compiler kritische Methoden nicht erneut kompiliert, da die Methoden ursprünglich mit einem hohen Optimierungsgrad kompiliert wurden).
- -Xrs
  - Reduziert die Verwendung von Betriebssystemsignalen.
- -XrunBibliothekname[:Optionen]
  - Lädt Bibliotheken mit Hilfeprogrammen. Geben Sie zum Laden mehrerer Bibliotheken diese Option mehrmals in der Befehlszeile an. Beispiele für diese Bibliotheken:
    - -Xrunhprof[:help] | [:<Option>=<Wert>, ...]
      - Erstellt Profile für Freispeicher, CPU oder Überwachungsprogramme.
    - -Xrunjdwp[:help] | [:<Option>=<Wert>, ...]
      - Lädt Debugbibliotheken, damit das ferne Debugging von Anwendungen unterstützt wird.
- -Xss<Größe>
  - Definiert die Maximalgröße für den nativen Stack für einen beliebigen Thread. Weitere Informationen finden Sie im Abschnitt Arbeiten mit der Funktion 'floating stacks'.
- -Xverbosegclog:<Dateipfad><Dateiname>[X, Y]
  - Die verboseGC-Ausgabe wird in die angegebene Datei geschrieben. Wenn die Datei bereits vorhanden ist, wird sie überschrieben. Ist dies nicht der Fall, wird die Ausgabe an stderr umgeleitet, falls eine vorhandene Datei nicht geöffnet oder eine neue Datei nicht erstellt werden kann. Wenn Sie die Argumente X und Y (bei beiden handelt es sich um ganze Zahlen) angeben, wird die verboseGC-Ausgabe an Y Dateien umgeleitet, von denen jede X gc-Zyklen mit verboseGC-Ausgaben enthält. Diese Dateien weisen folgendes Format auf: Dateiname1, Dateiname2 usw.
    Anmerkung:
    Die Umgebungsvariable IBM_JVM_ST_VERBOSEGC_LOG wurde entfernt.
- -Xverify
  - Ermöglicht strengste Prüfungen, die zukünftige Standardwerte vorwegnehmen.

## Globalisierung des Befehls 'java'

Mit dem Befehl java und mit anderen Java-Startbefehlen (wie beispielsweise javaw) kann ein Klassenname mit beliebigen Unicode-Zeichen angegeben werden, die im Zeichensatz der aktuellen Ländereinstellung enthalten sind.

Sie können beliebige Unicode-Zeichen im Klassennamen und in den Argumenten angeben, indem Sie Java-Escapezeichen verwenden. Für diesen Vorgang müssen Sie die Option -Xargencoding angeben. Verwenden Sie zum Angeben eines Unicode-Zeichens Escapezeichenfolgen im Format `\u####`. Dabei ist # eine Hexadezimalziffer (0-9, A-F).

Wenn Sie angeben möchten, dass der Klassenname und die Befehlsargumente im UTF8- oder ISO8859_1-Code verschlüsselt sind, verwenden Sie -Xargencoding:utf8 und -Xargencoding:latin.

Wenn Sie eine andere Ländereinstellung als Englisch verwenden, zeigen die Befehle java und javaw in Runtime Environment übersetzte Ausgabenachrichten an. Diese Nachrichten unterscheiden sich von den Nachrichten in der Version 1.3.1. Sie unterscheiden sich außerdem auf Grund der Ländereinstellung, mit der Java ausgeführt wird. Die detaillierte Fehlerbeschreibung und andere von java zurückgegebene Fehlerinformationen werden in Englisch angezeigt. Fehlerinformationen, die während der Initialisierung zurückgegeben werden, werden in eckigen Klammern angezeigt.

## Arbeiten mit Klassenpfaden

In Runtime Environment können Sie einen Klassennamen als vollständigen Dateinamen mit einem vollständigen Pfad und der Erweiterung .class angeben. In vorherigen Versionen von SDK konnten Sie die Klasse nur in Bezug auf CLASSPATH angeben. Die Erweiterung .class war nicht zulässig. Durch Angabe des vollständigen Dateinamens können Sie eine Java-Anwendung über den Desktop oder über ein Dateistartprogramm starten. Wenn Sie eine Datei mit der Erweiterung .class mit Pfad und Erweiterung angeben, wird der angegebene Pfad in CLASSPATH eingefügt. Beispielsweise entspricht der Befehl `java ~/myapp/thisapp.class` der Angabe `java -classpath ~/myapp thisapp`.

## Konfigurieren einer Speicherzuordnung von großen Seiten

Große Seiten werden in erster Linie verwendet, um Leistungssteigerungen in Anwendungen zu erzielen, die große Speichermengen zuordnen und häufig auf diesen Speicher zugreifen. Die Leistungssteigerungen durch die Verwendung großer Seiten werden hauptsächlich durch die geringe Anzahl Fehlschläge im Translation Lookaside Buffer (TLB) erzielt. Grund dieser Verbesserung ist der TLB, der einen größeren virtuellen Speicherbereich zuordnet.

Stellen Sie zum Konfigurieren einer Speicherzuordnung von großen Seiten zunächst sicher, dass der aktive Kernel große Seiten unterstützt. Überprüfen Sie, dass die Datei /proc/meminfo die folgenden Zeilen enthält:

    HugePages_Total:     4
    HugePages_Free:      4
    Hugepagesize:     4096 kB

Beachten Sie, dass die Werte dieser Felder sytemabhängig sind. Wenn der Kernel keine großen Seiten unterstützt, müssen Sie einen neuen Kernel kompilieren, der große Seiten unterstützt.

Die Speicherkapazität, die Sie großen Seiten zuordnen können, wird durch das Produkt `HugePages_Free * Hugepagesize` vorgegeben. Der Systemadministrator sollte die Anzahl großer Seiten im System konfigurieren, um die Java-Freispeicheranforderungen zu erfüllen. Der Systemadministator kann die Anzahl Seiten durch das Editieren der Datei /proc/sys/vm/nr_hugepages konfigurieren.

Wenn dem System eine ausreichende Anzahl freier Seiten zur Verfügung steht, kann es sein, dass der Aufruf an shmget() bezüglich der Speicherzuordnung von großen Seiten fehlschlägt. Dieser Fehler tritt auf, da die großen Seiten nicht zusammenhängen. Zum Verhindern dieses Fehlers muss der Systemadministrator die Option `hugepages=<n>` beim Systemstart angeben (besser als später über /proc).

shmget(), das shmmax verwendet, ordnet Speicher von großen Seiten zu. Zum Modifizieren des Werts von shmmax editieren Sie die Datei /proc/sys/kernel/shmmax.

Beachten Sie, dass shmget() nur von Root erfolgreich ausgeführt werden kann. Zur Verwendung großer Seiten können Sie entweder Java als Root ausführen oder SUID-Bit des Java-Programms festlegen.

## Arbeiten mit dem Merkmal 'bootclasspath'

Sie können das Systemmerkmal ibm.jvm.bootclasspath mit der im Abschnitt Starten einer Java-Anwendung beschriebenen Option -D festlegen. Der Wert dieses Merkmals wird als zusätzlicher Suchpfad verwendet und kann zwischen die Werte eingefügt werden, die durch -Xbootclasspath/p: und den Klassenpfad des Bootprogramms definiert werden. Der Klassenpfad des Bootprogramms ist entweder der Standardpfad oder der über die Option -Xbootclasspath: definierte Pfad.

Implementieren Sie keine Anwendungen, bei denen mit der Option -Xbootclasspath: oder -Xbootclasspath/p: eine Klasse in den Dateien core.jar, graphics.jar, server.jar, security.jar, xml.jar, tools.jar oder charsets.jar überschrieben wird, da eine solche Implementierung gegen die Java 2 Runtime Environment-Binärcodelizenz verstößt.

## Angeben der Garbage Collection-Richtlinie

Die JVM-Laufzeitoption -Xgcpolicy gibt die Garbage Collection-Richtlinie an.

-Xgcpolicy nimmt die Werte optthruput (Standardwert) oder optavgpause an. Die Option steuert das Verhalten der Garbage Collection, so dass zwischen dem Durchsatz der Anwendung und des Gesamtsystems und den durch die Garbage Collection verursachten Pausezeiten abgewogen werden kann.

Das Format der Option und der zugehörigen Werte lautet wie folgt:

> -Xgcpolicy:optthruput

> -Xgcpolicy:optavgpause

### Pausezeit

Wenn eine Anwendung wegen des verfügbaren Freispeichers nicht sofort ein Objekt erstellen kann, ist die Garbage Collection für die Erkennung von Objekten ohne Verweis (Garbage) zuständig sowie für deren Löschung und für die Wiederherstellung eines Freispeicherstatus, mit dem sofortige und nachfolgende Zuordnungsanforderungen schnell beantwortet werden können. Solche Garbage Collection-Zyklen ergeben gelegentliche unerwartete Pausen bei der Ausführung des Anwendungscodes. Wenn sich die Größe und Komplexität der Anwendungen erhöht und wenn die Freispeicher entsprechend umfangreicher werden, tendiert diese Pausezeit der Garbage Collection dazu, größer zu werden. Der Standardwert optthruput für die Garbage Collection bietet Anwendungen einen sehr hohen Durchsatz, verursacht jedoch gelegentliche Pausen. Diese Pausen können wenige Millisekunden bis zu mehreren Sekunden dauern, je nachdem, wie groß der Freispeicher und das Garbagevolumen ist.

### Verringerung der Pausezeit

Die Option optavgpause verringert die Zeit dieser Garbage Collection-Pausen beträchtlich. Außerdem wird der Effekt eines höheren Freispeicherumfangs während der Garbage Collection-Pause begrenzt. Bei Konfigurationen mit großen Freispeichern ist diese Option besonders wichtig. Die Pausezeiten werden dadurch verringert, dass einige Garbage Collection-Aktivitäten gleichzeitig mit der normalen Programmausführung ausgeführt werden. Außer der Pausezeit wird je nach Anwendung möglicherweise auch der Anwendungsdurchsatz verringert.

### Umgebungen mit sehr vollen Freispeichern

Wenn der Java-Freispeicher nahezu voll ist und wenn sehr wenig zurückzufordernder Garbagespeicher vorhanden ist, werden Anforderungen für neue Objekte möglicherweise nicht schnell beantwortet, da kein Speicherbereich sofort verfügbar ist. Bei der Ausführung mit nahezu vollem Freispeicher kann die Anwendungsleistung geringer werden, unabhängig davon, welche der oben genannten Optionen Sie verwenden; wenn weiterhin Freispeicher angefordert wird, empfängt die Anwendung eine Ausnahmebedingung wegen ungenügender Speicherkapazität und JVM wird beendet, es sei denn, die Ausnahmebedingung wird abgefangen und bearbeitet. Zu diesem Zeitpunkt erstellt JVM zwei Diagnosedateien: eine Datei für den Freispeicherauszug und eine für den Java-Speicherauszug. Im Handbuch 'IBM JVM Diagnostics Guide' für Java 1.4.2 finden Sie detaillierte Informationen zu diesen Dateien, die zur Bestimmung der Ursachen für die hohe Belegung des Java-Freispeichers verwendet werden können. Das Handbuch 'IBM JVM Diagnostics Guide' finden Sie unter developerWorks unter folgender Adresse: http://www-106.ibm.com/developerworks/java/jdk/diagnosis/. In diesen Situationen sollten Sie entweder die Freispeichergröße mit der Option -Xmx erhöhen oder die Anzahl der verwendeten Anwendungsobjekte verringern.

### Weitere Informationen zu Garbage Collection

Detaillierte Informationen zu Garbage Collection finden Sie unter folgenden Adressen:

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/

# Signalverarbeitung durch die JVM

Wenn ein für die Java Virtual Machine (JVM) wichtiges Signal gesendet wird, wird eine Signalroutine aufgerufen. Diese Signalroutine legt fest, ob das Signal für einen Java- oder Nicht-Java-Thread aufgerufen wurde. Wurde das Signal für einen Java-Thread aufgerufen, steuert die JVM die Signalverarbeitung. Wurde das Signal für einen Nicht-Java-Thread aufgerufen und wurde zuvor mit der Anwendung, mit der die JVM installiert wurde, eine eigene Routine für das Signal installiert, übernimmt diese Signalroutine die Steuerung. Ist dies nicht der Fall, wird das Signal ignoriert (unabhängig davon, ob dies die Standardaktion des Signals ist).

Die JVM führt für Signale bei Ausnahmebedingungen und für Fehlersignale eine der folgenden Aktionen aus:

- Verarbeitung der Bedingung und Wiederherstellung (falls die Ausnahmebedingung durch den Anwendungscode verursacht wurde) oder
- Beginnen einer Sequenz für einen kontrollierten Systemabschluss. Dabei werden die folgenden Aktionen ausgeführt:
  1. Aufruf der Signalroutine Ihrer Anwendung für dieses Signal
  2. Ausgabe eines Java-Speicherauszugs, um den JVM-Status am Fehlerpunkt zu beschreiben
  3. Aufruf eines beliebigen durch die Anwendung installierten Abbruchhooks
  4. Ausführen der erforderlichen Bereinigung, damit ein ordnungsgemäßer Systemabschluss durchgeführt werden kann

Information zum Schreiben eines Startprogramms, das die oben aufgeführten Hooks angibt, finden Sie unter der folgenden Adresse: http://www-106.ibm.com/developerworks/java/library/i-signalhandling/. Dieser Abschnitt wurde für Java Version 1.3.1 geschrieben, gilt jedoch auch für spätere Versionen.

Bei Interruptsignalen beginnt die JVM ebenfalls eine Sequenz für einen kontrollierten Systemabschluss, der jedoch in diesem Fall wie eine normale Beendigung behandelt wird. Hierbei führt die JVM die folgenden Aktionen aus:

- Aufruf der Signalroutine Ihrer Anwendung für dieses Signal
- Ausführen aller Hooks für das Beenden der Anwendung
- Aufruf eines beliebigen durch die Anwendung installierten Exit-Hooks
- Ausführen der erforderlichen JVM-Bereinigung

Der Systemabschluss entspricht dem Systemabschluss, der über einen Aufruf der Java-Methode `System.exit()` eingeleitet wurde.

Weitere von der JVM verwendete Signale werden für die interne Steuerung verwendet und führen nicht zur Beendigung der JVM. Das einzige wichtige Steuerungssignal ist SIGQUIT, durch das ein Java-Speicherauszug generiert wird.

## Von der JVM verwendete Signale

In Tabelle 1 sind die von der JVM verwendeten Signale aufgeführt. Die Signale wurden in der Tabelle nach Typ oder Verwendung wie folgt zusammengefasst:

- Ausnahmebedingungen: Das Betriebssystem setzt beim Auftreten einer schwer wiegenden Bedingung ein entsprechendes Signal zum Anzeigen einer Ausnahmebedingung ab.
- Fehler: Die JVM setzt ein Signal SIGABRT ab, wenn sie eine Bedingung feststellt, aus der keine Wiederherstellung möglich ist.
- Interrupts: Interruptsignale werden außerhalb eines JVM-Prozesses asynchron abgesetzt, um einen Systemabschluss anzufordern.
- Steuerzeichen: Hierbei handelt es sich um andere Signale, die von der JVM zu Steuerungszwecken verwendet werden.

Tabelle 1. Von der JVM verwendete Signale
Signalname | Signaltyp | Beschreibung | Inaktiviert durch -Xrs
--- | --- | --- | ---
SIGSEGV | Ausnahmebedingung | Falscher Zugriff auf den Speicher (es wurden Daten in einen Speicherbereich geschrieben, auf den nicht zugegriffen werden kann). | Nein
SIGILL | Ausnahmebedingung | Nicht zulässige Anweisung (es wurde versucht, eine unbekannte Maschineninstruktion aufzurufen). | Nein
SIGFPE | Ausnahmebedingung | Ausnahmebedingung bei der Gleitkommaverarbeitung (Division durch Null). | Nein
SIGBUS | Ausnahmebedingung | Busfehler (es wurde versucht, eine nicht vorhandene Speicherposition anzugeben). | Ja
SIGSYS | Ausnahmebedingung | Es wurde ein ungültiger Systemaufruf abgesetzt. | Ja
SIGXCPU | Ausnahmebedingung | Das CPU-Zeitlimit wurde überschritten (die Ausführung eines Vorgangs dauerte zu lange). | Ja
SIGXFSZ | Ausnahmebedingung | Der Grenzwert für die Dateigröße wurde überschritten. | Ja
SIGABRT | Fehler | Abnormale Beendigung. Die JVM setzt dieses Signal ab, sobald sie einen JVM-Fehler feststellt. | Ja
SIGINT | Interrupt | Interaktiver Abruf (Strg-C). Die JVM wird normal beendet. | Ja
SIGTERM | Interrupt | Beendigungsanforderung. Die JVM wird normal beendet. | Ja
SIGHUP | Interrupt | Auflegen. Die JVM wird normal beendet. | Ja
SIGUSR1 | Steuerzeichen | Benutzerdefiniert. Dieses Signal wird von einigen JVMs für die interne Steuerung verwendet. | Nein
SIGUSR2 | Steuerzeichen | Benutzerdefiniert. Dieses Signal wird von einigen JVMs für die interne Steuerung verwendet. | Nein
SIGQUIT | Steuerzeichen | Ein Beendigungssignal für ein Terminal. JVM verwendet dieses Signal zum Ausführen von Java-Speicherauszügen. | Ja
SIGTRAP | Steuerzeichen | Ein internes Signal für die Verwendung durch dbx oder ptrace. Dieses Signal wird von einigen JVMs für die interne Steuerung verwendet. | Ja
SIGPIPE | Steuerzeichen | Schreibvorgang in eine Pipe, aus der keine Daten gelesen werden. JVM ignoriert dies. | Nein

Mit Hilfe der Option -Xrs (Reduzierung der Verwendung von Signalen) können Sie verhindern, dass JVM die meisten Signale verarbeitet. Weitere Informationen hierzu finden Sie auf der Sun-Website zum Startprogramm für Java-Anwendungen unter http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html.

Die Signale `1 (SIGHUP)`, `2 (SIGINT)`, `4 (SIGILL)`, `6 (SIGABRT)`, `7 (SIGEMT)`, `8 (SIGFPE)`, `10 (SIGBUS)`, `11 (SIGSEGV)`, `12 (SIGSYS)`, `15 (SIGTERM)` und `24 (SIGXCPU)` führen dazu, dass die JVM beendet wird. Daher sollte eine Anwendungssignalroutine bei diesen Signalen keine Wiederherstellung versuchen, es sei denn, die Services der JVM werden nicht mehr benötigt.

## Verbinden eines nativen Codetreibers mit der Signalverkettungsbibliothek

Runtime Environment enthält eine Signalverkettungsfunktion. Die Signalverkettung ermöglicht eine effizientere Interaktion der JVM mit nativem Code, über den eigene Signalroutinen installiert werden.

Mit der Signalverkettungsfunktion kann eine Anwendung mit der gemeinsam benutzten Bibliothek libjsig.so verbunden werden und diese Bibliothek vor den Systembibliotheken geladen werden. Mit Hilfe der Bibliothek libjsig.so wird sichergestellt, dass Aufrufe (wie z. B. `signal()`, `sigset()` und `sigaction()`) abgefangen werden, so dass die JVM-Signalroutinen nicht durch die zugehörigen Signalroutinen ersetzt werden. Stattdessen werden die neuen Signalroutinen durch diese Aufrufe gesichert oder nach den durch die JVM installierten Signalroutinen hinzugefügt. Wenn diese Signale zu einem späteren Zeit gesendet werden und nicht an die JVM gerichtet sind, werden die vorinstallierten Signalroutinen aufgerufen.

Führen Sie die folgenden Schritte aus, um libjsig.so zu verwenden:

- Stellen Sie eine Verbindung zu der Anwendung her, die eine JVM erstellt oder integriert:

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

  oder
- Verwenden Sie die Umgebungsvariable LD_PRELOAD:

      export LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<Java-Anwendung> (bash und ksh)

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

  (Dabei wird angenommen, das `JAVA_HOME` installiert ist. Verwenden Sie anderenfalls /opt/IBMJava2-142/jre.)

Wenn Sie Signalroutinen installieren, die `sigaction()` verwenden, werden einige sa_flags nicht überwacht, wenn die JVM das Signal verwendet. Dabei handelt es sich um folgende Markierungen:

- SA_NOCLDSTOP - Diese Option ist niemals festgelegt.
- SA_NOCLDWAIT - Diese Option ist niemals festgelegt.
- SA_RESTART - Wird in jedem Fall definiert.
- SA_ONSTACK - Ist immer für Linux IA und zSeries gesetzt (nur SIGSEGV), jedoch nicht für Linux PPC.

Die Bibliothek libjsig.so verdeckt auch JVM-Signalroutinen vor der Anwendung. Daher geben Aufrufe wie `signal()`, `sigset()` und `sigaction()`, die nach dem Starten der JVM ausgeführt werden, keinen Verweis mehr auf die JVM-Signalroutine sondern auf eine beliebige vor dem Starten der JVM installierte Routine zurück.

# Implementieren des Steuerroutinenpools für Verbindungen für RMI

Thread-Pooling für Steuerroutinen von RMI-Verbindungen wird nicht standardmäßig aktiviert.

Wenn Sie das Verbindungs-Pooling aktivieren wollen, das in der RMI-TCPTransport-Ebene implementiert ist, legen Sie die folgende Option fest:

    -Dsun.rmi.transport.tcp.connectionPool=true (oder einen Wert ungleich Null)

Diese Runtime Environment-Version verfügt über keine Einstellungen, die Sie verwenden können, um die Anzahl Threads im Verbindungspool zu begrenzen.

# Abrufen der IBM Build- und Versionsnummer

Geben Sie den folgenden Befehl an einer Shell-Eingabeaufforderung ein, um die IBM Buildnummer und die Versionsnummer abzurufen:

`java -version`

# (Nur Linux IA, 32 Bit) Verwenden des Java-Plug-ins

Beim Java-Plug-in handelt es sich um ein Webbrowser-Plug-in. Wenn Sie das Java-Plug-in verwenden, können Sie zum Ausführen von Applets oder Beans im Browser die Standard-JVM des Webbrowsers umgehen und stattdessen Runtime Environment verwenden.

Das Java-Plug-in wird von Sun auf folgender Website dokumentiert: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/.

Das Java-Plug-in unterstützt die Druckfunktion in diesem SDK-Release nicht.

Das Java Plug-in wird unter Netscape 4, Netscape 6 und Mozilla unterstützt, wie von Ihrer Distribution bereitgestellt.

## Installieren und Konfigurieren des Java-Plug-ins für Netscape 6 und Mozilla

Stellen Sie zum Installieren und Konfigurieren des Java-Plug-ins für Netscape 6 oder Mozilla eine symbolische Verbindung von der Bibliotheksdatei /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so mit dem Verzeichnis `plugins` des Browsers (/Installationspfad_des_Browsers/plugins) her.

Gehen Sie wie folgt vor, wenn das Java-Plug-in für alle Benutzer verfügbar sein soll:

1. Melden Sie sich als Root an.
2. Fügen Sie im Mozilla- oder Netscape-Plug-in-Verzeichnis (normalerweise /usr/local/mozilla/plugins/ (oder netscape), bei einigen Varianten auch anders bezeichnet) eine symbolische Verbindung zu der Bibliotheksdatei /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so ein.

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

Anmerkung:
Die Datei `libjavaplugin_oji.so` sollte symbolisch verbunden und nicht kopiert werden, da sie andernfalls nicht die Position der JVM feststellen kann.

## Installieren und Konfigurieren des Java-Plug-ins für Netscape 4

Stellen Sie zum Installieren und Konfigurieren des Java-Plug-ins für Netscape 4 eine symbolische Verbindung von der Bibliotheksdatei /opt/IBMJava2-142/jre/bin/javaplugin.so mit dem Verzeichnis `plugins` des Browsers (/Installationspfad_des_Browsers/plugins) her.

Gehen Sie wie folgt vor, wenn das Java-Plug-in für den aktuellen Benutzer verfügbar sein soll:

1. Erstellen Sie im Verzeichnis $HOME/.netscape ein Verzeichnis mit dem Namen `plugins`, falls es nicht bereits vorhanden ist.
2. Stellen Sie eine symbolische Verbindung von der Bibliotheksdatei /opt/IBMJava2-142/jre/bin/javaplugin.so mit dem Verzeichnis /$HOME/.netscape/plugins her.

Gehen Sie wie folgt vor, wenn das Java-Plug-in für alle Benutzer verfügbar sein soll:

1. Melden Sie sich als Root an.
2. Fügen Sie im Plug-in-Verzeichnis (normalerweise /usr/local/netscape/plugins/, bei einigen Varianten auch anders bezeichnet) eine symbolische Verbindung zu der Bibliotheksdatei /opt/IBMJava2-142/jre/bin/javaplugin.so ein.

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

Anmerkung:
Die Datei `javaplugin.so` sollte symbolisch verbunden und nicht kopiert werden, da sie andernfalls nicht die Position der JVM feststellen kann.

## Verwenden des Java Plug-ins mit Mozilla-Browsern, die mit gcc3.2.x kompiliert wurden

Wenn Sie eine Distribution verwenden, die mit einem Mozilla-Browser (SLES8, Suse8.1) geliefert wird, der mitgcc3.2.x kompiliert wurde, müssen Sie mit gcc3 kompilierte Plug-in-Bibliotheken verwenden, die mit IBM SDK for Linux, v1.4.2 geliefert wurden: libjavaplugin_ojigcc3.so und libjavaplugin_jnigcc3.so. Erstellen Sie zur Verwendung dieser Bibliotheken eine symbolische Verbindung zu libjavaplugin_ojigcc3.so im Verzeichnis <Installationsverzeichnis von Mozilla>/plugins:

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

## Verwenden von DBCS-Parametern

Das Java-Plug-in unterstützt Doppelbytezeichen (z. B. Traditionelles Chinesisch BIG-5, Koreanisch, Japanisch) als Parameter für die Tags `<APPLET>`,`<OBJECT>` und `<EMBED>`. Sie müssen die richtige Zeichencodierung für das HTML-Dokument auswählen, damit das Java-Plug-in den Parameter syntaktisch analysieren kann. Geben Sie die Zeichencodierung für das HTML-Dokument mit Hilfe des Tags `<META>` im Abschnitt `<HEAD>` wie folgt an:

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

In diesem Beispiel wird dem Browser mitgeteilt, dass er die HTML-Datei mit Hilfe der Zeichencodierung für Chinesisch BIG-5 syntaktisch analysieren soll. Alle Parameter werden ordnungsgemäß an das Java-Plug-in weitergeleitet. Einige der älteren Browserversionen erkennen diesen Tag möglicherweise nicht richtig. In diesem Fall können Sie erzwingen, dass der Browser diesen Tag ignoriert. Sie müssen die Codierung jedoch möglicherweise manuell ändern.

Sie können angeben, welche Codierung Sie verwenden möchten, um die HTML-Datei syntaktisch zu analysieren:

- Netscape 4: Ansicht -> Zeichensatz
- Mozilla: Anzeigen -> Zeichencodierung

# (Nur Linux IA, 32 Bit) Verwenden von 'Web Start'

Mit Hilfe von Java Web Start können Anwendungen implementiert werden, die auf der Java-Technologie basieren. Mit Java Web Start wird der Computer mit dem Internet verbunden, und der Benutzer kann Anwendungen direkt über das Web starten und verwalten. Mit Java Web Start können Anwendungen per Mausklick aktiviert werden. Außerdem wird mit Hilfe von Java Web Start sichergestellt, dass Sie immer die aktuelle Version ausführen, ohne dass Installations- oder Upgradeprozeduren erforderlich sind. Bei der Weitergabe von Software über das Web müssen Sie häufig das Installationsprogramm im Web suchen, herunterladen, auf dem Rechner erneut suchen und ausführen. Nachdem das Installationsprogramm ausgeführt wurde, werden Sie aufgefordert, Installationsverzeichnisse und Installationsoptionen anzugeben, wie beispielsweise "Vollständig", "Standard" oder "Minimal". Dies kann eine zeitaufwendige und komplizierte Task sein, die bei der Installation jeder neuen Version der Software wiederholt werden muss.

Im Gegensatz dazu können webimplementierte Anwendungen, wie beispielsweise der HTML-basierte E-Mail-Client und Kalender, umgehend installiert und verwendet werden. Der Webbrowser hat den Prozess automatisiert. Es sind keine komplizierten Schritte zum Herunterladen, Installieren und Konfigurieren erforderlich, und Sie können sichergehen, dass die aktuelle Version ausgeführt wird. Java Web Start bietet Anwendungen mit vollem Funktionsumfang dieselben Vorteile.

Weitere Informationen zu Web Start finden Sie unter der folgenden Adresse: http://java.sun.com/products/javawebstart. Weiteres Dokumentationsmaterial finden Sie unter http://java.sun.com/j2se/1.4.2/docs/guide/jws/index.html.

## Installieren von Web Start

Das Web Start-Installationsscript wird zusammen mit der JRE für Java Version 1.4.2 installiert.

Das Script hat den Namen /opt/IBMJava2-142/jre/bin/webstart_install_sdk.sh. Wenn Sie mit Web Start arbeiten möchten, müssen Sie das Script ausführen. Legen Sie als aktuelles Arbeitsverzeichnis das Verzeichnis fest, in dem Sie Web Start installieren möchten. Während des Installationsprozesses wird im aktuellen Arbeitsverzeichnis ein Unterverzeichnis mit dem Namen javaws erstellt.

Außerdem werden während des Installationsprozesses die von Mozilla und anderen Browsern verwendeten MIME-Typen aktualisiert.

Sie können Web Start auf folgende Arten aufrufen:

1. Wählen Sie auf einer Webseite einen Link aus, der auf eine Datei mit der Erweiterung .jnlp verweist.
2. Starten Sie javaws im oben erstellten Verzeichnis javaws. Daraufhin wird der Web Start-Dialog aufgerufen, aus dem Anwendungen ausgewählt werden können.
3. Geben Sie in einem Shell-Script `javaws <URL>` ein, wobei `<URL>` die Position einer JNLP-Datei ist.

Diese Aktionen führen dazu, dass Web Start die ausgewählte Anwendung startet. Wenn die Anwendung zum ersten Mal verwendet wird, wird sie heruntergeladen. Bei nachfolgenden Aufrufen wird die ursprüngliche Website auf verfügbare Aktualisierungen überprüft. Web Start lädt diese Aktualisierungen herunter, bevor die Anwendung gestartet wird.

Wenn eine JNLP-Datei einen Fehler enthält (z. B. einen ungültigen Befehlsnamen), bricht Web Start ohne Anzeige einer Fehlernachricht ab.

# Verwenden der Funktion 'floating stacks'

Auf einem Linux-System ohne aktivierter Funktion "floating stacks" wird unabhängig von der Einstellung für -Xss eine Minimalgröße von 256 KB für native Stacks für die einzelnen Threads bereitgestellt. Auf einem Linux-System mit aktivierter Funktion "floating stacks" werden die Werte für -Xss berücksichtigt. Wenn Sie also ein Linux-System ohne aktivierter Funktion "floating stacks" migrieren, müssen alle Werte für -Xss groß genug sein, und es darf kein Minimum von 256 KB erforderlich sein.

(Nur Linux IA, 32 Bit) Bei bestimmten Linux-Varianten, z. B. bei Red Hat, ist die GLIBC-Funktion mit dem Namen "floating stacks" aktiviert. Auf Grund von Einschränkungen des Linux-Kernels kann JVM auf SMP-Hardware mit aktivierter Funktion "floating stacks" nicht ausgeführt werden, sofern der Kernel-Level unter 2.4.10 ist. In dieser Umgebung muss die Funktion "floating stacks" inaktiviert werden, bevor JVM oder eine beliebige Anwendung, die JVM startet, gestartet wird. Verwenden Sie unter Red Hat den folgenden Befehl, um die Funktion "floating stacks" zu inaktivieren, indem Sie eine Umgebungsvariable wie folgt exportieren:

    export LD_ASSUME_KERNEL=2.2.5

# Ändern der Eingabemethode in DBCS-Sprachen

Wenn Sie die Eingabemethode ändern möchten, sollten Sie auf DBCS-Systemen (Double-Byte Character Set, Doppelbytezeichensatz) die Klasse java.util.prefs.Preferences und nicht die Umgebungsvariablen IBMJAVA_INPUTMETHOD_SWITCHKEY und IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS verwenden. Weitere Informationen hierzu finden Sie im Handbuch Input Method Framework Specification von Sun.

# Installieren Ihrer Anwendung auf dem System eines Benutzers

Wenn Sie das Produkt entwickelt haben und für die Auslieferung bereit sind, müssen Sie das Produkt auf dem System eines Benutzers installieren, das System des Benutzers zur Unterstützung Ihrer Software sowie die Laufzeitumgebung konfigurieren.

Wenn Sie Runtime Environment for Linux verwenden, müssen Sie sicherstellen, dass Ihr Installationsverfahren keine vorhandene Installation überschreibt (es sei denn, die vorhandene Version von Runtime Environment for Linux ist eine ältere Version).

Zum erneuten Verteilen von Runtime Environment for Linux können Sie es auf Ihrem eigenen System installieren und anschließend die erforderlichen Runtime Environment-Dateien in Ihr Installationspaket kopieren. Wenn Sie diese Methode wählen, müssen Sie alle mit Runtime Environment for Linux zur Verfügung gestellten Dateien berücksichtigen. Die Software von Runtime Environment for Linux kann nur erneut verteilt werden, wenn alle Dateien enthalten sind. Wenn Sie die Anwendung verteilt haben, hat sie dadurch eine eigene Kopie von Runtime Environment for Linux.

Weitere Informationen zu den Dateien, die erneut verteilt werden müssen, finden Sie in der Lizenzvereinbarung, die im Lieferumfang dieses Produkts enthalten ist.

# Bekannte Einschränkungen

In den folgenden Abschnitten werden bekannte Einschränkungen von Runtime Environment for Linux erläutert.

## Einschränkungen, die für alle Linux-Plattformen gelten (wenn nicht anders angegeben)

- Möglicherweise können Sie bei Verwendung von KDE (K Desktop Environment) keine DBCS-Daten (Double Byte Character Set, Doppelbytezeichensatz) über die Systemzwischenablage zwischen Linux-Anwendungen und Java-Anwendungen kopieren.
- SDK implementiert Java-Threads als native Threads, wodurch jeder Thread zu einem separaten Linux-Prozess wird. Wenn die Anzahl der Java-Threads die maximal zulässige Anzahl an Prozessen überschreitet, empfängt Ihr Programm möglicherweise eine Fehlernachricht, einen SIGSEGV-Fehler, oder Ihr System blockiert möglicherweise.

  Die maximale Anzahl der verfügbaren Threads wird durch das Minimum für die folgenden Werte bestimmt:

  - Die Einstellung für die Benutzerprozesse (ulimit -u) in /etc/security/limits.conf
  - Die in /proc/sys/kernel/threads_max definierte Begrenzung
  - Die in libpthreads.so definierte Begrenzung PTHREAD_THREADS_MAX (bei Änderungen muss glibc erneut kompiliert werden)

  Bevor die maximale Anzahl an Threads erreicht wird, kann jedoch der virtuelle Speicher voll sein.

- Wenn Sie eine Java-Anwendung mit Ctrl-C beendet haben, bleiben einige Prozesse möglicherweise verwaist.
- Die vollständige Anzeige von Dialogfenstern, die mit Swing erstellt wurden, kann sich um einige Sekunden verzögern.
- Die Ergebnisse von Tastenkombinationen mit der Taste ALT weichen bei Verwendung verschiedener Window Manager unter Linux ab. Sie weichen auch von Ergebnissen anderer Betriebssysteme ab. Im Window Manager "Enlightenment" generieren die Tastenkombinationen Alt+A und Umschalt+Alt+A verschiedene Änderungswerte, und Strg+Alt+A erzeugt kein Ereignis. Bei Verwendung des Window Managers "WindowMaker" erzeugt die Tastenkombination Strg+Alt+A jedoch ein Tastenereignis.
- Auf einem Linux-System mit X Window ist die Tastenbelegung wie folgt festgelegt: 64 0xffe9 (Alt_L) 0xffe7 (Meta_L) und 113 0xffea (Alt_R) 0xffe8 (Meta_R). Dies können Sie überprüfen, indem Sie an einer Shelleingabeaufforderung den folgenden Befehl eingeben:

      xmodmap -pk

  Daher erwartet SDK, dass Meta zusammen mit Alt gedrückt wird. Sie können dies umgehen und die Meta_x-Zuordnung entfernen, indem Sie Folgendes an der Shelleingabeaufforderung eingeben:

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

  Anmerkung:
  Diese Lösung kann sich auf andere X-Windows-Anwendungen auswirken, die über dieselbe Anzeige ausgeführt werden, wenn die Meta-Tastenkombination verwendet wird, die Sie zuvor entfernt haben.
- Das Erstellen von besonders langen DSA-Schlüsselpaaren kann auf langsamen Maschinen sehr lange dauern. Interpretieren Sie die Verzögerung nicht als Blockierung, weil der Prozess nach ausreichender Zeit beendet wird. Der Algorithmus für die Generierung von DSA-Schlüsseln wurde optimiert, um Schlüssel mit Standardlängen (z. B. 512 oder 1024) schneller zu generieren als andere.
- Mit nativen Programmen kann keine JVM der Version 1.1 erstellt werden. Es ist nicht möglich, JNI_CreateJavaVM() aufzurufen und eine Version von JNI_VERSION_1_1(0x00010001) weiterzuleiten. Die folgenden Versionen können weitergeleitet werden:
  - JNI_VERSION_1_2(0x00010002)
  - JNI_VERSION_1_4(0x00010004)

  Bei der JVM, die in jedem Fall erstellt wurde, handelt es sich um diejenige, die über die Bibliotheken angegeben wird (1.2.2., 1.3.x, 1.4.x) und nicht um diejenige, die über die JNI-Schnittstelle festgelegt wird. Die Schnittstellen-API hat keine Auswirkungen auf die Angabe der Sprache, die durch die JVM, die Klassenbibliotheks-APIs oder andere Bereiche des JVM-Verhaltens implementiert wird. Die Schnittstellen-API gibt nur an, wie nativer Code das angeforderte Verhalten aufrufen kann.

- (Nur für Benutzer der Version in traditionellem Chinesisch) Funktionstasten, wie die Eingabetaste, die Leertaste, die Rückschritt-Taste und die Taste Esc funktionieren nicht ordnungsgemäß, wenn zum Eingeben der TCH-Zeichen die IMEs LinYi ZhuYin, YiTian ZhuYin und Bosham verwendet werden. Mit der Eingabetaste wird eine neue Zeile eingefügt, die Taste Esc wird zum Abbrechen der zuvor editierten Zeichenfolgen oder des Kandidatenfensters verwendet, und mit der Leertaste wird ein Leerzeichen eingefügt. Nachdem die Taste zum Festschreiben gedrückt wurde, sollte das Kandidatenfenster nicht mehr angezeigt werden. Es sollte außerdem nicht angezeigt werden, wenn Sie die Rückschritt-Taste drücken, während Sie für die Eingabe von Zeichen in traditionellem Chinesisch die IMEs LinYi ZhuYin, YiTian ZhuYin und Bosham verwenden.
- Wenn Sie viele gleichzeitig ablaufende Threads ausführen, wird möglicherweise eine Warnung angezeigt: `java.lang.OutOfMemoryError`. Es handelt sich dabei um eine Meldung, dass nicht genügend Systemressourcen zur Verfügung stehen und Nachrichten aus folgenden Gründen angezeigt werden können:
  1. Neue Threads können aus folgenden Gründen nicht erstellt werden:
     - Die Anzahl der erstellten Prozesse überschreitet den für den Benutzer festgelegten Grenzwert.
     - Es stehen nicht genügend Systemressourcen zum Erstellen neuer Threads zur Verfügung. In diesem Fall werden möglicherweise weitere Java-Ausnahmebedingungen angezeigt, abhängig davon, welche Operationen Ihre Anwendung ausführt.
  2. Der Kernel-Speicher bietet entweder nicht genügend Kapazität oder ist fragmentiert. Im Verzeichnis /var/log/messages finden Sie entsprechenden Kernel-Nachrichten, die darauf hinweisen, dass nicht genügend Speicher vorhanden ist, und die die ID des mit dem Befehl 'kill' beendeten Prozesses aufweisen.
  Versuchen Sie, Ihr System dahingehend zu optimieren, dass die entsprechenden Systemressourcen erhöht werden.
- Wenn Sie bereits eine frühere Version dieses Produkts installiert haben, das von Red Hat verteilt wurde, berichtet Red Hat Package Manager (RPM), dass das IBM-Paket älter als alle Versionen der Red Hat Distribution ist. Diese Situation tritt ein, weil Red Hat dem RPM-Paket eine "Seriennummer" hinzufügt, die das Schema zur Versionssteuerung des Produkts im Paket außer Kraft setzt. Standardmäßig verweigert RPM die Installation eines Pakets, das älter als das bereits installierte Paket zu sein scheint. Die Option --oldpackage des Befehls rpm ermöglicht die Installation des neuen IBM-Pakets.
- In SDK Version 1.4.2 können durch die Änderung der IBM JVM-Implementierung von Java-Monitoren Leistungssteigerungen für Anwendungen erreicht werden, die auf SMPs (Symmetric Multiprocessor Machines) unter SLES 8 ausgeführt werden. Da die meisten Anwendungen ihr Leistungsverhalten verbessern oder keine Änderung der Leistung zeigen, wird der neue Algorithmus jetzt zum Standardverhalten. Wenn die neue Standardeinstellung die Leistung Ihrer JVM jedoch reduziert, können Sie den alten Algorithmus wiederherstellen, indem Sie folgende Umgebungsvariable setzen: `export IBM_JVM_MONITOR_OLD=<Beliebiger Wert>`.

  Weitere Informationen finden Sie im Handbuch IBM JVM Diagnostics Guide für Version 1.4.2.

- Wenn Sie eine awt/swing-Java-Anwendung auf einer Linux-Maschine ausführen und die Anzeige auf eine andere Maschine exportieren, treten möglicherweise Fehler beim Anzeigen einiger Dialoge auf, wenn die Gruppe der geladenen Schriftarten auf der X-Clientmaschine sich von der Gruppe unterscheidet, die auf der X-Servermaschine geladen wurde. Dieser Fehler tritt hauptsächlich unter SLES8 mit chinesischen Ländereinstellungen auf. Dort werden während der Standardinstallation der Serverversion Arphic Fonts installiert, bei der Standardinstallation des Clients werden diese Schriftarten jedoch nicht installiert. Installieren Sie zur Vermeidung dieses Fehlers auf beiden Maschinen dieselben Schriftarten.
- Wenn in der Ländereinstellung Ihres Systems eine UTF-8-Verschlüsselung verwendet wird, lösen einige SDK-Tools möglicherweise die Ausnahmebedingung sun.io.MalformedInputException aus. Wenn Sie herausfinden möchten, ob Ihr System eine UTF-8-Verschlüsselung verwendet, untersuchen Sie die für die Ländereinstellung spezifischen Umgebungsvariablen, wie z. B. LANG oder LC_ALL, um zu prüfen, ob sie mit dem Suffix ".UTF-8" enden. Wenn Sie die Ausnahmebedingung sun.io.MalformedInputException abrufen, ändern Sie die Zeichen, die nicht im 7-Bit-ASCII-Bereich (0x00 - 0x7f) liegen und nicht als Java-Unicode-Zeichenliterale dargestellt werden, in Java-Unicode-Zeichenliterale (z. B. '\u0080'). Sie können dieses Problem auch umgehen, indem Sie das Suffix ".UTF-8" aus den für die Ländereinstellung spezifischen Umgebungsvariablen entfernen. Wenn Ihre Maschine beispielsweise die Standardländereinstellung "en_US.UTF-8" hat, setzen Sie LANG auf "en_US".
  Anmerkung:
  Einige Varianten von RedHat, einschließlich Redhat9 und RHEL3, verwenden die UTF-8-Verschlüsselung standardmäßig.
- Wenn Sie AMI und xcin in einer plattformübergreifenden Umgebung verwenden (z. B., wenn Sie versuchen, die Anzeige von einem 32-Bit- in ein 64-Bit-System bzw. von einem Big-Endian- in ein Little-Endian-System zu exportieren), treten möglicherweise Probleme auf. Wenden Sie sich an Ihren Linux-Distributor, wenn dies der Fall ist.
- Unter Redhat Enterprise Linux 3.0 werden chinesische Zeichen möglicherweise nicht in AWT-Textkomponenten angezeigt, mit Ausnahme von GB2312-Zeichen in der chinesischen Ländereinstellung GB18030.

## Einschränkungen für Linux IA (32 Bit)

- Das Java-Plug-in unterstützt in diesem SDK-Release nicht die Druckfunktion.
- SLES 8 für Koreanisch zeigt möglicherweise keine koreanischen Zeichen an. Installieren Sie zum Beheben dieses Fehlers das RPM-Paket "baekmuk-ttf", und führen Sie `SUSEconfig` aus:

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

- (Für Benutzer von arabischem Text) Bei der Verwendung von Linux mit einer Matrox-Videokarte und aktivierter Beschleunigung können Zeichen nur verzerrt angezeigt werden, wenn zum Anzeigen großer Schriftarten drawString verwendet wird. Dieser Fehler wird durch den Treiber dieser Karten verursacht. Die empfohlene Fehlerumgehung besteht darin, die Beschleunigung für diese Einheit zu inaktivieren.

## Einschränkungen für Linux PPC (32 Bit) und (64 Bit)

- Wenn der Java-Code JNI-Aufrufe verwendet und ein bestimmter Aufruf mehr als acht FLOAT- oder DOUBLE-Parameter aufweist, muss der C-Code mit der FSF-Stufe (Free Software Foundation) gcc-2.95.3 des GNU-C-Compilers (GCC) kompiliert werden.
- Wenn Sie XFree86 Version 3.x ausführen, wird möglicherweise ein SIGSEGV-Fehler angezeigt. Zur Vermeidung dieses Fehlers sollten Sie XFree86 Version 4.x verwenden.
- Wenn auf dem System ein Datum vor 1970 eingestellt ist, wird beim Starten von Java eine Ausnahmebedingung angezeigt. Sie können diesen Fehler vermeiden, wenn Sie auf Ihrer Maschine das aktuelle Datum festlegen.

## Einschränkungen für Linux PPC (32 Bit)

- Die Installations-CDs von SLES 8.0 für PowerPC enthalten keine geeigneten chinesischen TrueType-Schriftarten für Java, um chinesische Zeichen korrekt anzuzeigen. Installieren Sie das Paket ttf-hanyi-20021016-0.noarch.rpm von United Linux 1.0, um die Anzeige chinesischer Zeichen zu verbessern.

## Einschränkungen für Linux zSeries (64 Bit)

Die folgenden Einschränkungen gelten für Benutzer der chinesischen, taiwanesischen und koreanischen Version unter Linux zSeries (64 Bit):

- Der chinesische und taiwanesische Input Method Server (xcin) wurde mit Version 1.4.2 nicht getestet.
- (Nur für Benutzer der Version in vereinfachtem Chinesisch) Einige chinesische Schriftzeichen werden möglicherweise nicht angezeigt. Laden Sie zur Vermeidung dieses Problems die folgende TrueType-Schriftart unter SLES8 für Ihr zSeries-System (64 Bit) herunter:
  - ttf-hanyi-20021016-0
  Die Schriftart können Sie von der SUSE-Website unter folgender Adresse herunterladen: http://www.suse.com/index_us.html.
- (Nur für Benutzer der Version in traditionellem Chinesisch) Einige chinesische Schriftzeichen werden möglicherweise nicht angezeigt. Laden Sie zur Vermeidung dieses Problems die folgenden TrueType-Schriftarten unter SLES8 (fungiert als grafischer Client) herunter:
  - ttf-arphic-bkai00mp-20001125-103
  - ttf-arphic-gbsn00lp-20001125-103
  - ttf-arphic-gkai00mp-20001125-103
  - ttf-arphic-bsmi00lp-20001125-103
  - ttf-arphic-20001125-323
  Die Schriftarten können Sie von der SUSE-Website unter folgender Adresse herunterladen: http://www.suse.com/index_us.html.

## Einschränkungen für Linux zSeries (32 und 64 Bit)

- Wenn Sie die Audiofunktion auf einer Maschine ohne Audiokarte verwenden, wird möglicherweise die Fehlernachricht angezeigt, dass nicht genügend Speicher vorhanden ist, wenn Java versucht, einen Ton wiederzugeben. Die Nachricht wird in der Konsole angezeigt, sie hat jedoch keine Auswirkungen auf die Java-Anwendung.
- Obwohl der Linux-Kernel in den aktuellen Verteilungen Unterstützung für Internet Protocol Version 6 (IP6) bietet, treten bei der Verwendung möglicherweise Probleme auf. In diesem Release ist die Unterstützung für IP6 durch Java enthalten. Es wird allerdings empfohlen, dass Sie diese Unterstützung mit der Option -Djava.net.preferIPv4Stack=true des Befehls Java inaktivieren. Wenn Sie einen Kernel installieren, der IP6 vollständig unterstützt, benötigen Sie diese Option nicht.

# Kommentare zu diesem Handbuch

Wenn Sie Ihren Kommentar zur Zweckmäßigkeit oder zu anderen Eigenschaften dieses Benutzerhandbuchs mitteilen möchten, können Sie sich über eine der im Folgenden aufgeführten Möglichkeiten an uns wenden. Beachten Sie, dass diese Mitteilungswege nicht eingerichtet wurden, um technische Fragen zu beantworten. Sie sind nur für Kommentare zur Dokumentation bestimmt. Senden Sie Ihre Kommentare an folgende Adresse:

- Per E-Mail: idrcf@hursley.ibm.com.
- Per Fax:
  - Von Großbritannien: 01962 842327
  - Von anderen Ländern: <Internationaler Code>44 1962 842327
- Per Post:
  IBM United Kingdom Ltd
  User Technologies,
  Mail Point 095
  Hursley Park
  Winchester
  Hampshire
  SO21 2JN United Kingdom

Das Kleingedruckte. Wenn Sie eine Nachricht an IBM senden, erklären Sie sich einverstanden, dass alle in Ihrer Nachricht enthaltenen Informationen, einschließlich der Rückmeldedaten, wie beispielsweise Fragen, Kommentare, Anregungen o. Ä., nicht vertraulich behandelt werden und dass IBM keinerlei Verpflichtungen in Bezug auf diese Informationen hat und diese uneingeschränkt abdrucken, verwenden, veröffentlichen und an andere weitergeben kann. Des Weiteren kann IBM in diesen Informationen enthaltene Ideen, Konzepte oder Angaben zu Know-how oder technischen Verfahren uneingeschränkt und für beliebige Zwecke verwenden, u. a. für die Entwicklung, die Produktion und das Marketing von Produkten, die diese Informationen enthalten.

# Bemerkungen

Die vorliegenden Informationen wurden für Produkte und Services entwickelt, die auf dem US-amerikanischen Markt angeboten werden. Möglicherweise bietet IBM die in dieser Dokumentation beschriebenen Produkte, Services oder Komponenten in anderen Ländern nicht an. Informationen über die gegenwärtig im jeweiligen Land verfügbaren Produkte und Services sind beim IBM Ansprechpartner erhältlich. Hinweise auf IBM Lizenzprogramme oder andere IBM Produkte bedeuten nicht, dass nur Programme, Produkte oder Dienstleistungen von IBM verwendet werden können. Anstelle der IBM Produkte, Programme oder Dienstleistungen können auch andere ihnen äquivalente Produkte, Programme oder Dienstleistungen verwendet werden, solange diese keine gewerblichen Schutzrechte der IBM verletzen. Die Verantwortung für den Betrieb von Fremdprodukten, Fremdprogrammen und Fremdservices liegt beim Kunden.

Für in diesem Handbuch beschriebene Erzeugnisse und Verfahren kann es IBM Patente oder Patentanmeldungen geben. Mit der Auslieferung dieses Handbuchs ist keine Lizenzierung dieser Patente verbunden. Lizenzanfragen sind schriftlich an IBM Europe, Director of Licensing, 92066 Paris La Defense Cedex, France zu richten. Anfragen an obige Adresse müssen auf Englisch formuliert werden.

Trotz sorgfältiger Bearbeitung können technische Ungenauigkeiten oder Druckfehler in dieser Veröffentlichung nicht ausgeschlossen werden. IBM kann jederzeit ohne Vorankündigung Verbesserungen und/oder Änderungen an den in dieser Veröffentlichung beschriebenen Produkten und/oder Programmen vornehmen.

Verweise in dieser Veröffentlichung auf Websites anderer Anbieter dienen lediglich als Benutzerinformationen und stellen keinerlei Billigung des Inhalts dieser Websites dar. Das über diese Websites verfügbare Material ist nicht Bestandteil des Materials für dieses IBM Produkt. Die Verwendung dieser Websites geschieht auf eigene Verantwortung.Werden an IBM Informationen eingesandt, können diese beliebig verwendet werden, ohne dass eine Verpflichtung gegenüber dem Einsender entsteht.

Lizenznehmer des Programms, die Informationen zu diesem Produkt wünschen mit der Zielsetzung: (i) den Austausch von Informationen zwischen unabhängigen, erstellten Programmen und anderen Programmen (einschließlich des vorliegenden Programms) sowie (ii) die gemeinsame Nutzung der ausgetauschten Informationen zu ermöglichen, wenden sich an folgende Adresse:

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

Die Bereitstellung dieser Informationen kann unter Umständen von bestimmten Bedingungen - in einigen Fällen auch von der Zahlung einer Gebühr - abhängig sein.

Die Lieferung des in der Informationsdatei aufgeführten Lizenzprogramms sowie des zugehörigen Lizenzmaterials erfolgt im Rahmen der Allgemeinen Geschäftsbedingungen der IBM oder einer äquivalenten Vereinbarung.

Alle in diesem Dokument enthaltenen Leistungsdaten stammen aus einer gesteuerten Umgebung. Die Ergebnisse, die in anderen Betriebsumgebungen erzielt werden, können daher erheblich von den hier erzielten Ergebnissen abweichen. Einige Daten stammen möglicherweise von Systemen, deren Entwicklung noch nicht abgeschlossen ist. Eine Garantie, dass diese Daten auch in allgemein verfügbaren Systemen erzielt werden, kann nicht gegeben werden. Darüber hinaus wurden einige Daten unter Umständen durch Extrapolation berechnet. Die tatsächlichen Ergebnisse können abweichen. Benutzer dieses Dokuments sollten die entsprechenden Daten in ihrer spezifischen Umgebung prüfen. Diese Daten stellen deshalb keine Leistungsgarantie dar.

Informationen über Produkte anderer Hersteller als IBM wurden von den Herstellern dieser Produkte zur Verfügung gestellt, bzw. aus von ihnen veröffentlichten Ankündigungen oder anderen öffentlich zugänglichen Quellen entnommen. IBM hat diese Produkte nicht getestet und übernimmt im Hinblick auf Produkte anderer Hersteller keine Verantwortung für einwandfreie Funktion, Kompatibilität oder andere Ansprüche. Fragen zu den Leistungsmerkmalen von Produkten anderer Anbieter sind an den jeweiligen Anbieter zu richten.

## Marken

IBM ist in gewissen Ländern eine Marke der International Business Machines Corporation.

IBM, iSeries, pSeries und zSeries sind in gewissen Ländern Marken oder eingetragene Marken der International Business Machines Corporation.

Java und alle Java-basierten Marken und Logos sind in gewissen Ländern Marken oder eingetragene Marken von Sun Microsystems, Inc.

Intel, Intel Inside (Logos), MMX und Pentium sind in gewissen Ländern Marken der Intel Corporation.

Andere Namen von Unternehmen, Produkten oder Dienstleistungen können Marken oder Dienstleistungsmarken anderer Unternehmen sein.

Dieses Produkt enthält Software, die von der Apache Software Foundation (http://www.apache.org/) entwickelt wurde.