<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de-DE" xml:lang="de-de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="dc.language" scheme="rfc1766" content="de-de" />
<meta name="dc.date" scheme="iso8601" content="2005-10-18" />
<meta name="copyright" content="(C) Copyright IBM Corp. 2005" />
<meta name="security" content="" />
<meta name="Robots" content="index,follow"/>
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<title>IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0</title>
<link rel="stylesheet" type="text/css" href="../ibmidwb.css" />
<link rel="stylesheet" type="text/css" href="../ait.css" />
</head>
<body class="revised">
<a id="Top_Of_Page" name="Top_Of_Page"></a>
<h1>IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0</h1>
<h1>Benutzerhandbuch</h1>
<br />
<a name="wq1"></a>
<h1 id="wq1"><a href="#ToC_1">Copyrightvermerk</a></h1>
<p><strong>Anmerkung</strong>: Vor Verwendung dieser
Informationen und des dazugeh&ouml;rigen Produkts sollten Sie die
allgemeinen Informationen im Abschnitt
<a href="#notices">Bemerkungen</a> lesen.</p>
<p>Diese Ausgabe des Benutzerhandbuchs bezieht sich auf IBM 32-bit SDK and Runtime Environment for Windows, Java 2 Technology Edition, Version 5.0 und auf alle nachfolgenden Releases, &Auml;nderungen und Serviceaktualisierungen bis zur Herausgabe neuer Dateiversionen.</p>
<p>(c) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo
Alto, CA 94303 USA. Alle Rechte vorbehalten.</p>
<p>(c) Copyright International Business Machines Corporation, 1999, 2005.
Alle Rechte vorbehalten.</p>
<p>(c) Copyright IBM Deutschland GmbH 1999, 2004. Alle Rechte vorbehalten.</p>
<a name="wq2"></a>
<h1 id="wq2"><a href="#ToC_2">Vorwort</a></h1>
<p>In diesem Benutzerhandbuch erhalten Sie allgemeine Informationen zu IBM(R) 32-bit SDK and Runtime Environment for Windows(R), Java(TM) 2 Technology Edition, Version 5.0 sowie spezielle Informationen zu allen Unterschieden zwischen der IBM Implementierung und der Sun-Implementierung. Lesen Sie dieses Benutzerhandbuch zusammen mit der ausf&uuml;hrlicheren Dokumentation auf der folgenden
Website von Sun Microsystems: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<p>SDK und Runtime Environment werden unter folgenden Betriebssystemen unterst&uuml;tzt:</p>
<ul>
<li>Windows 2000</li>
<li>Windows XP</li>
<li>Windows Server 2003</li></ul>
<p>Beachten Sie, dass IP Version 6 nur unter Windows
XP und Windows Server 2003 unterst&uuml;tzt wird.</p>
<p>Das Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> enth&auml;lt weitere Informationen zu
IBM Virtual Machine f&uuml;r Java.</p>
<p>Technische &Auml;nderungen, die in diesem Benutzerhandbuch zu Version 5.0 enthalten sind, mit Ausnahme von unwichtigen oder offensichtlichen &Auml;nderungen, wie beispielsweise die Aktualisierung von "1.4.2" in "5.0", sind rot dargestellt, wenn sie als HTML-Datei angezeigt oder als Farbkopie ausgedruckt werden. Au&szlig;erdem wird durch vertikale Balken am linken Rand auf diese &Auml;nderungen hingewiesen.</p>
<p>Die Begriffe "Runtime Environment" und "Java Virtual Machine" sind in diesem Handbuch gleichbedeutend.</p>
<a name="wq3"></a>
<div id="wq3">
<h1>Inhaltsverzeichnis</h1>
<div class="head1"><a id="ToC_1" name="ToC_1" href="#wq1" class="toclink">Copyrightvermerk</a></div>
<div class="head1"><a id="ToC_2" name="ToC_2" href="#wq2" class="toclink">Vorwort</a></div>
<div class="head1"><a id="ToC_3" name="ToC_3" href="#wq4" class="toclink">&Uuml;bersicht</a></div>
<div class="head2"><a id="ToC_4" name="ToC_4" href="#wq5" class="toclink">Versionskompatibilit&auml;t</a></div>
<div class="head2"><a id="ToC_5" name="ToC_5" href="#upgrading" class="toclink">Ausf&uuml;hren eines Upgrades f&uuml;r SDK</a></div>
<div class="head2"><a id="ToC_6" name="ToC_6" href="#wq6" class="toclink">Migrieren von weiteren IBM JVMs</a></div>
<div class="head1"><a id="ToC_7" name="ToC_7" href="#wq7" class="toclink">Inhalt von SDK und Runtime Environment</a></div>
<div class="head2"><a id="ToC_8" name="ToC_8" href="#wq8" class="toclink">Runtime Environment-Tools</a></div>
<div class="head2"><a id="ToC_9" name="ToC_9" href="#sdktools" class="toclink">SDK-Tools</a></div>
<div class="head1"><a id="ToC_10" name="ToC_10" href="#wq10" class="toclink">Installieren und Konfigurieren von SDK und Runtime Environment</a></div>
<div class="head2"><a id="ToC_11" name="ToC_11" href="#wq11" class="toclink">Vor der Installation</a></div>
<div class="head2"><a id="ToC_12" name="ToC_12" href="#attended_installation" class="toclink">&Uuml;berwachte (interaktive) Installation</a></div>
<div class="head3"><a id="ToC_13" name="ToC_13" href="#wq13" class="toclink">Installieren der Pakete</a></div>
<div class="head3"><a id="ToC_14" name="ToC_14" href="#wq15" class="toclink">Installieren von Runtime Environment als System-JVM</a></div>
<div class="head2"><a id="ToC_15" name="ToC_15" href="#wq17" class="toclink">Nicht &uuml;berwachte Installation</a></div>
<div class="head2"><a id="ToC_16" name="ToC_16" href="#wq20" class="toclink">Aktivieren von IBM Accessibility Bridge</a></div>
<div class="head2"><a id="ToC_17" name="ToC_17" href="#wq21" class="toclink">Inaktivieren der Unterst&uuml;tzung von Java Accessibility</a></div>
<div class="head2"><a id="ToC_18" name="ToC_18" href="#wq22" class="toclink">Informationen f&uuml;r Benutzer europ&auml;ischer Sprachversionen</a></div>
<div class="head2"><a id="ToC_19" name="ToC_19" href="#pathcons" class="toclink">Festlegen der Umgebungsvariablen PATH</a></div>
<div class="head2"><a id="ToC_20" name="ToC_20" href="#wq24" class="toclink">Festlegen der Umgebungsvariablen CLASSPATH</a></div>
<div class="head2"><a id="ToC_21" name="ToC_21" href="#wq25" class="toclink">Deinstallation</a></div>
<div class="head1"><a id="ToC_22" name="ToC_22" href="#invint" class="toclink">Verwenden von Runtime Environment</a></div>
<div class="head2"><a id="ToC_23" name="ToC_23" href="#wq28" class="toclink">Optionen</a></div>
<div class="head3"><a id="ToC_24" name="ToC_24" href="#wq29" class="toclink">Angeben von Java-Optionen und Systemmerkmalen</a></div>
<div class="head3"><a id="ToC_25" name="ToC_25" href="#wq31" class="toclink">Standardoptionen</a></div>
<div class="head3"><a id="ToC_26" name="ToC_26" href="#xoptions" class="toclink">Vom Standard abweichende Optionen</a></div>
<div class="head2"><a id="ToC_27" name="ToC_27" href="#wq32" class="toclink">Abrufen der IBM Build- und Versionsnummer</a></div>
<div class="head2"><a id="ToC_28" name="ToC_28" href="#wq33" class="toclink">Globalisierung des Befehls 'java'</a></div>
<div class="head2"><a id="ToC_29" name="ToC_29" href="#wq34" class="toclink">Automatisches Ausf&uuml;hren einer Java-Datei</a></div>
<div class="head2"><a id="ToC_30" name="ToC_30" href="#jaws" class="toclink">Ausf&uuml;hren von Java-Anwendungen mit Technologien f&uuml;r behindertengerechte Bedienung</a></div>
<div class="head2"><a id="ToC_31" name="ToC_31" href="#jit" class="toclink">JIT-Compiler (Just-In-Time)</a></div>
<div class="head3"><a id="ToC_32" name="ToC_32" href="#disjit" class="toclink">Inaktivieren des JIT-Compilers</a></div>
<div class="head3"><a id="ToC_33" name="ToC_33" href="#enajit" class="toclink">Aktivieren des JIT-Compilers</a></div>
<div class="head3"><a id="ToC_34" name="ToC_34" href="#detjit" class="toclink">Pr&uuml;fen, ob der JIT-Compiler aktiviert ist</a></div>
<div class="head2"><a id="ToC_35" name="ToC_35" href="#garbage" class="toclink">Angeben der Garbage-Collection-Richtlinie</a></div>
<div class="head3"><a id="ToC_36" name="ToC_36" href="#wq37" class="toclink">Optionen der Garbage-Collection</a></div>
<div class="head3"><a id="ToC_37" name="ToC_37" href="#wq38" class="toclink">Pausezeit</a></div>
<div class="head3"><a id="ToC_38" name="ToC_38" href="#pausetimereduction" class="toclink">Verringerung der Pausezeit</a></div>
<div class="head3"><a id="ToC_39" name="ToC_39" href="#wq39" class="toclink">Umgebungen mit sehr vollen Freispeichern</a></div>
<div class="head2"><a id="ToC_40" name="ToC_40" href="#wq40" class="toclink">Signalverarbeitung durch JVM</a></div>
<div class="head3"><a id="ToC_41" name="ToC_41" href="#sighand" class="toclink">Von JVM verwendete Signale</a></div>
<div class="head3"><a id="ToC_42" name="ToC_42" href="#wq46" class="toclink">Verbinden eines nativen Codetreibers mit der Signalverkettungsbibliothek</a></div>
<div class="head2"><a id="ToC_43" name="ToC_43" href="#wq47" class="toclink">Umwandeln von XML-Dokumenten</a></div>
<div class="head3"><a id="ToC_44" name="ToC_44" href="#wq49" class="toclink">Verwenden einer &auml;lteren Version von Xerces oder Xalan</a></div>
<div class="head1"><a id="ToC_45" name="ToC_45" href="#wq50" class="toclink">Verwenden von SDK zur Entwicklung von Java-Anwendungen</a></div>
<div class="head2"><a id="ToC_46" name="ToC_46" href="#debugger" class="toclink">Debugging in Java-Anwendungen</a></div>
<div class="head3"><a id="ToC_47" name="ToC_47" href="#jdb" class="toclink">Java-Debugger (JDB)</a></div>
<div class="head2"><a id="ToC_48" name="ToC_48" href="#wq54" class="toclink">Ermitteln, ob eine Anwendung auf JVM im 32-Bit- oder 64-Bit-Modus ausgef&uuml;hrt wird</a></div>
<div class="head2"><a id="ToC_49" name="ToC_49" href="#wq55" class="toclink">Schreiben von JNI-Anwendungen</a></div>
<div class="head2"><a id="ToC_50" name="ToC_50" href="#wq57" class="toclink">Arbeiten mit Applets</a></div>
<div class="head3"><a id="ToC_51" name="ToC_51" href="#wq58" class="toclink">Ausf&uuml;hren von Applets mit Applet Viewer</a></div>
<div class="head3"><a id="ToC_52" name="ToC_52" href="#wq59" class="toclink">Debugging von Applets mit Applet Viewer</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_53" name="ToC_53" href="#alloc_large_page" class="toclink">Konfigurieren einer Speicherzuordnung von gro&szlig;en Seiten</a></div>
<div class="head2"><a id="ToC_54" name="ToC_54" href="#wq60" class="toclink">CORBA-Unterst&uuml;tzung</a></div>
<div class="head3"><a id="ToC_55" name="ToC_55" href="#wq61" class="toclink">Unterst&uuml;tzung f&uuml;r GIOP 1.2</a></div>
<div class="head3"><a id="ToC_56" name="ToC_56" href="#wq62" class="toclink">Unterst&uuml;tzung f&uuml;r portierbare Abfangprozesse</a></div>
<div class="head3"><a id="ToC_57" name="ToC_57" href="#wq63" class="toclink">Unterst&uuml;tzung f&uuml;r den Interoperable Naming Service</a></div>
<div class="head3"><a id="ToC_58" name="ToC_58" href="#wq64" class="toclink">Systemmerkmale f&uuml;r die ORB-Tracefunktion</a></div>
<div class="head3"><a id="ToC_59" name="ToC_59" href="#wq65" class="toclink">Systemmerkmale zur Optimierung des ORB</a></div>
<div class="head3"><a id="ToC_60" name="ToC_60" href="#wq66" class="toclink">Java 2-Sicherheitsberechtigungen f&uuml;r den ORB</a></div>
<div class="head3"><a id="ToC_61" name="ToC_61" href="#wq70" class="toclink">ORB-Implementierungsklassen</a></div>
<div class="head2"><a id="ToC_62" name="ToC_62" href="#rmi-iiop" class="toclink">RMI-IIOP</a></div>
<div class="head2"><a id="ToC_63" name="ToC_63" href="#rmi" class="toclink">Implementieren des Steuerroutinenpools f&uuml;r RMI-Verbindungen</a></div>
<div class="head2"><a id="ToC_64" name="ToC_64" href="#wq71" class="toclink">Erweiterte BiDirectional-Unterst&uuml;tzung</a></div>
<div class="head2"><a id="ToC_65" name="ToC_65" href="#bigd" class="toclink">Funktionale Erweiterungen f&uuml;r BigDecimal</a></div>
<div class="head2"><a id="ToC_66" name="ToC_66" href="#wq72" class="toclink">Unterst&uuml;tzung des Euro-Symbols</a></div>
<div class="head1"><a id="ToC_67" name="ToC_67" href="#jcommchapter" class="toclink">Verwenden der Java Communications API (JavaComm)</a></div>
<div class="head2"><a id="ToC_68" name="ToC_68" href="#instcomm" class="toclink">Installieren der Java Communications API</a></div>
<div class="head2"><a id="ToC_69" name="ToC_69" href="#wq74" class="toclink">Konfigurieren der Java Communications API</a></div>
<div class="head2"><a id="ToC_70" name="ToC_70" href="#wq75" class="toclink">Einschr&auml;nkung beim Drucken mit der Java Communications API</a></div>
<div class="head2"><a id="ToC_71" name="ToC_71" href="#wq76" class="toclink">Deinstallieren der Java Communications API</a></div>
<div class="head2"><a id="ToC_72" name="ToC_72" href="#wq77" class="toclink">Dokumentation zur Java Communications API</a></div>
<div class="head1"><a id="ToC_73" name="ToC_73" href="#wq78" class="toclink">Implementieren von Java-Anwendungen</a></div>
<div class="head2"><a id="ToC_74" name="ToC_74" href="#wq79" class="toclink">Verwenden des Java-Plug-ins</a></div>
<div class="head3"><a id="ToC_75" name="ToC_75" href="#suppbrowse" class="toclink">Unterst&uuml;tzte Browser</a></div>
<div class="head3"><a id="ToC_76" name="ToC_76" href="#wq84" class="toclink">Allgemeine Dokumentobjektmodellunterst&uuml;tzung (Document Object Model, DOM)</a></div>
<div class="head3"><a id="ToC_77" name="ToC_77" href="#wq85" class="toclink">Verwenden von DBCS-Parametern</a></div>
<div class="head2"><a id="ToC_78" name="ToC_78" href="#wq86" class="toclink">Verwenden von Java Web Start</a></div>
<div class="head3"><a id="ToC_79" name="ToC_79" href="#installing_webstart" class="toclink">Ausf&uuml;hren von Java Web Start</a></div>
<div class="head2"><a id="ToC_80" name="ToC_80" href="#wq88" class="toclink">Ausliefern von Java-Anwendungen</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head1"><a id="ToC_81" name="ToC_81" href="#classdatasharing" class="toclink">Gemeinsame Nutzung von Klassendaten auf verschiedenen JVMs</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_82" name="ToC_82" href="#wq89" class="toclink">&Uuml;bersicht &uuml;ber die gemeinsame Nutzung von Klassen</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_83" name="ToC_83" href="#wq90" class="toclink">Cache-Inhalte</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_84" name="ToC_84" href="#wq91" class="toclink">Dynamisches Aktualisieren des Caches</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_85" name="ToC_85" href="#wq92" class="toclink">Aktivieren der gemeinsamen Nutzung von Klassen</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_86" name="ToC_86" href="#wq93" class="toclink">Cache-Sicherheit</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_87" name="ToC_87" href="#wq94" class="toclink">Lebensdauer des Caches</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_88" name="ToC_88" href="#wq95" class="toclink">Cache-Dienstprogramme</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_89" name="ToC_89" href="#sharedclassesxoptions" class="toclink">Verwenden von Befehlszeilenoptionen f&uuml;r die gemeinsame Nutzung von Klassen</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_90" name="ToC_90" href="#wq96" class="toclink">Erstellen, Belegen, &Uuml;berwachen und L&ouml;schen eines Caches</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_91" name="ToC_91" href="#wq97" class="toclink">Leistung und Speicherbelegung</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_92" name="ToC_92" href="#wq98" class="toclink">Einschr&auml;nkungen und besondere Aspekte bei der gemeinsamen Nutzung von Klassen</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_93" name="ToC_93" href="#cachesizelimits" class="toclink">Grenzwerte f&uuml;r die Cachegr&ouml;&szlig;e</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_94" name="ToC_94" href="#runtimebytecode" class="toclink">&Auml;nderungen bei Laufzeitbytecodes</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_95" name="ToC_95" href="#wq99" class="toclink">Betriebssystemeinschr&auml;nkungen</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head3"><a id="ToC_96" name="ToC_96" href="#usingsharedclasspermissions" class="toclink">Verwenden von SharedClassPermission</a></div><span id="changed">|</span>
<span id="changed">|</span><div class="head2"><a id="ToC_97" name="ToC_97" href="#adaptingclassloaders" class="toclink">Anpassen benutzerdefinierter Klassenladeprogramme an gemeinsam genutzte Klassen</a></div>
<div class="head1"><a id="ToC_98" name="ToC_98" href="#wq100" class="toclink">Service und Unterst&uuml;tzung f&uuml;r unabh&auml;ngige Softwareanbieter</a></div>
<div class="head1"><a id="ToC_99" name="ToC_99" href="#wq101" class="toclink">Eingabehilfen</a></div>
<div class="head2"><a id="ToC_100" name="ToC_100" href="#ikeycmd" class="toclink">iKeyman-Eingabehilfen</a></div>
<div class="head2"><a id="ToC_101" name="ToC_101" href="#wq103" class="toclink">Verschieben des Eingabefokus von JComboBox-Komponenten in Swing per Tastatur</a></div>
<div class="head2"><a id="ToC_102" name="ToC_102" href="#wq104" class="toclink">Web Start-Eingabehilfen</a></div>
<div class="head1"><a id="ToC_103" name="ToC_103" href="#wq105" class="toclink">Allgemeine Hinweise zu Sicherheitsfunktionen</a></div>
<div class="head1"><a id="ToC_104" name="ToC_104" href="#wq106" class="toclink">Bekannte Einschr&auml;nkungen</a></div>
<div class="head1"><a id="ToC_105" name="ToC_105" href="#rcf" class="toclink">Kommentare zu diesem Handbuch</a></div>
<div class="head1"><a id="ToC_106" name="ToC_106" href="#notices" class="toclink">Bemerkungen</a></div>
<div class="head2"><a id="ToC_107" name="ToC_107" href="#wq107" class="toclink">Marken</a></div>
</div>
<a name="wq4"></a>
<h1 id="wq4"><a href="#ToC_3">&Uuml;bersicht</a></h1>
<p>Bei IBM SDK handelt es sich um eine Entwicklungsumgebung zum Schreiben und Ausf&uuml;hren von Applets und Anwendungen, die der IBM Java 5.0 Core-API (Application Programming Interface - Anwendungsprogrammierschnittstelle) entsprechen.</p>
<p>SDK umfasst Runtime Environment for Windows. Mit dieser Komponente k&ouml;nnen Sie nur Java-Anwendungen ausf&uuml;hren. Wenn Sie SDK installiert haben, ist auch Runtime Environment enthalten.</p>
<p>Runtime Environment enth&auml;lt Java Virtual Machine sowie unterst&uuml;tzende Dateien, wie z. B.  Klassendateien. Runtime Environment enth&auml;lt nur eine Untergruppe der Klassen, die in SDK enthalten sind. Mit dieser Komponente k&ouml;nnen Sie ein Java-Programm in der Laufzeit verwenden, jedoch keine Java-Programme kompilieren. Runtime Environment for Windows enth&auml;lt kein Entwicklungstool, wie z.&nbsp;B. <strong>appletviewer.exe</strong> oder den Java-Compiler (<strong>javac.exe</strong>), bzw. keine Klassen, die nur f&uuml;r Entwicklungssysteme konzipiert sind.</p>
<p>Au&szlig;erdem wird das Paket mit der Java Communications API zur Verwendung mit Runtime Environment for Windows bereitgestellt. Informationen hierzu finden Sie unter <a href="#jcommchapter">Verwenden der Java Communications API (JavaComm)</a>.</p>
<a name="wq5"></a>
<h2 id="wq5"><a href="#ToC_4">Versionskompatibilit&auml;t</a></h2>
<p>Normalerweise m&uuml;ssten alle Applets oder Anwendungen, die mit einer Vorversion von SDK ausgef&uuml;hrt wurden, zusammen mit IBM 32-bit SDK for Windows, v5.0 ordnungsgem&auml;&szlig; ausgef&uuml;hrt werden.
Es ist nicht gew&auml;hrleistet, dass Klassen, die auf der Grundlage dieses Releases kompiliert wurden, zusammen mit fr&uuml;heren Releases eingesetzt werden k&ouml;nnen.</p>
<p><font color="red"><span id="changed">|</span>IBM 32-bit SDK for Windows V5.0 basiert auf
<span id="changed">|</span>Microsoft Visual Studio .NET 2003.</font></p>
<p>Die Sun-Dokumentation zur Kompatibilit&auml;t finden Sie auf der Sun-Website unter <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="upgrading"></a>
<h2 id="upgrading"><a href="#ToC_5">Ausf&uuml;hren eines Upgrades f&uuml;r SDK</a></h2>
<p>Wenn Sie ein Upgrade von einem fr&uuml;heren SDK-Release ausf&uuml;hren, sichern Sie alle Konfigurations- und Sicherheitsrichtliniendateien, bevor Sie mit dem Ausf&uuml;hren des Upgrades fortfahren.</p>
<p>Nach dem Ausf&uuml;hren des Upgrades m&uuml;ssen Sie diese Dateien eventuell wiederherstellen oder neu konfigurieren, da sie beim Upgradeprozess m&ouml;glicherweise &uuml;berschrieben wurden. Pr&uuml;fen Sie die Syntax der neuen Dateien, bevor Sie die urspr&uuml;nglichen Dateien wiederherstellen, da sich das Format oder die Optionen f&uuml;r die Dateien ge&auml;ndert haben k&ouml;nnen.</p>
<a name="wq6"></a>
<h2 id="wq6"><a href="#ToC_6">Migrieren von weiteren IBM JVMs</a></h2>
<p>In Version 5.0 enth&auml;lt IBM Runtime Environment for Windows neue Versionen von
IBM Java Virtual Machine und des JIT-Compilers (Just-In-Time). Wenn Sie von einer &auml;lteren
IBM Runtime Environment-Version migrieren, beachten Sie Folgendes: </p>
<ul>
<li>Die JVM-DLL-Datei jvm.dll  befindet sich im Verzeichnis jre\bin\j9vm. Dies ist nicht der Fall, wenn die Migration z.&nbsp;B. &uuml;ber Runtime Environment for Windows f&uuml;r Version 1.4.2 ausgef&uuml;hrt wird. In diesem Fall lautet das Verzeichnis jre\bin\classic. F&uuml;r native Anwendungen, die die JNI-Aufrufschnittstelle verwenden, muss der bzw. den zugeh&ouml;rigen Umgebungsvariablen m&ouml;glicherweise der neue Verzeichnispfad hinzugef&uuml;gt werden, damit die JVM-DLL-Datei gefunden wird.</li>
<br />
<li><font color="red"><span id="changed">|</span>Die JVMMI (JVM Monitoring Interface) ist nicht mehr verf&uuml;gbar.
<span id="changed">|</span>Sie m&uuml;ssen Anwendungen, die diese API verwenden, neu schreiben. Es wird empfohlen, stattdessen die JVMTI (JVM Tool Interface) zu verwenden. Die JVMTI entspricht funktional nicht der JVMMI. Weitere Informationen zur JVMTI finden Sie unter <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/">http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/</a> und im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>Die neue Implementierung von JNI entspricht der JNI-Spezifikation, unterscheidet sich jedoch von der alten Implementierung. Sie gibt Kopien der Objekte zur&uuml;ck, anstatt die urspr&uuml;nglichen Objekte im Speicher zu belassen.   Dieser Unterschied kann zu Fehlern im JNI-Anwendungscode f&uuml;hren. Informationen zum Debugging von JNI-Code finden Sie unter <strong>-Xcheck:jni</strong> im Abschnitt <a href="#xoptions">Vom Standard abweichende Optionen</a>.</font></li>
<br />
<li><font color="red"><span id="changed">|</span>Format und Inhalt von ausf&uuml;hrlichen Garbage-Collector-Protokollen, die mit Hilfe von <strong>-verbose:gc</strong> empfangen wurden, wurden ge&auml;ndert. Die Daten weisen jetzt das XML-Format auf. Der Dateninhalt zeigt die &Auml;nderungen der Implementierung der Garbage-Collection in JVM an. Die meisten statistischen Ausgabedaten wurden ge&auml;ndert.
<span id="changed">|</span>Sie m&uuml;ssen alle Programme &auml;ndern, die die ausf&uuml;hrliche GC-Ausgabe verarbeiten, damit diese Programme mit dem neuen Format und den neuen Daten funktionieren. Im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a> finden Sie ein Beispiel der neuen ausf&uuml;hrlichen GC-Daten.</font></li>
<br />
<li>Fr&uuml;here IBM JRE-Versionen wurden zusammen mit der Datei rt.jar geliefert, die sich im Verzeichnis
jre/lib befindet. Ab Java Version 1.4 wurde diese Datei durch mehrere JAR-Dateien ersetzt, die sich im Verzeichnis jre/lib befinden.</li>
<br />
<li><font color="red"><span id="changed">|</span>Weitere Informationen zur Kompatibilit&auml;t und zu veralteten APIs in Bezug auf Sun-Java-Releases finden Sie in den Dokumenten <a href="http://java.sun.com/j2se/5.0/compatibility.html">Sun's Java 5 Compatibility Documentation</a> und <a href="http://java.sun.com/j2se/1.5.0/docs/api/deprecated-list.html">Sun's Java 5 Depreciated API List</a>.</font></li>
<br /></ul>
<a name="wq7"></a>
<h1 id="wq7"><a href="#ToC_7">Inhalt von SDK und Runtime Environment</a></h1>
<p>SDK enth&auml;lt mehrere Entwicklungstools und Java Runtime Environment (JRE). Dieser Abschnitt enth&auml;lt Erl&auml;uterungen zum Inhalt der SDK-Tools und von Runtime Environment.</p>
<p>Anwendungen, die vollst&auml;ndig in Java geschrieben sind, sollten <strong>keine</strong> Abh&auml;ngigkeiten von der IBM SDK-Verzeichnisstruktur (oder Dateien in diesen Verzeichnissen) aufweisen. Abh&auml;ngigkeiten von der SDK-Verzeichnisstruktur (oder den Dateien in diesen Verzeichnissen) k&ouml;nnen zu Fehlern bei der Portierbarkeit von Anwendungen f&uuml;hren. JNI-Anwendungen (Java Native Interface) weisen geringf&uuml;gige Abh&auml;ngigkeiten auf.</p>
<a name="wq8"></a>
<h2 id="wq8"><a href="#ToC_8">Runtime Environment-Tools</a></h2>
<ul>
<li>Wichtige Klassen -- Dies sind die kompilierten Klassendateien f&uuml;r die Plattform. Sie m&uuml;ssen komprimiert bleiben, damit der Compiler und der Interpreter auf sie zugreifen k&ouml;nnen. &Auml;ndern Sie diese Klassen nicht, sondern erstellen Sie stattdessen Unterklassen, und &uuml;berschreiben Sie diese, falls erforderlich. 
<br /></li>
<li>JRE-Tools -- Die folgenden Tools sind Teil von Runtime Environment. Sofern nichts anderes angegeben ist, befinden sie sich im Verzeichnis jre\bin.
<ul>
<li> java.exe (Java-Interpreter) 
<ul class="simple">
<li>F&uuml;hrt Java-Klassen aus. Der Java-Interpreter f&uuml;hrt Programme aus, die in der Programmiersprache Java geschrieben sind.</li></ul>
<br /></li>
<li>javaw.exe (Java-Interpreter)
<ul class="simple">
<li>F&uuml;hrt Java-Klassen genauso aus wie der Befehl <strong>java</strong>, verwendet jedoch kein Konsolfenster.</li></ul>
<br /></li>
<li>keytool.exe (Tool f&uuml;r das Schl&uuml;ssel- und Zertifikatmanagement)
<ul class="simple">
<li>Verwaltet einen Schl&uuml;sselspeicher (Datenbank) mit privaten Schl&uuml;sseln und den ihnen zugeordneten X.509-Zertifikatketten, die die entsprechenden &ouml;ffentlichen Schl&uuml;ssel authentifizieren.</li></ul>
<br /></li>
<li>policytool.exe (Tool f&uuml;r die Erstellung und das Management von Richtliniendateien)
<ul class="simple">
<li>Erstellt und &auml;ndert die externen Richtlinienkonfigurationsdateien, die die Java-Sicherheitsrichtlinie Ihrer Installation definieren.</li></ul>
<br /></li>
<li>rmid.exe (Systemd&auml;mon f&uuml;r die RMI-Aktivierung)
<ul class="simple">
<li>Startet den Aktivierungssystemd&auml;mon, so dass Objekte in JVM (Java Virtual Machine) registriert und aktiviert werden k&ouml;nnen.</li></ul>
<br /></li>
<li>tnameserv.exe (CORBA Naming Service (CORBA - Common Object Request Broker Architecture))
<ul class="simple">
<li>Startet den CORBA Transient Naming Service.</li></ul>
<br /></li>
<li>rmiregistry.exe (Java-Registrierungsdatenbank f&uuml;r ferne Objekte)
<ul class="simple">
<li>Erstellt und startet eine Registrierungsdatenbank f&uuml;r ferne Objekte an dem angegebenen Port des aktuellen Hosts.</li></ul>
<br /></li>
<li>ikeyman.exe (iKeyman-GUI-Dienstprogramm)
<ul class="simple">
<li>Erm&ouml;glicht das Verwalten von Schl&uuml;sseln, Zertifikaten und Zertifikatsanforderungen. Weitere Informationen finden Sie im zugeh&ouml;rigen Handbuch <em>Security Guide</em> und unter <a href="http://www.ibm.com/developerworks/java/jdk/security">http://www.ibm.com/developerworks/java/jdk/security</a>. SDK enth&auml;lt auch eine Befehlszeilenversion dieses Dienstprogramms. Weitere Informationen hierzu finden Sie im Abschnitt <a href="#ikeycmd">iKeyman-Eingabehilfen</a>.</li></ul>
<br /></li>
<li>jextract.exe (Extrahierungsprogramm f&uuml;r Speicherausz&uuml;ge)
<ul class="simple">
<li>Konvertiert einen vom System erstellten Speicherauszug in ein einheitliches Format, das von <a href="#jformat">jdmpview</a> verwendet werden kann. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>javaws.exe (Java Web Start)
<ul class="simple">
<li>Erm&ouml;glicht die Implementierung und automatische Verwaltung von Java-Anwendungen.</li></ul>
<br /></li></ul></li></ul>
<a name="sdktools"></a>
<h2 id="sdktools"><a href="#ToC_9">SDK-Tools</a></h2>
<ul>
<li>Die folgenden Tools sind Teil von SDK und befinden sich im Verzeichnis C:\Programme\IBM\Java50\bin :
<ul>
<li>javac.exe (Java-Compiler)
<ul class="simple">
<li>Kompiliert Programme, die in der Programmiersprache Java in Bytecodes (kompilierter Java-Code) geschrieben werden.</li></ul>
<br /></li>
<li>appletviewer.exe (Java Applet Viewer)
<ul class="simple">
<li>Testet und f&uuml;hrt Applets au&szlig;erhalb eines Web-Browsers aus.</li></ul>
<br /></li>
<li>jdb.exe (Java-Debugger)
<ul class="simple">
<li>Hilft beim Debugging Ihres Java-Programms.</li></ul>
<br /></li>
<li>javap.exe (Disassembler f&uuml;r Klassendateien)
<ul class="simple">
<li>Zerlegt kompilierte Dateien und kann eine Darstellung der Bytecodes drucken.</li></ul>
<br /></li>
<li>javadoc.exe (Java-Dokumentationsgenerator)
<ul class="simple">
<li>Generiert HTML-Seiten der API-Dokumentation &uuml;ber Java-Quellendateien.</li></ul>
<br /></li>
<li>javah.exe (C-Header- und Stubdateigenerator)
<ul class="simple">
<li>Erm&ouml;glicht die Zuordnung nativer Methoden zu Code, der in der Programmiersprache Java geschrieben wurde.</li></ul>
<br /></li>
<li>jar.exe (Java-Archivierungstool)
<ul class="simple">
<li>Kombiniert mehrere Dateien in einer einzelnen JAR-Datei (Java Archive).</li></ul>
<br /></li>
<li>jarsigner.exe (Tool zur JAR-Signierung und -Pr&uuml;fung)
<ul class="simple">
<li>Generiert Signaturen f&uuml;r JAR-Dateien und pr&uuml;ft die Signaturen der signierten JAR-Dateien.</li></ul>
<br /></li>
<li>jconsole.exe (JConsole - experimentelles &Uuml;berwachungs- und Verwaltungstool)
<ul class="simple">
<li>Experimentelles (nicht unterst&uuml;tztes) JMX-kompatibles grafisches Tool zur &Uuml;berwachung von lokalen und fernen JVMs.</li></ul>
<br /></li>
<li>native2ascii.exe (Native-zu-ASCII-Converter)
<ul class="simple">
<li>Konvertiert eine native Codierungsdatei in eine ASCII-Datei, die Zeichen enth&auml;lt, die in Latin-1 und/oder Unicode codiert sind.</li></ul>
<br /></li>
<li>rmic.exe (Java-RMI-Stub-Converter (RMI - Remote Method Invocation))
<ul class="simple">
<li>Generiert Stubs, Entw&uuml;rfe und Ties f&uuml;r ferne Objekte. Umfasst Unterst&uuml;tzung f&uuml;r RMI-IIOP
(RMI over Internet Inter-ORB Protocol).</li></ul>
<br /></li>
<li>idlj.exe (IDL f&uuml;r Java-Compiler)
<ul class="simple">
<li>Generiert Java-Bindungen &uuml;ber eine festgelegte IDL-Datei.</li></ul>
<br /></li>
<li>serialver.exe (Befehl f&uuml;r serialisierte Version)
<ul class="simple">
<li>Wandelt die serialVersionUID f&uuml;r mindestens eine Klasse in ein Format um, das in eine Klasse kopiert werden kann, die sich in einer zuk&uuml;nftigen Version &auml;ndert.</li></ul>
<br /></li>
<li>extcheck.exe (Extcheck-Dienstprogramm)
<ul class="simple">
<li>Stellt Versionskonflikte zwischen einer JAR-Zieldatei und neu installierten JAR-Erweiterungsdateien fest.</li></ul>
<br /></li>
<li id="jformat">
<a name="jformat"></a>jdmpview.exe (plattformunabh&auml;ngiges Formatierprogramm f&uuml;r Speicherausz&uuml;ge)
<ul class="simple">
<li>Ein Tool, mit dem Sie Speicherausz&uuml;ge analysieren k&ouml;nnen. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul>
<br /></li>
<li>htmlconverter.exe (Java Plug-in HTML Converter)
<ul class="simple">
<li>Konvertiert eine HTML-Seite, in der Applets enthalten sind, in ein Format, das das Java-Plug-in verwenden kann.</li></ul>
<br /></li></ul>
<br /></li>
<li>Include-Dateien
<ul class="simple">
<li>C-Header f&uuml;r JNI-Programme.
<br /></li></ul>
<br /></li>
<li>Demos 
<ul class="simple">
<li>Das Verzeichnis 'demo' enth&auml;lt mehrere Unterverzeichnisse, in denen
Musterquellcode, Demos, Anwendungen und Applets enthalten sind, die Sie verwenden k&ouml;nnen. </li></ul>
<br /></li>
<li>Copyright
<ul class="simple">
<li>Copyrightvermerk f&uuml;r die SDK for Windows-Software.</li></ul>
<br /></li>
<li>Lizenz
<ul class="simple">
<li>Die Lizenzdatei C:\Programme\IBM\Java50\license enth&auml;lt die Lizenzvereinbarung f&uuml;r die SDK for Windows-Software. &Ouml;ffnen Sie diese Datei in einem Web-Browser, um die Lizenzvereinbarung anzuzeigen oder zu drucken.</li></ul>
<br /></li></ul>
<div>
<p><strong>Anmerkung:</strong> SDK for Windows enth&auml;lt lediglich die Benutzerhandb&uuml;cher, die Javadoc-Komponente und die zugeh&ouml;rige Lizenz, die zugeh&ouml;rigen Copyrightdateien sowie das Demoverzeichnis. Sie k&ouml;nnen die Sun-Softwaredokumentation &uuml;ber die Sun-Website aufrufen oder das Dokumentationspaket zur Sun-Software &uuml;ber die Sun-Website herunterladen: <a href="http://java.sun.com">http://java.sun.com</a>.</p></div>
<a name="wq10"></a>
<h1 id="wq10"><a href="#ToC_10">Installieren und Konfigurieren von SDK und Runtime Environment</a></h1>
<a name="wq11"></a>
<h2 id="wq11"><a href="#ToC_11">Vor der Installation</a></h2>
<p>Laden Sie zum Installieren des SDK- oder Runtime Environment-Pakets das entsprechende Installationspaket herunter. Stellen Sie sicher, dass Sie alle Pakete in dasselbe Verzeichnis herunterladen.
Die Pakete und die zugeh&ouml;rigen Dateinamen sind im Abschnitt <a href="#attended_installation">&Uuml;berwachte (interaktive) Installation</a> aufgef&uuml;hrt. Sie d&uuml;rfen die Dateinamen der Pakete nicht &auml;ndern. </p>
<p>Stellen Sie vor dem Start der Installation sicher, dass im Verzeichnis
C:\WINDOWS\TEMP gen&uuml;gend Speicherplatz f&uuml;r die Installation zur Verf&uuml;gung steht. W&auml;hrend der Installation wird im Verzeichnis TEMP der folgende tempor&auml;re Speicherplatz ben&ouml;tigt:  </p>
<ul>
<li>Installierbares SDK-Paket: 130 MB</li>
<li>Installierbares Runtime Environment-Paket: 85 MB </li></ul><p class="indatacontent">Wenn nicht gen&uuml;gend tempor&auml;rer Speicherplatz zur Verf&uuml;gung steht, zeigt das Installationsprogramm einen Fehler an, und die Installation wird beendet. Wenn Ihr System &uuml;ber gen&uuml;gend tempor&auml;ren Speicherplatz verf&uuml;gt, diese Nachricht jedoch weiterhin angezeigt wird, pr&uuml;fen Sie, ob die Pakete, die Sie installieren wollen, vollst&auml;ndig heruntergeladen wurden. Dies ist m&ouml;glich, indem Sie die Dateigr&ouml;&szlig;e des Pakets mit der Dateigr&ouml;&szlig;e vergleichen, die auf den Webseiten angezeigt wird, &uuml;ber die Sie das Paket heruntergeladen haben.</p>
<a name="attended_installation"></a>
<h2 id="attended_installation"><a href="#ToC_12">&Uuml;berwachte (interaktive) Installation</a></h2>
<div>
<p>Sie k&ouml;nnen die folgenden Pakete installieren:</p>
<ul>
<li>Installierbares SDK-Paket: ibm-java2-sdk-50-win-i386.exe</li>
<li>Installierbares Runtime Environment-Paket: ibm-java2-jre-50-win-i386.exe</li>
<li>Installierbares Runtime Environment-Paket (nur IBM Hardware): ibm-java2-jre-50-ibmpc-win-i386.exe</li></ul>
<p>Andere Pakete werden als ZIP-Dateien zur Verf&uuml;gung gestellt:</p>
<ul>
<li>Runtime Environment-Paket: ibm-java2-jre-50-win-i386.zip</li>
<li>SDK-Paket: ibm-java2-sdk-50-win-i386.zip</li>
<li>Paket mit Java Communications API (Application Programming Interface) f&uuml;r
Windows: ibm-java2-javacomm-50-win-i386.zip.
Installationsanweisungen finden Sie im Abschnitt <a href="#instcomm">Installieren der Java Communications API</a>.</li>
<li>Dokumentationspaket: ibm-java2-docs-50-win-i386.zip</li>
<li>Demopaket: ibm-java2-demos-50-win-i386.zip</li></ul></div>
<a name="wq13"></a>
<h3 id="wq13"><a href="#ToC_13">Installieren der Pakete</a></h3>
<p></p>
<ol type="1">
<li>Starten Sie <strong>ibm-java2-sdk-50-win-i386.exe</strong> (f&uuml;r SDK) oder
<strong>ibm-java2-jre-50-win-i386.exe</strong> (nur f&uuml;r Runtime Environment). </li>
<li>Befolgen Sie die Anweisungen im Installationsassistenten.</li></ol><p class="indatacontent">Runtime Environment wird standardm&auml;&szlig;ig im Verzeichnis C:\Programme\IBM\Java50\jre installiert.</p>
<p>Wenn Sie das installierbare SDK-Paket heruntergeladen haben, k&ouml;nnen Sie ausw&auml;hlen, welche Komponente installiert werden soll:</p>
<ul>
<li>SDK-Entwicklungstools (z.&nbsp;B. der Java-Compiler)</li>
<li>Runtime Environment</li>
<li>Der Quellcode f&uuml;r die Sun-Klassenbibliotheken, der von mehreren Tools zum Debugging von Anwendungen verwendet wird.</li></ul><p class="indatacontent">Sie k&ouml;nnen die Komponenten einzeln oder kombiniert installieren.</p>
<p>Im Installationsassistenten werden folgende Optionen angezeigt:</p>
<ul>
<li><strong>Standard</strong> - Mit dieser Option werden alle drei Komponenten installiert.</li>
<li><strong>Minimal</strong> - Mit dieser Option wird nur Runtime Environment installiert.</li>
<li><strong>Benutzerdefiniert</strong> - Mit dieser Option k&ouml;nnen Sie ausw&auml;hlen, welche Komponente installiert werden soll.</li></ul>
<a name="wq15"></a>
<h3 id="wq15"><a href="#ToC_14">Installieren von Runtime Environment als System-JVM</a></h3>
<p>Bei der Installation von Runtime Environment (entweder als Teil
des installierbaren SDK-Pakets oder aus dem installierbaren
Runtime Environment-Paket) werden Sie gefragt, ob Sie Runtime
Environment als System-JVM (Java Virtual Machine) installieren wollen. Soll die Installation als System-JVM erfolgen, kopiert das
Installationsprogramm die Dateien <strong>java.exe</strong> und <strong>javaw.exe</strong> in das
Windows-Systemverzeichnis.
Wenn eine Version von <strong>java.exe</strong> oder <strong>javaw.exe</strong> bereits im Windows-Systemverzeichnis vorhanden ist, werden Sie gefragt, ob die vorhandene Version mit der aktuellen Version &uuml;berschrieben werden soll. Beim Installieren dieser Dateien in dem Windows-Systemverzeichnis wird diese Version von Runtime Environment zur Standard-JVM des Systems. Au&szlig;erdem wird der Registrierungsschl&uuml;ssel "Current Version" dieser Installation
entsprechend festgelegt. </p>
<a name="wq16"></a>
<div class="notetitle" id="wq16">Anmerkung:</div>
<div class="notebody">Wenn Sie Runtime Environment als System-JVM installieren, werden nur die Dateien <strong>java.exe</strong> und <strong>javaw.exe</strong> in das Windows-Systemverzeichnis kopiert. Es werden keine weiteren ausf&uuml;hrbaren Dateien (z.&nbsp;B. <strong>javac.exe</strong> oder <strong>appletviewer.exe</strong>) kopiert.</div>
<a name="wq17"></a>
<h2 id="wq17"><a href="#ToC_15">Nicht &uuml;berwachte Installation</a></h2>
<p>Wenn Sie eine nicht &uuml;berwachte Installation erstellen wollen, m&uuml;ssen Sie zun&auml;chst eine nicht &uuml;berwachte Installation vollst&auml;ndig ausf&uuml;hren und eine Antwortdatei (setup.iss) erstellen, in der die Optionen aufgef&uuml;hrt sind, die Sie w&auml;hrend der Installation ausgew&auml;hlt haben. Die Antwortdatei muss f&uuml;r die Computer, auf denen sie verwendet werden soll, ordnungsgem&auml;&szlig; erstellt werden. Erstellen Sie gegebenenfalls mehrere Antwortdateien, die zum Installieren der Pakete auf Computern mit unterschiedlichen Konfigurationen verwendet werden k&ouml;nnen.</p>
<p>Wenn Sie w&auml;hrend der Installation eine Antwortdatei erstellen wollen, geben Sie Folgendes an einer Eingabeaufforderung ein:</p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /r</pre><p class="indatacontent">oder</p>
<pre class="xmp">ibm-java2-jre-50-win-i386 /r</pre>
<p>Je nach dem verwendeten Windows-Produkt wird eine Antwortdatei (setup.iss) entweder im
Verzeichnis C:\Windows oder C:\Winnt erstellt. Dabei ist C: das
Bootlaufwerk.</p>
<p>W&auml;hrend einer interaktiven Installation wird m&ouml;glicherweise folgende Nachricht angezeigt:</p>
<p></p>
<pre class="xmp">   Eine andere Version von Java Runtime Environment
   ist momentan als System-JVM installiert. Wollen
   Sie die vorige System-JVM mit dieser JRE-Version
   &uuml;berschreiben?</pre>
<p>Wenn diese Nachricht angezeigt wird, w&auml;hlen Sie
<strong>Nein</strong> aus, und beenden Sie die Installation. Wechseln Sie in das Windows-Systemverzeichnis, und l&ouml;schen Sie die beiden folgenden Dateien:</p>
<ul>
<li>java.exe</li>
<li>javaw.exe</li></ul>
<p>Nachdem Sie die Dateien gel&ouml;scht haben, starten Sie die
interaktive Installation erneut mit dem oben aufgef&uuml;hrten Befehl.</p>
<p>Kopieren Sie auf dem System, auf dem Sie die nicht &uuml;berwachte Installation ausf&uuml;hren wollen, die Antwortdatei
setup.iss in das Verzeichnis C:\Windows. Nachdem Sie die Datei kopiert haben, geben Sie Folgendes an einer Eingabeaufforderung ein:</p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /s /f1c:\Windows\setup.iss /f2c:\setup.log
ibm-java2-jre-50-win-i386 /s /f1c:\Windows\setup.iss /f2c:\setup.log</pre>
<a name="wq18"></a>
<div class="notelisttitle" id="wq18">Anmerkungen:</div>
<ol type="1">
<li>Nach <tt>/f1</tt> oder <tt>/f2</tt> d&uuml;rfen keine Leerzeichen stehen.</li>
<li>Die Option <tt>/f1</tt> gibt den Namen und
die Position der Antwortdatei an. Die Option <tt>/f2</tt> gibt den
Namen und die Position der Protokolldatei an.</li>
</ol>
<p>Wenn die Installation erfolgreich durchgef&uuml;hrt wurde, enth&auml;lt die Protokolldatei die Zeichenfolge <tt>ResultCode=0</tt>.</p>
<a name="wq20"></a>
<h2 id="wq20"><a href="#ToC_16">Aktivieren von IBM Accessibility Bridge</a></h2>
<p>IBM Accessibility Bridge wird installiert, ist jedoch
standardm&auml;&szlig;ig inaktiviert. Wenn Sie
IBM Accessibility Bridge aktivieren wollen, l&ouml;schen Sie das Nummernzeichen, das sich am Anfang der folgenden Zeile in der Datei Accessibility.properties im Verzeichnis jre/lib befindet:</p>
<p></p>
<pre class="xmp">#assistive_technologies=JawBridge</pre>
<p>Auf der folgenden Website finden Sie weitere Informationen zu den Accessibility-Dienstprogrammen:</p>
<p><a href="http://java.sun.com/products/jfc/accessibility.html">http://java.sun.com/products/jfc/accessibility.html</a></p>
<a name="wq21"></a>
<h2 id="wq21"><a href="#ToC_17">Inaktivieren der Unterst&uuml;tzung von Java Accessibility</a></h2>
<p>Sie k&ouml;nnen die Unterst&uuml;tzung von Java Accessibility inaktivieren, um die JVM-Ladeleistung der
Java-Anwendungen zu verbessern, die keine Unterst&uuml;tzung der Java-Technologie f&uuml;r behindertengerechte Bedienung insbesondere &uuml;ber Netzverbindungen bieten.</p>
<p>Wenn Sie die Unterst&uuml;tzung von Java Accessibility inaktivieren wollen, setzen Sie den Wert f&uuml;r die Umgebungsvariable <strong>JAVA_ASSISTIVE</strong> auf OFF. Technologie f&uuml;r behindertengerechte Bedienung, wie z.&nbsp;B. JawBridge, ist nicht verf&uuml;gbar, wenn f&uuml;r diese Umgebungsvariable OFF angegeben ist, obwohl die Technologie in der Datei
Accessibility.properties aktiviert ist.</p>
<a name="wq22"></a>
<h2 id="wq22"><a href="#ToC_18">Informationen f&uuml;r Benutzer europ&auml;ischer Sprachversionen</a></h2>
<p>Unter Windows weist ein Prozess zwei Codepages auf: die ANSI- (oder Windows-)Codepage und die
OEM- (oder DOS-)Codepage.</p>
<p>Das Befehlsfenster verwendet normalerweise die OEM-Codepage. In der Java-Konsolausgabe wird die Codepage des Befehlsfensters verwendet, &uuml;ber das Java gestartet wird. F&uuml;r den Befehl <strong>javaw</strong> wird jedoch immer die ANSI-Codepage verwendet. Sie k&ouml;nnen die Codepage, die f&uuml;r die Konsolausgabe verwendet werden soll, mit der Option <strong>-Dconsole.encoding</strong> im Befehl <strong>java</strong> angeben.
Beispielsweise wird mit <strong>-Dconsole.encoding=Cp1252</strong> angegeben, dass f&uuml;r alle Konsolausgaben die Codepage Windows ANSI Latin1 (1252) verwendet werden soll.</p>
<a name="pathcons"></a>
<h2 id="pathcons"><a href="#ToC_19">Festlegen der Umgebungsvariablen PATH</a></h2>
<p>Beachten Sie, dass alle vorhandenen ausf&uuml;hrbaren Java-Dateien in dem von
Ihnen verwendeten Pfad &uuml;berschrieben werden, wenn Sie die
Umgebungsvariable PATH wie unten beschrieben &auml;ndern.</p>
<p>Nach der Installation von SDK k&ouml;nnen Sie ein Tool ausf&uuml;hren, indem Sie an einer
Eingabeaufforderung den Namen des Tools zusammen mit einem Dateinamen als Argument eingeben.</p>
<p>Geben Sie den Pfad f&uuml;r ein Tool immer so an, dass der Pfad vor dem Toolnamen steht. Wenn beispielsweise SDK for Windows im Verzeichnis C:\Programme\IBM\Java50\bin installiert ist,
k&ouml;nnen Sie eine Datei mit dem Namen MeineDatei.java kompilieren, indem
Sie Folgendes an einer Eingabeaufforderung eingeben:</p>
<pre class="xmp">  "C:\Programme\IBM\Java50\bin\javac" MeineDatei.java</pre>
<p>Gehen Sie wie folgt vor, um nicht jedesmal den vollst&auml;ndigen Pfad eingeben zu m&uuml;ssen:</p>
<ol type="1">
<li>F&uuml;gen Sie der Umgebungsvariablen <strong>PATH</strong> die folgenden Verzeichnisse hinzu: 
<ul class="simple">
<li>C:\Programme\IBM\Java50\bin (nur SDK)</li>
<li>C:\Programme\IBM\Java50\jre\bin (SDK und Runtime Environment)</li></ul>
<p>Wenn SDK oder Runtime Environment in einem anderen Verzeichnis installiert sind, ersetzen Sie C:\Programme\IBM\Java50\ durch das Verzeichnis, in dem SDK oder Runtime Environment installiert sind.</p>
<br /></li>
<li>Kompilieren Sie die Datei mit dem Tool <strong>javac</strong>. Geben Sie beispielsweise zum
Kompilieren der Datei MeineDatei.java Folgendes an einer
Eingabeaufforderung ein: 
<pre class="xmp">  javac MeineDatei.java</pre> 
<p>Mit der Umgebungsvariablen <strong>PATH</strong> k&ouml;nnen unter Windows ausf&uuml;hrbare Dateien, wie z.&nbsp;B. javac, java und javadoc, in allen aktuellen
Verzeichnissen gesucht werden. Geben Sie zum Anzeigen des aktuellen Werts der
Umgebungsvariablen <strong>PATH</strong> Folgendes an einer
Eingabeaufforderung ein:</p>
<pre class="xmp">  echo %PATH%</pre> </li></ol>
<a name="wq24"></a>
<h2 id="wq24"><a href="#ToC_20">Festlegen der Umgebungsvariablen CLASSPATH</a></h2>
<p>Die Umgebungsvariable <strong>CLASSPATH</strong> teilt den SDK-Tools
(z.&nbsp;B. <strong>java</strong>, <strong>javac</strong> und <strong>javadoc</strong>)
die Speicherposition der Java-Klassenbibliotheken mit.</p>
<p>Sie m&uuml;ssen die Umgebungsvariable <strong>CLASSPATH</strong> nur festlegen,
wenn eine der folgenden Aussagen zutrifft:</p>
<ul>
<li>Sie ben&ouml;tigen eine andere Bibliothek oder Klassendatei (z.&nbsp;B. eine, die
Sie entwickeln), und diese befindet sich nicht im aktuellen Verzeichnis.
<br /></li>
<li>Sie &auml;ndern die Speicherposition der Verzeichnisse
<strong>bin</strong> und <strong>lib</strong>, sodass sie sich nicht mehr
im selben &uuml;bergeordneten Verzeichnis befinden.
<br /></li>
<li>Sie wollen Anwendungen entwickeln oder ausf&uuml;hren, die unterschiedliche
Laufzeitumgebungen auf demselben System verwenden.
<br /></li></ul>
<p>Geben Sie zum Anzeigen des aktuellen Werts der
Umgebungsvariablen <strong>CLASSPATH</strong> Folgendes
an einer Eingabeaufforderung ein:</p>
<pre class="xmp">  echo %CLASSPATH%</pre>
<p>Wenn Sie Anwendungen entwickeln und ausf&uuml;hren wollen, die unterschiedliche Laufzeitumgebungen verwenden,
wie z.&nbsp;B. andere Versionen, die separat installiert wurden, m&uuml;ssen Sie <strong>CLASSPATH</strong>
(und <strong>PATH</strong>) f&uuml;r jede Anwendung explizit festlegen. Wenn Sie mehrere Anwendungen
gleichzeitig ausf&uuml;hren und unterschiedliche Laufzeitumgebungen verwenden wollen, muss jede Anwendung
in einem separaten Befehlsfenster
ausgef&uuml;hrt werden.</p>
<p>Wenn Sie nur jeweils eine Version von Java ausf&uuml;hren wollen, k&ouml;nnen Sie mit Hilfe eines Batch-Scripts zwischen den verschiedenen Laufzeitumgebungen umschalten.</p>
<br />
<a name="wq25"></a>
<h2 id="wq25"><a href="#ToC_21">Deinstallation</a></h2>
<p>Gehen Sie wie folgt vor, um SDK zu deinstallieren, abh&auml;ngig davon, ob Sie
eine &uuml;berwachte oder nicht &uuml;berwachte Installation durchgef&uuml;hrt haben:</p>
<ol type="1">
<li>Klicken Sie auf dem Windows-Desktop das Symbol <strong>Arbeitsplatz</strong> doppelt an.</li>
<li>Klicken Sie <strong>Systemsteuerung</strong> doppelt an.</li>
<li>Klicken Sie <strong>Software</strong> doppelt an.</li>
<li>Klicken Sie <strong>IBM 32-bit SDK for Java 2 V5.0</strong> in der Liste an, und
klicken Sie anschlie&szlig;end <strong>&Auml;ndern/Entfernen</strong> an.</li>
<li>Klicken Sie <strong>OK</strong> an.</li></ol>
<p>Diese Prozedur l&ouml;scht alle Pakete vom System, die mit dem Installationsprogramm installiert wurden. Das Java Communications API-Paket (siehe <a href="http://www.javasoft.com/products/javacomm/">Java Communications API</a>) oder zus&auml;tzliche Dateien, die aus den Zip-Paketen extrahiert wurden, werden <em>nicht</em> gel&ouml;scht. </p>
<a name="wq27"></a>
<div class="notetitle" id="wq27">Anmerkung:</div>
<div class="notebody">M&ouml;glicherweise werden Warnungen angezeigt, die darauf hinweisen, dass nicht alle Dateien und/oder Eintr&auml;ge in der Registrierungsdatenbank gel&ouml;scht wurden. Diese Warnungen werden ausgegeben, da
Windows davon ausgeht, dass bestimmte Dateien weiterhin verwendet werden. Diese Dateien und/oder Eintr&auml;ge in der
Registrierungsdatenbank werden beim n&auml;chsten Systemstart gel&ouml;scht.</div>
<p>Wenn auf dem System mehrere Installationen zwischen IBM 32-bit SDK for Windows, v5.0 und
V1.3.1 (oder &auml;ltere Versionen) vorhanden sind und Sie die &auml;lteren Version deinstallieren,
w&auml;hrend V5.0 weiterhin auf dem System vorhanden ist, l&ouml;scht das Deinstallationsprogramm zu
V1.3.1 die nachfolgend aufgef&uuml;hrten Registrierungsschl&uuml;ssel und alle Unterschl&uuml;ssel, die f&uuml;r V5.0 erforderlich sind. Dadurch wird die Installation von V5.0 besch&auml;digt:</p>
<ul>
<li>HKEY_LOCAL_MACHINE/Software/IBM/Java2 Runtime Environment</li>
<li>HKEY_LOCAL_MACHINE/Software/IBM/Java Development Kit </li></ul><p class="indatacontent">Installieren Sie daher V5.0 erst dann erneut, wenn Sie Version 1.3.1 deinstalliert haben.
Diese Einschr&auml;nkung in Bezug auf das Deinstallationsprogramm wurde f&uuml;r V1.4.0 und alle nachfolgenden Versionen behoben.</p>
<a name="invint"></a>
<h1 id="invint"><a href="#ToC_22">Verwenden von Runtime Environment</a></h1>
<p>Mit dem Tool <strong>java</strong> wird durch Starten von Java Runtime Environment und Laden einer angegebenen Klasse eine Java-Anwendung gestartet.</p>
<p>JVM sucht in den drei folgenden Positionsgruppen nach der urspr&uuml;nglichen Klasse (und anderen verwendeten Klassen): im Klassenpfad des Bootprogramms, in den installierten Erweiterungen und im Benutzerklassenpfad. Die nach dem Klassennamen oder JAR-Dateinamen angegebenen Argumente werden an die Hauptfunktion &uuml;bermittelt.</p>
<p>Der Befehl <strong>javaw</strong> ist identisch mit dem
Befehl <strong>java</strong>, au&szlig;er dass beim Verwenden des
Befehls <strong>javaw</strong> kein zugeordnetes Konsolfenster
angezeigt wird. Verwenden Sie den Befehl <strong>javaw</strong>,
wenn kein Fenster mit einer Eingabeaufforderung angezeigt werden
soll. Der Startbefehl <strong>javaw</strong> zeigt im Falle eines fehlgeschlagenen Starts ein Dialogfenster mit Fehlerinformationen an. </p>
<p>Die Befehle <strong>java</strong> und <strong>javaw</strong> haben folgende
Syntax:</p>
<pre class="xmp">java [ Optionen ] <em>Klasse</em> [ Argumente ... ]
java [ Optionen ] -jar <em>Datei.jar</em> [ Argumente ... ]
javaw [ Optionen ] <em>Klasse</em> [ Argumente ... ]
javaw [ Optionen ] -jar <em>Datei.jar</em> [ Argumente ... ]
</pre><p class="indatacontent">Elemente in eckigen Klammern sind optional.</p>
<p></p>
<dl class="parml">
<dt class="bold">Optionen</dt>
<dd>Befehlszeilenoptionen.
</dd>
<dt class="bold">Klasse</dt>
<dd>Der Name der Klasse, die aufgerufen werden soll.
</dd>
<dt class="bold">Datei.jar</dt>
<dd>Der Name der JAR-Datei, die aufgerufen werden soll. Sie wird nur mit der Option <strong>-jar</strong> verwendet.
</dd>
<dt class="bold">Argumente</dt>
<dd>Die Argumente, die an die Funktion <strong>main</strong> weitergeleitet werden.
</dd>
</dl>
<p>Wenn die Option <strong>-jar</strong> angegeben wurde,
enth&auml;lt die benannte JAR-Datei Klassen- und Ressourcendateien f&uuml;r die
Anwendung, wobei die Systemstartklasse &uuml;ber den Manifestheader f&uuml;r
die Hauptklasse angegeben wird. </p>
<a name="wq28"></a>
<h2 id="wq28"><a href="#ToC_23">Optionen</a></h2>
<p>Das Startprogramm verf&uuml;gt &uuml;ber mehrere Standardoptionen, die in
der aktuellen Laufzeitumgebung und auch in zuk&uuml;nftigen Releases
unterst&uuml;tzt werden. Daneben gibt es mehrere vom Standard abweichende Optionen. Die Standardoptionen wurden f&uuml;r die beste allgemeine Verwendung ausgew&auml;hlt. Gehen Sie deshalb bei &Auml;nderungen vorsichtig vor.</p>
<a name="wq29"></a>
<h3 id="wq29"><a href="#ToC_24">Angeben von Java-Optionen und Systemmerkmalen</a></h3>
<p>Sie k&ouml;nnen Java-Optionen und Systemmerkmale auf drei verschiedene Arten angeben.
Diese sind im Folgenden aufgelistet (nach Priorit&auml;t):</p>
<ol type="1">
<li>Durch Angeben der Option oder des Merkmals in der Befehlszeile. Beispiel:<tt class="xph">java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump MeineJavaKlasse</tt>.</li>
<li>Durch Erstellen einer Datei, die die Optionen enth&auml;lt, und Angeben der Datei in der Befehlszeile mit <strong>-Xoptionsfile=<em>&lt;Dateiname></em></strong>.</li>
<li>Durch Erstellen einer Umgebungsvariablen namens <strong>IBM_JAVA_OPTIONS</strong> mit den Optionen, z.&nbsp;B. <tt class="xph">set IBM_JAVA_OPTIONS=&quot;-Dmysysprop1=tcpip -Dmysysprop2=wait
-Xdisablejavadump&quot;</tt>.</li></ol>
<p>Die Optionen, die in der Befehlszeile ganz rechts stehen, haben Vorrang vor den Optionen, die ganz links stehen. Wenn Sie z.&nbsp;B. die Optionen <tt class="xph">-Xint -Xjit meineKlasse</tt> angeben, hat <strong>-Xjit</strong> Vorrang.</p>
<a name="wq31"></a>
<h3 id="wq31"><a href="#ToC_25">Standardoptionen</a></h3>
<ul class="simple">
<li>
<span class="term"><strong>-D</strong>&lt;<em>Merkmalname</em>>=&lt;<em>Wert</em>></span>
<ul class="simple">
<li>Definiert ein Systemmerkmal. </li></ul></li>
<li><strong>-assert</strong>
<ul class="simple">
<li>Zeigt Hilfe f&uuml;r auf Festlegungen bezogene Optionen an.</li></ul></li>
<li><strong>-cp</strong> oder <strong>-classpath</strong>
&lt;<em>durch ; getrennte
Verzeichnisse und ZIP- oder JAR-Dateien</em>>
<ul class="simple">
<li>Definiert den Suchpfad f&uuml;r Anwendungsklassen und -ressourcen. Wenn die Optionen <strong>-classpath</strong> und <strong>-cp</strong> nicht
verwendet werden und wenn <strong>CLASSPATH</strong> nicht definiert wurde, ist der Benutzerklassenpfad standardm&auml;&szlig;ig das aktuelle Verzeichnis (.).</li></ul></li>
<li><strong>-help</strong> oder <strong>-?</strong>
<ul class="simple">
<li>Zeigt einen Benutzungshinweis an.</li></ul></li>
<li><strong>-showversion</strong>
<ul class="simple">
<li>Zeigt die Produktversion an und setzt den Vorgang fort.</li></ul></li>
<li><strong>-verbose</strong>:[<em>class</em>,<em>gcterse</em>,<em>gc</em>,<em>dynload</em>,<em>stackwalk</em>,<em>sizes</em>,<em>stack</em>,<em>debug</em>,<em>jni</em>]
<ul class="simple">
<li>Aktiviert die ausf&uuml;hrliche Ausgabe.</li></ul></li>
<li><strong>-version</strong>
<ul class="simple">
<li>Zeigt die Produktversion an.</li></ul></li>
<li><strong>-version:</strong><em>&lt;Wert></em>
<ul class="simple">
<li>Setzt voraus, dass die angegebene Version ausgef&uuml;hrt wird.</li></ul></li>
<li><strong>-jre-restrict-search</strong>
<ul class="simple">
<li>Nimmt private Benutzer-JREs in die Versionssuche auf.</li></ul></li>
<li><strong>-no-jre-restrict-search</strong>
<ul class="simple">
<li>Schlie&szlig;t private Benutzer-JREs von der Versionssuche aus.</li></ul></li>
<li><strong>-agentlib:</strong>&lt;<em>Bibliotheksname</em>>[=&lt;<em>Optionen</em>>]
<ul class="simple">
<li>L&auml;dt die native Agentenbibliothek &lt;Bibliotheksname>, z.&nbsp;B. <strong>-agentlib:hprof</strong>. Geben Sie <strong>-agentlib:jdwp=help</strong> und <strong>-agentlib:hprof=help</strong> in der Befehlszeile an, um weitere Informationen zu erhalten.</li></ul></li>
<li><strong>-agentpath:</strong><em>Bibliotheksname</em>[=&lt;<em>Optionen</em>>]
<ul class="simple">
<li>L&auml;dt die native Agentenbibliothek mit dem vollst&auml;ndigen Pfadnamen.</li></ul></li>
<li><strong>-javaagent:</strong>&lt;<em>JAR-Pfad</em>>[=&lt;<em>Optionen</em>>]
<ul class="simple">
<li>L&auml;dt den Java-Programmiersprachenagenten. Weitere Informationen finden Sie in der Dokumentation zur API java.lang.instrument.</li></ul></li>
<li><strong>-X</strong>
<ul class="simple">
<li>Zeigt Hilfe f&uuml;r vom Standard abweichende Optionen an.</li></ul></li></ul>
<a name="xoptions"></a>
<h3 id="xoptions"><a href="#ToC_26">Vom Standard abweichende Optionen</a></h3>
<p>Bei den unten aufgelisteten <strong>-X</strong>-Optionen handelt es sich um Optionen, die vom Standard abweichen und jederzeit ohne vorherige Ank&uuml;ndigung ge&auml;ndert werden k&ouml;nnen. </p>
<p>In Optionen, die den Parameter <em>&lt;Gr&ouml;&szlig;e></em> enthalten, m&uuml;ssen Sie der Zahl ein "k" oder "K" f&uuml;r Kilobyte, ein "m" oder "M"
f&uuml;r Megabyte oder ein "g" oder "G" f&uuml;r Gigabyte voranstellen.</p>
<ul class="simple">
<li><strong>-Xargencoding</strong>
<ul class="simple">
<li>Mit dieser Option k&ouml;nnen Sie Unicode-Escapezeichenfolgen in die Argumentenliste aufnehmen. Sie ist standardm&auml;&szlig;ig inaktiviert.</li></ul></li>
<li><strong>-Xbootclasspath:</strong>&lt;<em>durch ; getrennte Verzeichnisse und ZIP- oder JAR-Dateien</em>>
<ul class="simple">
<li>Definiert den Suchpfad f&uuml;r Bootklassen und -ressourcen. Standardm&auml;&szlig;ig wird in den internen VM-Verzeichnissen und JAR-Dateien nach Bootklassen und -ressourcen gesucht.</li></ul></li>
<li><strong>-Xbootclasspath/a:</strong>&lt;<em>durch ; getrennte Verzeichnisse und ZIP- oder JAR-Dateien</em>>
<ul class="simple">
<li>F&uuml;gt die angegebenen Verzeichnisse, ZIP- oder JAR-Dateien am Ende des Bootklassenpfads hinzu. Standardm&auml;&szlig;ig wird in den internen VM-Verzeichnissen und JAR-Dateien nach Bootklassen und -ressourcen gesucht.</li></ul></li>
<li><strong>-Xbootclasspath/p:</strong>&lt;<em>durch ; getrennte Verzeichnisse und ZIP- oder JAR-Dateien</em>>
<ul class="simple">
<li>F&uuml;gt die angegebenen Verzeichnisse, ZIP- oder JAR-Dateien am Anfang des Bootklassenpfads hinzu. Implementieren Sie keine Anwendungen, bei denen mit der Option <strong>-Xbootclasspath:</strong> oder <strong>-Xbootclasspath/p:</strong> eine Klasse in der Standard-API &uuml;berschrieben wird, da eine solche Implementierung gegen die Java 2 Runtime Environment-Bin&auml;rcodelizenz verst&ouml;&szlig;t. Standardm&auml;&szlig;ig wird in den internen VM-Verzeichnissen und JAR-Dateien nach Bootklassen und -ressourcen gesucht.</li></ul></li>
<li id="xcheckjni">
<a name="xcheckjni"></a><strong>-Xcheck:jni</strong>
<ul class="simple">
<li>F&uuml;hrt zus&auml;tzliche Pr&uuml;fungen f&uuml;r JNI-Funktionen aus. Sie k&ouml;nnen auch die Option <a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a> verwenden. Standardm&auml;&szlig;ig wird keine Pr&uuml;fung ausgef&uuml;hrt.</li></ul></li>
<li><strong>-Xcheck:nabounds</strong>
<ul class="simple">
<li>F&uuml;hrt zus&auml;tzliche Pr&uuml;fungen f&uuml;r JNI-Bereichsoperationen aus. Sie k&ouml;nnen auch die Option <a href="#xrunjnichk"><strong>-Xrunjnichk</strong></a> verwenden. Standardm&auml;&szlig;ig wird keine Pr&uuml;fung ausgef&uuml;hrt.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xclassgc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Erfasst Klassenobjekte bei jeder Garbage-Collection.
<span id="changed">|</span>Diese Option ist standardm&auml;&szlig;ig aktiviert.</li></ul></font></li>
<li id="compactexplicitgc">
<a name="compactexplicitgc"></a><strong>-Xcompactexplicitgc</strong>
<ul class="simple">
<li>Komprimiert bei jedem Aufruf an <tt class="xph">System.gc()</tt>. Siehe auch <a href="#nocompactexplicitgc"><strong>-Xnocompactexplicitgc</strong></a>. Standardm&auml;&szlig;ig wird die Komprimierung nur ausgef&uuml;hrt, wenn sie intern ausgel&ouml;st wird.</li></ul></li>
<li id="compactgc">
<a name="compactgc"></a><strong>-Xcompactgc</strong>
<ul class="simple">
<li>Komprimiert alle Garbage-Collector-Zyklen. Siehe auch <a href="#nocompactgc"><strong>-Xnocompactgc</strong></a>. Standardm&auml;&szlig;ig wird die Komprimierung nur ausgef&uuml;hrt, wenn sie intern ausgel&ouml;st wird.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentbackground</strong> <em>&lt;Anzahl></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Gibt die Anzahl der Hintergrundthreads mit niedriger Priorit&auml;t an, die w&auml;hrend der Garbage-Collection-Phase der gleichzeitigen Markierung zur Unterst&uuml;tzung der Mutator-Threads zugeordnet sind. Die Standardeinstellung lautet 1.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconcurrentlevel</strong> <em>&lt;Zahl></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Gibt die Zuordnungsauslastungsrate an. Sie gibt das Verh&auml;ltnis zwischen dem zugeordneten und dem markierten Freispeicher an. Die Standardeinstellung lautet 8.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xconmeter:&lt;soa | loa | dynamic></strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Legt fest, f&uuml;r welchen Speicherbereich (LOA oder SOA) die Belegung gemessen wird, und folglich, welche Zuordnungen w&auml;hrend der gleichzeitigen Markierung belastet werden. Mit <strong>-Xconmeter:soa</strong> wird die Zuordnungsauslastung f&uuml;r Zuordnungen &uuml;ber den SOA (Small Object Area) und mit <strong>-Xconmeter:loa</strong> die Zuordnungsauslastung f&uuml;r Zuordnungen &uuml;ber den LOA (Large Object Area) verwendet. Wenn <strong>-Xconmeter:dynamic </strong>	angegeben ist, legt der Collector dynamisch fest, welcher Bereich gemessen werden soll, basierend darauf, welcher Bereich (SOA oder LOA) zuerst ausgelastet ist. Standardm&auml;&szlig;ig ist die Option auf <strong>-Xconmeter:soa</strong> gesetzt. </li></ul></font></li>
<li id="xdbg">
<a name="xdbg"></a><strong>-Xdbg:</strong>&lt;<em>Optionen</em>>
<ul class="simple">
<li>L&auml;dt Debugbibliotheken, damit das ferne Debugging von Anwendungen unterst&uuml;tzt wird.
Dies ist identisch mit <a href="#runjdwp"><strong>-Xrunjdwp</strong></a>.
Standardm&auml;&szlig;ig werden die Debugbibliotheken nicht geladen, und die VM-Instanz wird f&uuml;r das Debugging nicht aktiviert.</li></ul></li>
<li><strong>-Xdbginfo:</strong>&lt;<em>Pfad zur Symboldatei</em>>
<ul class="simple">
<li>L&auml;dt und &uuml;bergibt Optionen an den Debuginformationsserver. Der Debuginformationsserver ist standardm&auml;&szlig;ig inaktiviert.</li></ul></li>
<li><strong>-Xdebug</strong>
<ul class="simple">
<li>Startet JVM mit aktiviertem Debugger. Der Debugger ist standardm&auml;&szlig;ig inaktiviert.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xdisableexcessivegc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Inaktiviert die Ausl&ouml;sung der Ausnahmebedingung <tt class="xph">OutOfMemory</tt>, wenn in der Garbage-Collection zu viel Zeit ben&ouml;tigt wurde. Diese Option ist standardm&auml;&szlig;ig inaktiviert.</li></ul></font></li>
<li><strong>-Xdisableexplicitgc</strong>
<ul class="simple">
<li>Signalisiert VM, dass Aufrufe an <tt class="xph">System.gc()</tt> keine Auswirkung haben. Aufrufe an <tt class="xph">System.gc()</tt> l&ouml;sen standardm&auml;&szlig;ig eine Garbage-Collection aus.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xdisablestringconstantgc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Verhindert, dass Zeichenfolgen in der zeichenfolgeninternen Tabelle erfasst werden.
<span id="changed">|</span>Diese Option ist standardm&auml;&szlig;ig inaktiviert.</li></ul></font></li>
<li><strong>-Xdisablejavadump</strong>
<ul class="simple">
<li>Inaktiviert die Generierung von Java-Speicherausz&uuml;gen bei Fehlern und Signalen. Die Generierung von Java-Speicherausz&uuml;gen ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xenableexcessivegc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Wenn in der GC zu viel Zeit beansprucht wird, gibt diese Option f&uuml;r eine Zuordnungsanforderung NULL zur&uuml;ck, wodurch die Ausnahmebedingung <tt class="xph">OutOfMemory</tt> ausgel&ouml;st wird. Diese Aktion erfolgt nur, wenn der Freispeicher vollst&auml;ndig ausgelastet ist und die ben&ouml;tigte Zeit mindestens 95 % betr&auml;gt. Dies ist das Standardverhalten.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xenablestringconstantgc</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Erm&ouml;glicht die Erfassung von Zeichenfolgen aus der internen Zeichenfolgentabelle.
<span id="changed">|</span>Diese Option ist standardm&auml;&szlig;ig aktiviert.</li></ul></font></li>
<li><strong>-Xfuture</strong>
<ul class="simple">
<li>Aktiviert genaue Formatpr&uuml;fungen von Klassendateien. Verwenden Sie diese Option f&uuml;r die Entwicklung von neuem Code, da in den zuk&uuml;nftigen Releases standardm&auml;&szlig;ig genauere Pr&uuml;fungen ausgef&uuml;hrt werden.
Genaue Formatpr&uuml;fungen sind standardm&auml;&szlig;ig inaktiviert.</li></ul></li>
<li><strong>-Xgcpolicy:[optthruput]|[optavgpause]|[gencon]</strong>
<ul class="simple">
<li>Steuert das Verhalten des Garbage-Collectors. Die Option <em>optthruput</em> ist die Standardeinstellung und erm&ouml;glicht einen sehr hohen Anwendungsdurchsatz, wobei jedoch gelegentliche Pausen auftreten. Die Option <em>optavgpause</em> verringert die Zeit
dieser Garbage-Collection-Pausen. Au&szlig;erdem wird der
Effekt eines h&ouml;heren Freispeicherumfangs w&auml;hrend der Garbage-Collection-Pause begrenzt. Verwenden Sie <em>optavgpause</em>, wenn Ihre Konfiguration &uuml;ber einen sehr gro&szlig;en Freispeicher verf&uuml;gt. Die Option <em>gencon</em> fordert die kombinierte Verwendung von gleichzeitig ablaufendem GC und GC nach Objektalter an, um alle Garbage-Collection-Pausen zu verringern.  Weitere Informationen finden Sie im Abschnitt <a href="#garbage">Angeben der Garbage-Collection-Richtlinie</a>.</li></ul></li>
<li><strong>-Xgcthreads</strong>&lt;<em>Anzahl Threads</em>>
<ul class="simple">
<li>Definiert die Anzahl der Helper-Threads, die f&uuml;r Paralleloperationen w&auml;hrend der Garbage-Collection verwendet werden. Standardm&auml;&szlig;ig entspricht die Anzahl Threads der Anzahl vorhandener physischer CPUs minus 1 (mindestens 1).</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xgcworkpackets</strong> <em>&lt;Anzahl></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Gibt die Gesamtzahl der Vorgangspakete an, die im globalen Collector zur Verf&uuml;gung stehen. Wenn keine Anzahl angegeben ist, ordnet der Collector auf Grundlage der maximalen Gr&ouml;&szlig;e des Freispeichers eine Paketzahl zu.</li></ul></font></li>
<li><strong>-Xint</strong>
<ul class="simple">
<li>Mit Hilfe dieser Option verwendet JVM nur den Interpreter. Der JIT-Compiler (Just-In-Time)
wird inaktiviert. Der JIT-Compiler ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li><strong>-Xiss</strong><em>&lt;Gr&ouml;&szlig;e></em>
<ul class="simple">
<li>Definiert die urspr&uuml;ngliche Gr&ouml;&szlig;e des Java-Thread-Stacks. Standardm&auml;&szlig;ig sind 2 Kilobyte angegeben.</li></ul></li>
<li id="xjit">
<a name="xjit"></a><strong>-Xjit</strong>[:&lt;<em>Unteroption</em>>,&lt;<em>Unteroption</em>>,...]
<ul class="simple">
<li>Aktiviert den JIT-Compiler. Weitere Informationen zu den Unteroptionen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>. Siehe auch <a href="#xnojit"><strong>-Xnojit</strong></a>. Der JIT-Compiler ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="xlinenumbers">
<a name="xlinenumbers"></a><strong>-Xlinenumbers</strong>
<ul class="simple">
<li>Zeigt Zeilennummern in Stack-Traces f&uuml;r das Debugging an. Siehe auch <a href="#xnolinenumbers"><strong>-Xnolinenumbers</strong></a>. Zeilennummern sind standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="loa">
<a name="loa"></a><font color="red"><span id="changed">|</span><strong>-Xloa</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Diese Option ordnet einen LOA (Large Object Area) zu. Objekte werden diesem LOA statt dem SOA zugeordnet. Standardm&auml;&szlig;ig ist der LOA f&uuml;r alle GC-Richtlinien aktiviert, mit Ausnahme des Speicherteilbereichs, in dem der LOA nicht verf&uuml;gbar ist. Siehe auch <a href="#noloa"><strong>-Xnoloa</strong></a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloainitial</strong> <em>&lt;Zahl></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;Zahl> liegt zwischen 0 und 0,95 und gibt den Anfangsprozentsatz des aktuellen Bereichs f&uuml;r alte Objekte an, der dem LOA (Large Object Area) zugeordnet ist. Die Standardeinstellung lautet 0,05 oder 5 %. </li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xloamaximum</strong> <em>&lt;Zahl></em>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>&lt;Zahl> liegt zwischen 0 und 0,95 und gibt den maximalen Prozentsatz des aktuellen Bereichs f&uuml;r alte Objekte an, der dem LOA (Large Object Area) zugeordnet ist. Die Standardeinstellung lautet 0,5 oder 50 %.</li></ul></font></li>
<li id="xlp">
<a name="xlp"></a><font color="red"><span id="changed">|</span><strong>-Xlp</strong> (Windows 2003)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Fordert JVM auf, Java-Freispeicher mit gro&szlig;en Seiten zuzuordnen. Wenn keine gro&szlig;en Seiten zur Verf&uuml;gung stehen, startet JVM nicht, und die folgende Fehlernachricht wird angezeigt: <tt class="xph">GC: Systemkonfiguration unterst&uuml;tzt Option '-Xlp' nicht</tt>. Gro&szlig;e Seiten werden von Systemen unter Windows 2003 unterst&uuml;tzt, bei denen das Betriebssystem f&uuml;r die Verwendung gro&szlig;er Seiten konfiguriert wurde. Standardm&auml;&szlig;ig werden keine gro&szlig;en Seiten verwendet.
<span id="changed">|</span>Siehe <a href="#alloc_large_page">Konfigurieren einer Speicherzuordnung von gro&szlig;en Seiten</a>.</li></ul></font></li>
<li><strong>-Xmaxe</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den Maximalwert, um den der Garbage-Collector den Freispeicher erweitert.
Standardm&auml;&szlig;ig erweitert der Garbage-Collector den Freispeicher, wenn sich der freie Speicherbereich auf unter 30 % verringert (oder um den Wert, der mit <strong>-Xminf</strong> angegeben wurde). Der Freispeicher wird dann um den Wert erweitert, der f&uuml;r die Wiederherstellung von 30 % freiem Speicherbereich erforderlich ist. Die Option <strong>-Xmaxe</strong> begrenzt die Erweiterung auf den angegeben Wert. Beispielsweise begrenzt die Angabe von <tt class="xph">-Xmaxe10M</tt> die Erweiterung auf 10 MB. Standardm&auml;&szlig;ig ist keine maximale Gr&ouml;&szlig;e f&uuml;r die Erweiterung angegeben.</li></ul></li>
<li><strong>-Xmaxf</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den maximalen Prozentsatz des Freispeichers, der nach einer Garbage-Collection frei sein muss. Wenn der freie Speicherbereich diesen Prozentsatz &uuml;berschreitet, versucht JVM, den Freispeicher zu verkleinern. Geben Sie die Gr&ouml;&szlig;e als Dezimalwert im Bereich von 0-1 an. Z.&nbsp;B. setzt die Angabe <tt class="xph">-Xmaxf0.5</tt> den maximalen freien Speicherbereich auf 50 %. Der Standardwert lautet 0,6 (60 %).</li></ul></li>
<li><strong>-Xmca</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den Erweiterungsschritt f&uuml;r den Speicher, der zum Speichern des Arbeitsspeicherabschnitts f&uuml;r geladene Klassen zugeordnet wurde. Wenn mehr Speicher zum Speichern von Klassen im Arbeitsspeicher erforderlich ist, wird der zugeordnete Speicher um diesen Wert erh&ouml;ht. Standardm&auml;&szlig;ig lautet der Erweiterungsschritt
32 K.</li></ul></li>
<li><strong>-Xmco</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den Erweiterungsschritt f&uuml;r den Speicher, der zum Speichern des ROM-Abschnitts f&uuml;r geladene Klassen zugeordnet wurde. Wenn mehr Speicher zum Speichern von Klassen im ROM erforderlich ist, wird der zugeordnete Speicher um diesen Wert erh&ouml;ht. Standardm&auml;&szlig;ig lautet der Erweiterungsschritt
128 K.</li></ul></li>
<li><strong>-Xmine</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den Mindestwert, um den der Garbage-Collector den Freispeicher erweitert.
Standardm&auml;&szlig;ig erweitert der Garbage-Collector den Freispeicher um den Wert, der f&uuml;r die Wiederherstellung von 30 % freiem Speicherbereich erforderlich ist (oder um den Wert, der mit <strong>-Xminf</strong> angegeben wurde). Die Option <strong>-Xmine</strong> setzt die Erweiterung mindestens auf den angegebenen Wert. Beispielsweise wird mit der Angabe <tt class="xph">-Xmine50M</tt> eine Mindesterweiterungsgr&ouml;&szlig;e von 50 MB angegeben. Standardm&auml;&szlig;ig lautet die Erweiterungsgr&ouml;&szlig;e 1 MB.</li></ul></li>
<li><strong>-Xminf</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den Mindestprozentsatz des Freispeichers, der nach einer Garbage-Collection frei sein sollte. Wenn der freie Speicherbereich diesen Wert unterschreitet, versucht JVM, den Freispeicher zu erweitern. Geben Sie die Gr&ouml;&szlig;e als Dezimalwert zwischen 0 und 1 an. Mit <tt class="xph">-Xminf0.3</tt> z.&nbsp;B. wird freier Speicherbereich angefordert, der mindestens 30 % des Freispeichers betr&auml;gt. Standardm&auml;&szlig;ig lautet der Mindestwert 0,3.</li></ul></li>
<li><strong>-Xmn</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Legt f&uuml;r die Anfangsgr&ouml;&szlig;e und die maximale Gr&ouml;&szlig;e des neuen Freispeichers den angegebenen Wert fest, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Ist &auml;quivalent mit der Definition von <strong>-Xmns</strong> und <strong>-Xmnx</strong>. <span><font color="red"><span id="changed">|</span>Wenn Sie <strong>-Xmns</strong> oder <strong>-Xmnx</strong> definieren, k&ouml;nnen Sie <strong>-Xmn</strong> nicht definieren. Wenn Sie versuchen, <strong>-Xmn</strong> mit Hilfe von <strong>-Xmns</strong> oder <strong>-Xmnx</strong> zu definieren, startet VM nicht, und eine Fehlermeldung wird zur&uuml;ckgegeben.</font></span> <strong>-Xmn</strong> wird standardm&auml;&szlig;ig intern ausgew&auml;hlt, je nach der Funktionalit&auml;t Ihres Systems. Mit der Option <strong>-verbose:sizes</strong> k&ouml;nnen Sie die Werte ermitteln, die JVM zurzeit verwendet.</li></ul></li>
<li><strong>-Xmns</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Legt f&uuml;r die Anfangsgr&ouml;&szlig;e des neuen Freispeichers den angegebenen Wert fest, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Diese Option wird standardm&auml;&szlig;ig intern ausgew&auml;hlt, je nach der Funktionalit&auml;t Ihres Systems. <span><font color="red"><span id="changed">|</span>Diese Option gibt eine Fehlermeldung zur&uuml;ck, wenn Sie sie mit der Option <strong>-Xmn</strong> verwenden.</font></span></li></ul></li>
<li><strong>-Xmnx</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Legt f&uuml;r die maximale Gr&ouml;&szlig;e des neuen Freispeichers den angegebenen Wert fest, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Diese Option wird standardm&auml;&szlig;ig intern ausgew&auml;hlt, je nach der Funktionalit&auml;t Ihres Systems. <span><font color="red"><span id="changed">|</span>Diese Option gibt eine Fehlermeldung zur&uuml;ck, wenn Sie sie mit der Option <strong>-Xmn</strong> verwenden.</font></span></li></ul></li>
<li id="xmo">
<a name="xmo"></a><strong>-Xmo</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Legt f&uuml;r die Anfangsgr&ouml;&szlig;e und die maximale Gr&ouml;&szlig;e des Freispeichers f&uuml;r alte Objekte den angegebenen Wert fest, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Ist &auml;quivalent zur Definition von <strong>-Xmos</strong> und <strong>-Xmox</strong>. <span><font color="red"><span id="changed">|</span>Wenn Sie <strong>-Xmos</strong> oder <strong>-Xmox</strong> definieren, k&ouml;nnen Sie <strong>-Xmo</strong> nicht definieren. Wenn Sie versuchen, <strong>-Xmo</strong> mit Hilfe von <strong>-Xmos</strong> oder <strong>-Xmox</strong> zu definieren, startet VM nicht, und eine Fehlermeldung wird zur&uuml;ckgegeben. </font></span> Standardm&auml;&szlig;ig wird <strong>-Xmo</strong> intern ausgew&auml;hlt, je nach der Funktionalit&auml;t Ihres Systems. Mit der Option <strong>-verbose:sizes</strong> k&ouml;nnen Sie die Werte ermitteln, die JVM zurzeit verwendet.</li></ul></li>
<li><strong>-Xmos</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Legt f&uuml;r die Anfangsgr&ouml;&szlig;e des Freispeichers f&uuml;r alte Objekte den angegebenen Wert fest, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Diese Option wird standardm&auml;&szlig;ig intern ausgew&auml;hlt, je nach der Funktionalit&auml;t Ihres Systems. <span><font color="red"><span id="changed">|</span>Diese Option gibt eine Fehlermeldung zur&uuml;ck, wenn Sie sie zusammen mit der Option <strong>-Xmo</strong> verwenden.</font></span></li></ul></li>
<li><strong>-Xmox</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Legt f&uuml;r die maximale Gr&ouml;&szlig;e des Freispeichers f&uuml;r alte Objekte den angegebenen Wert fest, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Diese Option wird standardm&auml;&szlig;ig intern ausgew&auml;hlt, je nach der Funktionalit&auml;t Ihres Systems. <span><font color="red"><span id="changed">|</span>Diese Option gibt eine Fehlermeldung zur&uuml;ck, wenn Sie sie zusammen mit der Option <strong>-Xmo</strong> verwenden.</font></span></li></ul></li>
<li><strong>-Xmoi</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert den Wert, um den der Java-Freispeicher stufenweise erweitert wird, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Wenn der Wert null betr&auml;gt, ist keine Erweiterung zul&auml;ssig. Die Gr&ouml;&szlig;e der einzelnen Stufen wird standardm&auml;&szlig;ig auf der Grundlage der Erweiterungsgr&ouml;&szlig;e, <strong>-Xmine</strong> und <strong>-Xminf</strong> berechnet.</li></ul></li>
<li><strong>-Xmr</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert die Gr&ouml;&szlig;e f&uuml;r die "gemerkte Gruppe" der Garbage-Collection, wenn <strong>-Xgcpolicy:gencon</strong> verwendet wird. Es handelt sich um eine Liste mit Objekten im alten Freispeicher, die auf Objekte im neuen Freispeicher verweisen.
Die Standardeinstellung f&uuml;r diese Option lautet 16 Kilobyte.</li></ul></li>
<li id="xms">
<a name="xms"></a><strong>-Xms</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert die Anfangsgr&ouml;&szlig;e des Java-Freispeichers.  Sie k&ouml;nnen auch <a href="#xmo"><strong>-Xmo</strong></a> verwenden. Der Standardwert wird intern entsprechend der Funktionalit&auml;t Ihres Systems definiert.</li></ul></li>
<li><strong>-Xmso</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert die C-Stack-Gr&ouml;&szlig;e f&uuml;r verzweigte Java-Threads. Die Standardeinstellung f&uuml;r diese Option lautet 32 Kilobyte auf 32-Bit-Plattformen und 256 Kilobyte auf 64-Bit-Plattformen.</li></ul></li>
<li><strong>-Xmx</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert die maximale Gr&ouml;&szlig;e des Java-Freispeichers. Diese Option wird standardm&auml;&szlig;ig intern entsprechend der Funktionalit&auml;t Ihres Systems definiert.</li></ul></li>
<li id="noclassgc">
<a name="noclassgc"></a><strong>-Xnoclassgc</strong>
<ul class="simple">
<li>Inaktiviert die Garbage-Collection f&uuml;r Klassen. Diese Option inaktiviert die Garbage-Collection f&uuml;r Speicher, der Java-Klassen zugeordnet ist, die nicht mehr von JVM verwendet werden sollen. Das Standardverhalten ist <strong>-Xclassgc</strong>.</li></ul></li>
<li id="nocompactgc">
<a name="nocompactgc"></a><strong>-Xnocompactgc</strong>
<ul class="simple">
<li>Inaktiviert die Komprimierung f&uuml;r den Garbage-Collector. Siehe auch <a href="#compactgc"><strong>-Xcompactgc</strong></a>. Die Komprimierung ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="nocompactexplicitgc">
<a name="nocompactexplicitgc"></a><strong>-Xnocompactexplicitgc</strong>
<ul class="simple">
<li>Inaktiviert die Komprimierung beim Aufruf an <tt class="xph">System.gc()</tt>. Siehe auch <a href="#compactexplicitgc"><strong>-Xcompactexplicitgc</strong></a>. Die Komprimierung ist bei Aufrufen an <tt class="xph">System.gc()</tt> standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="xnojit">
<a name="xnojit"></a><strong>-Xnojit</strong>
<ul class="simple">
<li>Inaktiviert den JIT-Compiler. Siehe auch <a href="#xjit"><strong>-Xjit</strong></a>. Der JIT-Compiler ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="xnolinenumbers">
<a name="xnolinenumbers"></a><strong>-Xnolinenumbers</strong>
<ul class="simple">
<li>Inaktiviert die Zeilennummern f&uuml;r das Debugging. Siehe auch <a href="#xlinenumbers"><strong>-Xlinenumbers</strong></a>. Zeilennummern sind standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="noloa">
<a name="noloa"></a><font color="red"><span id="changed">|</span><strong>-Xnoloa</strong> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Diese Option verhindert die Zuordnung eines LOAs (Large Object Area). Alle Objekte werden im SOA zugeordnet. Standardm&auml;&szlig;ig ist der LOA f&uuml;r alle GC-Richtlinien aktiviert, mit Ausnahme des Speicherteilbereichs, in dem der LOA nicht verf&uuml;gbar ist. Siehe auch <a href="#loa"><strong>-Xloa</strong></a>.</li></ul></font></li>
<li id="nopartialcompactgc">
<a name="nopartialcompactgc"></a><strong>-Xnopartialcompactgc</strong>
<ul class="simple">
<li>Inaktiviert die schrittweise ausgef&uuml;hrte Komprimierung. Siehe auch <a href="#partialcompactgc"><strong>-Xpartialcompactgc</strong></a>. Diese Option ist standardm&auml;&szlig;ig nicht definiert, somit werden alle Komprimierungen vollst&auml;ndig ausgef&uuml;hrt.</li></ul></li>
<li id="nosigcatch">
<a name="nosigcatch"></a><strong>-Xnosigcatch</strong>
<ul class="simple">
<li>Inaktiviert den JVM-Signalverarbeitungscode. Siehe auch <a href="#sigcatch"><strong>-Xsigcatch</strong></a>. Die Signalverarbeitung ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="nosigchain">
<a name="nosigchain"></a><strong>-Xnosigchain</strong>
<ul class="simple">
<li>Inaktiviert die Verkettung von Signalroutinen. Siehe auch <a href="#sigchain"><strong>-Xsigchain</strong></a>. Die Verkettung von Signalroutinen ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li><strong>-Xoptionsfile</strong>=&lt;<em>Datei</em>>
<ul class="simple">
<li>Gibt eine Datei an, die JVM-Optionen und die zugeh&ouml;rigen Definitionen enth&auml;lt. Standardm&auml;&szlig;ig wird keine Optionsdatei verwendet.</li></ul></li>
<li><strong>-Xoss</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert die Java-Stackgr&ouml;&szlig;e und die C-Stackgr&ouml;&szlig;e f&uuml;r einen beliebigen Thread. Diese Option wird aus Kompatibilit&auml;tsgr&uuml;nden zur Verf&uuml;gung gestellt und entspricht der Einstellung von <strong>-Xss</strong> und von <strong>-Xmso</strong> auf den angegebenen Wert.</li></ul></li>
<li id="partialcompactgc">
<a name="partialcompactgc"></a><strong>-Xpartialcompactgc</strong>
<ul class="simple">
<li>Inaktiviert die Teilkomprimierung. Siehe auch <a href="#nopartialcompactgc"><strong>-Xnopartialcompactgc</strong></a>.</li></ul></li>
<li><strong>-Xquickstart</strong>
<ul class="simple">
<li>Verbessert die Startzeit durch das Verz&ouml;gern der JIT-Kompilierung und der Optimierungen. Diese Option ist standardm&auml;&szlig;ig inaktiviert und die JIT-Kompilierung wird nicht verz&ouml;gert.</li></ul></li>
<li><strong>-Xrdbginfo:</strong><em>&lt;Host></em>:<em>&lt;Port></em>
<ul class="simple">
<li>L&auml;dt und &uuml;bergibt Optionen an den fernen Debuginformationsserver. Der ferne Debuginformationsserver ist standardm&auml;&szlig;ig inaktiviert.</li></ul></li>
<li><strong>-Xrs</strong>
<ul class="simple">
<li>Reduziert die Verwendung von Betriebssystemsignalen. JVM nutzt die Betriebssystemsignale standardm&auml;&szlig;ig vollst&auml;ndig. Siehe <a href="#sighand">Von JVM verwendete Signale</a>.</li></ul></li>
<li><strong>-Xrun</strong><em>&lt;Bibliotheksname></em>[:Optionen]
<ul class="simple">
<li>L&auml;dt Bibliotheken mit Hilfeprogrammen. Geben Sie zum Laden mehrerer Bibliotheken diese Option mehrmals in der Befehlszeile an. Beispiele f&uuml;r diese Bibliotheken:
<ul>
<li><strong>-Xrunhprof</strong>[:help] | [:&lt;<em>Option</em>>=&lt;<em>Wert</em>>, ...]
<ul class="simple">
<li>Erstellt Profile f&uuml;r Freispeicher, CPU oder &Uuml;berwachungsprogramme. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul></li>
<li id="runjdwp">
<a name="runjdwp"></a><strong>-Xrunjdwp</strong>[:help] | [:&lt;<em>Option</em>>=&lt;<em>Wert</em>>, ...]
<ul class="simple">
<li>L&auml;dt Debugbibliotheken, damit das ferne Debugging von Anwendungen unterst&uuml;tzt wird.
Ist identisch mit <a href="#xdbg"><strong>-Xdbg</strong></a>. Weitere Informationen finden Sie im Abschnitt <a href="#debugger">Debugging in Java-Anwendungen</a>.</li></ul></li>
<li><a name="xrunjnichk"></a><strong id="xrunjnichk">-Xrunjnichk</strong>[:help] | [:&lt;<em>Option</em>>=&lt;<em>Wert</em>>, ...]
<ul class="simple">
<li>F&uuml;hrt zus&auml;tzliche Pr&uuml;fungen f&uuml;r JNI-Funktionen aus, um Fehler in den nativen Programmen nachzuvollziehen, die &uuml;ber JNI auf JVM zugreifen. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</li></ul></li></ul></li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xscmx</strong>&lt;<em>Gr&ouml;&szlig;e</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Weitere Informationen zu <strong>-Xscmx</strong> finden Sie im Abschnitt <a href="#sharedclassesxoptions">Verwenden von Befehlszeilenoptionen f&uuml;r die gemeinsame Nutzung von Klassen</a>.</li></ul></font></li>
<li><font color="red"><span id="changed">|</span><strong>-Xshareclasses:</strong>&lt;<em>Unteroptionen</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Weitere Informationen zu den <strong>-Xshareclasses</strong>-Unteroptionen finden Sie im Abschnitt <a href="#sharedclassesxoptions">Verwenden von Befehlszeilenoptionen f&uuml;r die gemeinsame Nutzung von Klassen</a>.</li></ul></font></li>
<li id="sigcatch">
<a name="sigcatch"></a><strong>-Xsigcatch</strong>
<ul class="simple">
<li>Aktiviert den VM-Signalverarbeitungscode. Siehe auch <a href="#nosigcatch"><strong>-Xnosigcatch</strong></a>. Die Signalverarbeitung ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li id="sigchain">
<a name="sigchain"></a><strong>-Xsigchain</strong>
<ul class="simple">
<li>Aktiviert die Verkettung von Signalroutinen. Siehe auch <a href="#nosigchain"><strong>-Xnosigchain</strong></a>. Die Verkettung von Signalroutinen ist standardm&auml;&szlig;ig aktiviert.</li></ul></li>
<li><font color="red"><span id="changed">|</span><strong>-Xsoftrefthreshold</strong>&lt;<em>Anzahl</em>> 
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Definiert die Anzahl GCs. Anschlie&szlig;end wird ein indirekter Verweis gel&ouml;scht, wenn das zugeh&ouml;rige Verweisobjekt nicht markiert wurde. Die Standardeinstellung lautet 3. Dies bedeutet, dass der indirekte Verweis bei der dritten GC, bei der das Verweisobjekt nicht markiert ist, gel&ouml;scht wird.</li></ul></font></li>
<li><strong>-Xss</strong>&lt;<em>Gr&ouml;&szlig;e</em>>
<ul class="simple">
<li>Definiert die Maximalgr&ouml;&szlig;e f&uuml;r den Java-Stack f&uuml;r einen beliebigen Thread. Die Standardeinstellung dieser Option lautet 256 KB. </li></ul></li>
<li><strong>-Xthr:</strong>&lt;<em>Optionen</em>>
<ul class="simple">
<li>Definiert die Threading-Optionen.</li></ul></li>
<li><strong>-Xverbosegclog</strong>:&lt;<em>Dateipfad</em>>&lt;<em>Dateiname</em>>[X, Y]
<ul class="simple">
<li>Die verboseGC-Ausgabe wird in die angegebene Datei geschrieben. Wenn die Datei bereits vorhanden ist, wird sie &uuml;berschrieben. Ist dies nicht der Fall, wird die Ausgabe an stderr umgeleitet, falls
eine vorhandene Datei nicht ge&ouml;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 X Dateien umgeleitet, von denen jede Y gc-Zyklen mit verboseGC-Ausgaben enth&auml;lt. Diese Dateien weisen folgendes Format auf:
<em>Dateiname1, Dateiname2</em> usw. Die verboseGC-Protokollierung wird nicht standardm&auml;&szlig;ig durchgef&uuml;hrt.</li></ul></li>
<li><strong>-Xverify</strong>
<ul class="simple">
<li>Aktiviert die genaue Pr&uuml;fung aller geladenen Klassen. Die genaue Pr&uuml;fung von Klassen ist standardm&auml;&szlig;ig inaktiviert.</li></ul></li>
<li><strong>-Xverify:none</strong>
<ul class="simple">
<li>Inaktiviert die genaue Pr&uuml;fung von Klassen. Die genaue Pr&uuml;fung von Klassen ist standardm&auml;&szlig;ig inaktiviert.</li></ul></li></ul>
<a name="wq32"></a>
<h2 id="wq32"><a href="#ToC_27">Abrufen der IBM Build- und Versionsnummer</a></h2>
<p>Geben Sie den folgenden Befehl an einer Eingabeaufforderung
ein, um die IBM Build- und Versionsnummer abzurufen:</p>
<pre class="xmp">java -version</pre>
<a name="wq33"></a>
<h2 id="wq33"><a href="#ToC_28">Globalisierung des Befehls 'java'</a></h2>
<p>Mit dem Befehl <strong>java</strong> und mit anderen Java-Startbefehlen (wie beispielsweise <strong>javaw</strong>) kann ein Klassenname mit beliebigen Zeichen angegeben werden, die im Zeichensatz der aktuellen L&auml;ndereinstellung enthalten sind. </p>
<p>Mit Hilfe von Java-Escapezeichenfolgen k&ouml;nnen Sie auch alle im Klassennamen und in den Argumenten enthaltenen Unicode-Zeichen angeben. F&uuml;r diesen Vorgang m&uuml;ssen Sie die Option <strong>-Xargencoding</strong> angeben. 
Verwenden Sie zum Angeben eines Unicode-Zeichens Escapezeichenfolgen
im Format <tt>\u####</tt>. Dabei ist # eine
Hexadezimalziffer (0-9, A-F). </p>
<p>Wenn Sie angeben m&ouml;chten, dass der Klassenname und die Befehlsargumente im UTF8-Code verschl&uuml;sselt sind, verwenden Sie <strong>-Xargencoding:utf8</strong> oder <strong>-Xargencoding:latin</strong> f&uuml;r die ISO8859_1-Verschl&uuml;sselung.</p>
<p>Wenn Sie beispielsweise eine Klasse mit dem Namen "HelloWorld" angeben m&ouml;chten und f&uuml;r die beiden Gro&szlig;buchstaben die Unicode-Verschl&uuml;sselung verwenden, m&uuml;ssen Sie den folgenden Befehl ausf&uuml;hren:</p>
<pre class="xmp">java -Xargencoding '\u0048ello\u0057orld'</pre>
<p>Mit den Befehlen <strong>java</strong> und <strong>javaw</strong> werden &uuml;bersetzte Ausgabenachrichten angezeigt. Diese Nachrichten unterscheiden sich je nach der L&auml;ndereinstellung, in der Java ausgef&uuml;hrt wird. Die ausf&uuml;hrlichen Fehlerbeschreibungen und andere Debuginformationen, die vom Befehl <strong>java</strong> zur&uuml;ckgegeben werden, werden in Englisch angezeigt.</p>
<a name="wq34"></a>
<h2 id="wq34"><a href="#ToC_29">Automatisches Ausf&uuml;hren einer Java-Datei</a></h2>
<p>Klicken Sie zum Definieren einer Java-Klasse oder JAR-Datei, damit diese
automatisch &uuml;ber die Datei ausgef&uuml;hrt wird, im Windows-Explorer
<strong>Extras->Ordneroptionen->Dateitypen</strong> an. Sie k&ouml;nnen auch Folgendes an einer Eingabeaufforderung eingeben:</p>
<pre class="xmp">assoc .class=javaclass 
ftype javaclass=C:\Programme\IBM\Java50\jre\bin\java.exe %l %*</pre>
<a name="wq35"></a>
<div class="notelisttitle" id="wq35">Anmerkungen:</div>
<ol type="1">
<li>Bei <tt>%l</tt> handelt es sich um den Buchstaben l und nicht die Zahl 1.</li>
<li>Wenn Java in einem anderen Verzeichnis als C:\Programme\IBM\Java50\ installiert wurde, m&uuml;ssen Sie das
entsprechende Verzeichnis angeben.</li>
</ol>
<a name="jaws"></a>
<h2 id="jaws"><a href="#ToC_30">Ausf&uuml;hren von Java-Anwendungen mit Technologien f&uuml;r behindertengerechte Bedienung</a></h2>
<p>Sun stellt das Produkt Java Access Bridge bereit, mit dem native Windows-Technologien f&uuml;r behindertengerechte Bedienung, z.&nbsp;B.
Sprachausgabesysteme (Screen Reader), auf die Java Accessibility-Unterst&uuml;tzung in einer Java-Anwendung zugreifen k&ouml;nnen. Diese nativen Windows-Technologien f&uuml;r behindertengerechte Bedienung m&uuml;ssen Aufrufe an Java Access Bridge unterst&uuml;tzen.</p>
<p>Java Access Bridge ist bei Sun erh&auml;ltlich und umfasst ein
Installationsprogramm, das die folgenden f&uuml;nf Dateien in die richtigen
Verzeichnisse kopiert: access-bridge.jar, jaccess.jar, accessibility.properties,
JavaAccessBridge.dll und WindowsAccessBridge.dll.
IBM stellt eine Kopie der Datei jaccess.jar im entsprechenden Verzeichnis f&uuml;r die Verwendung mit JawBridge zur Verf&uuml;gung.</p>
<p>Wenn IBM Accessibility Bridge (JawBridge), das die Verwendung von
Windows 2000 Magnifier zusammen mit Swing-Anwendungen erm&ouml;glicht, bereits aktiviert ist, und wenn Sie
JawBridge und Java Access Bridge gleichzeitig aktivieren wollen, editieren Sie die folgende Zeile in der Datei
accessibility.properties:</p>
<p></p>
<pre class="xmp">assistive_technologies=com.sun.java.accessibility.AccessBridge, 
JawBridge</pre>
<p>Sie k&ouml;nnen die beiden Bridges inaktivieren, indem Sie am Anfang der Zeile ein Nummernzeichen <tt>#</tt> eingeben. Auf der folgenden Website finden Sie Informationen zum Herunterladen der
Java Access Bridge: </p>
<p><a href="http://java.sun.com/products/jfc/accessibility.html">http://java.sun.com/products/jfc/accessibility.html</a> </p>
<a name="jit"></a>
<h2 id="jit"><a href="#ToC_31">JIT-Compiler (Just-In-Time)</a></h2>
<p>Der IBM JIT-Compiler (Just-In-Time) generiert dynamisch Maschinencode f&uuml;r h&auml;ufig
verwendete Bytecodesequenzen in Java-Anwendungen und Java-Applets, w&auml;hrend diese ausgef&uuml;hrt werden. <span><font color="red"><span id="changed">|</span>Der JIT-Compiler Version 5.0 bietet neue Optimierungen als Ergebnis der Compiler-Forschung, verbessert Optimierungen, die in vorherigen Versionen des JIT-Compilers implementiert wurden, und bietet bessere Hardware-Nutzung.</font></span></p>
<p>IBM SDK und Runtime Environment enthalten den JIT-Compiler, der standardm&auml;&szlig;ig in Benutzeranwendungen und in SDK-Tools aktiviert ist. In der Regel besteht keine Notwendigkeit, den JIT-Compiler explizit aufzurufen. Die Kompilierung des Java-Bytecodes in Maschinencode erfolgt transparent. Wenn jedoch ein Problem mit Runtime Environment bei der Ausf&uuml;hrung einer Java-Anwendung oder eines Java-Applets auftritt, k&ouml;nnen Sie den JIT-Compiler inaktivieren, um das Problem leichter eingrenzen zu k&ouml;nnen. Der JIT-Compiler sollte nur vor&uuml;bergehend inaktiviert werden, da er f&uuml;r eine ad&auml;quate Leistung erforderlich ist.</p>
<a name="disjit"></a>
<h3 id="disjit"><a href="#ToC_32">Inaktivieren des JIT-Compilers</a></h3>
<p>Zum Inaktivieren des JIT-Compilers haben Sie drei M&ouml;glichkeiten: </p>
<ul>
<li>Setzen Sie die Umgebungsvariable <strong>JAVA_COMPILER</strong> auf "NONE"
oder auf eine leere Zeichenfolge, bevor Sie die Java-Anwendung ausf&uuml;hren. 
<p>Geben Sie an der Eingabeaufforderung, an der die Anwendung ausgef&uuml;hrt wird, Folgendes ein: </p>
<pre class="xmp">set JAVA_COMPILER=NONE</pre><p class="indatacontent">Sie k&ouml;nnen <strong>JAVA_COMPILER</strong> auch permanent &uuml;ber die grafische Benutzerschnittstelle festlegen. &Ouml;ffnen Sie <strong>Systemsteuerung</strong>, w&auml;hlen Sie <strong>System</strong> aus, zeigen Sie die Indexzunge <strong>Erweitert</strong> an, und w&auml;hlen Sie <strong>Umgebungsvariablen</strong> aus.</p></li>
<li>Verwenden Sie die Option <strong>-D</strong> in der JVM-Befehlszeile, um das Merkmal <strong>java.compiler</strong> auf "NONE" oder auf eine leere Zeichenfolge zu setzen: 
<pre class="xmp">java -Djava.compiler=NONE MeineAnwendung</pre></li>
<li>Verwenden Sie die Option <strong>-Xint</strong> in der JVM-Befehlszeile. Beispiel:
<pre class="xmp">java -Xint MeineAnwendung</pre></li></ul>
<p>Beide Befehlszeilenoptionen &uuml;berschreiben die Umgebungsvariable <strong>JAVA_COMPILER</strong>. </p>
<a name="enajit"></a>
<h3 id="enajit"><a href="#ToC_33">Aktivieren des JIT-Compilers</a></h3>
<p>Setzen Sie zum expliziten Aktivieren des JIT-Compilers die Umgebungsvariable <strong>JAVA_COMPILER</strong> auf "jitc", oder verwenden Sie die Option <strong>-D</strong>, um das Merkmal <strong>java.compiler</strong> auf "jitc" zu setzen. Sie k&ouml;nnen in der JVM-Befehlszeile auch die Option <strong>-Xjit</strong> verwenden (und die Option <strong>-Xint</strong> weglassen), um den JIT-Compiler zu aktivieren.</p>
<p>Wenn die Umgebungsvariable <strong>JAVA_COMPILER</strong> oder das Merkmal <strong>java.compiler</strong> auf "" (leere Zeichenfolge) gesetzt ist, bleibt der JIT-Compiler inaktiviert. Geben Sie <tt class="xph">set JAVA_COMPILER=</tt> an der Eingabeaufforderung ein, um die Einstellung der Umgebungsvariablen ordnungsgem&auml;&szlig; aufzuheben. </p>
<a name="detjit"></a>
<h3 id="detjit"><a href="#ToC_34">Pr&uuml;fen, ob der JIT-Compiler aktiviert ist</a></h3>
<p>Wenn Sie pr&uuml;fen wollen, ob der JIT-Compiler aktiviert ist, geben Sie an der Eingabeaufforderung Folgendes ein: </p>
<pre class="xmp">java -version</pre>
<p>Wenn der JIT-Compiler derzeit nicht verwendet wird, wird folgende Nachricht angezeigt: </p>
<pre class="xmp">(JIT disabled)</pre>
<p>Wenn der JIT-Compiler verwendet wird, wird folgende Nachricht angezeigt:</p>
<pre class="xmp">(JIT enabled)</pre><p class="indatacontent"> </p>
<p>Weitere Informationen zum JIT-Compiler finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="garbage"></a>
<h2 id="garbage"><a href="#ToC_35">Angeben der Garbage-Collection-Richtlinie</a></h2>
<p>Der Garbage-Collector verwaltet den von Java und von den
Anwendungen verwendeten Speicher, die mit VM ausgef&uuml;hrt werden.</p>
<p>Sobald der Garbage-Collector eine Speicheranforderung empf&auml;ngt, wird hierf&uuml;r nicht verwendeter Freispeicher vorgesehen. Dies wird auch als "Zuordnung" bezeichnet. Der Garbage-Collector pr&uuml;ft au&szlig;erdem, ob Speicherbereiche vorhanden sind, auf die nicht mehr verwiesen wird, und gibt sie zur erneuten Verwendung frei. Dies wird auch als "Erfassung" bezeichnet.</p>
<p>Die Erfassungsphase kann durch einen Fehler bei der Hauptspeicherzuordnung ausgel&ouml;st werden, der dann auftritt, wenn f&uuml;r
Speicheranforderungen kein weiterer Speicherbereich mehr vorhanden
ist. Sie kann aber auch &uuml;ber einen expliziten System.gc()-Aufruf ausgel&ouml;st werden.</p>
<p>Die Garbage-Collection kann erhebliche Auswirkungen auf die
Anwendungsleistung haben. IBM VM stellt daher
verschiedene Methoden zur Verf&uuml;gung, &uuml;ber die die Ausf&uuml;hrung
der Garbage-Collection optimiert werden kann. Dadurch verringern
sich die Auswirkungen auf Ihre Anwendungen.</p>
<p>Ausf&uuml;hrliche Informationen zur Garbage-Collection finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="wq37"></a>
<h3 id="wq37"><a href="#ToC_36">Optionen der Garbage-Collection</a></h3>
<p>Die Option <strong>-Xgcpolicy</strong> gibt die Garbage-Collection-Richtlinie an.</p>
<p><strong>-Xgcpolicy</strong> nimmt die Werte <strong>optthruput</strong> (Standardwert und empfohlener Wert), <strong>optavgpause</strong> oder <strong>gencon</strong> 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.</p>
<p>Das Format der Option und der zugeh&ouml;rigen Werte lautet wie folgt: </p><blockquote><strong>-Xgcpolicy:optthruput</strong></blockquote>
<p></p><blockquote><strong>-Xgcpolicy:optavgpause</strong></blockquote>
<p></p><blockquote><strong>-Xgcpolicy:gencon</strong></blockquote>
<a name="wq38"></a>
<h3 id="wq38"><a href="#ToC_37">Pausezeit</a></h3>
<p>Wenn eine Anwendung wegen des verf&uuml;gbaren Freispeichers nicht
sofort ein Objekt erstellen kann, ist der Garbage-Collector f&uuml;r die
Erkennung von Objekten ohne Verweis (Garbage) zust&auml;ndig sowie f&uuml;r
deren L&ouml;schung und f&uuml;r die Wiederherstellung eines
Freispeicherstatus, mit dem sofortige und nachfolgende
Zuordnungsanforderungen schnell beantwortet werden k&ouml;nnen. Solche Garbage-Collection-Zyklen ergeben gelegentliche unerwartete Pausen bei der Ausf&uuml;hrung des Anwendungscodes. 
Wenn sich die Gr&ouml;&szlig;e und Komplexit&auml;t der Anwendungen erh&ouml;ht und wenn
die Freispeicher entsprechend umfangreicher werden, tendiert diese
Pausezeit der Garbage-Collection dazu, gr&ouml;&szlig;er zu werden. Der Standardwert <strong>-Xgcpolicy:optthruput</strong> f&uuml;r die
Garbage-Collection bietet Anwendungen einen sehr hohen Durchsatz, verursacht jedoch
gelegentliche Pausen. Diese Pausen k&ouml;nnen wenige Millisekunden bis zu mehreren Sekunden dauern,
je nachdem, wie gro&szlig; der Freispeicher und das Garbagevolumen ist. </p>
<a name="pausetimereduction"></a>
<h3 id="pausetimereduction"><a href="#ToC_38">Verringerung der Pausezeit</a></h3>
<p>JVM verwendet zwei Verfahren zur Verringerung von Pausezeiten:</p>
<ul>
<li>Gleichzeitig ablaufende Garbage-Collection</li>
<li>Garbage-Collection nach Objektalter</li></ul>
<p>Die Befehlszeilenoption <strong>-Xgcpolicy:optavgpause</strong> fordert die Verwendung der gleichzeitig ablaufenden Garbage-Collection an, um die Pausezeit der Garbage-Collection (GC) erheblich zu verringern. Die gleichzeitig ablaufende GC verringert die Pausezeit, indem die Ausf&uuml;hrung einiger GC-Aktivit&auml;ten zur gleichen Zeit wie die normale Programmausf&uuml;hrung erfolgt. Dabei wird die durch die Erfassung des Freispeichers verursachte Unterbrechung minimiert. Die Option <strong>-Xgcpolicy:optavgpause</strong> begrenzt au&szlig;erdem den Effekt eines h&ouml;heren Freispeicherumfangs w&auml;hrend der Garbage-Collection-Pause. Die Option <strong>-Xgcpolicy:optavgpause</strong> ist f&uuml;r Konfigurationen mit gro&szlig;en Freispeichern am n&uuml;tzlichsten. Die Verringerung der Pausezeit hat m&ouml;glicherweise einen reduzierten Anwendungsdurchsatz zur Folge.</p>
<p>W&auml;hrend der gleichzeitig ablaufenden Garbage-Collection wird viel Zeit f&uuml;r die Identifizierung von Objekten mit einer relativ langen Lebensdauer verwendet, die nicht erfasst werden k&ouml;nnen. Wenn sich die GC nur auf Objekte konzentriert, die h&ouml;chstwahrscheinlich wiederverwendbar sind, k&ouml;nnen Sie die Pausezeit f&uuml;r einige Anwendungen weiter verringern. Bei der GC nach Objektalter wird dies erreicht, indem der Freispeicher in zwei "Generationen" aufgeteilt wird, n&auml;mlich in die Bereiche "Junge Objekte" und "Alte Objekte". Die Objekte werden abh&auml;ngig von ihrem Alter in einen dieser Bereiche gestellt. Der Bereich "Junge Objekte" ist der kleinere der beiden Bereiche und enth&auml;lt j&uuml;ngere Objekte. Der Bereich "Alte Objekte" ist gr&ouml;&szlig;er und enth&auml;lt &auml;ltere Objekte. Objekte werden zuerst dem Bereich "Junge Objekte" zugeordnet. Wenn sie lang genug &uuml;berleben, werden Sie schlie&szlig;lich in den Bereich "Alte Objekte" umgestuft. </p>
<p>Die GC nach Objektalter basiert darauf, dass die meisten Objekte nur eine kurze Lebensdauer haben. Die GC nach Objektalter verringert Pausezeiten, indem sie sich auf das Zur&uuml;ckgewinnen von Speicher im Bereich "Junge Objekte" konzentriert, da dieser Bereich &uuml;ber den meisten wiederverwendbaren Speicherplatz verf&uuml;gt. Im Gegensatz zu gelegentlichen aber &uuml;berm&auml;&szlig;ig langen Pausezeiten beim Erfassen des gesamten Freispeichers wird der Bereich "Junge Objekte" regelm&auml;&szlig;iger erfasst. Au&szlig;erdem sind Pausezeiten verh&auml;ltnism&auml;&szlig;ig kurz, wenn der Bereich klein genug ist. Die GC nach Objektalter hat jedoch den Nachteil, dass der Bereich "Alte Objekte" mit der Zeit voll wird, wenn zu viele Objekte eine zu lange Lebensdauer haben. Verwenden Sie eine Kombination aus der gleichzeitig ablaufenden GC und der GC nach Objektalter, um in dieser Situation die Pausezeit zu minimieren. Die Option <strong>-Xgcpolicy:gencon</strong> fordert die kombinierte Verwendung der gleichzeitig ablaufenden GC und der GC nach Objektalter an, um die GC-Pausezeit zu verringern.</p>
<a name="wq39"></a>
<h3 id="wq39"><a href="#ToC_39">Umgebungen mit sehr vollen Freispeichern</a></h3>
<p>Wenn der Java-Freispeicher nahezu voll ist und sehr wenig
zur&uuml;ckzufordernder Garbagespeicher vorhanden ist, werden
Anforderungen f&uuml;r neue Objekte m&ouml;glicherweise nicht schnell
beantwortet, da kein Speicherbereich sofort verf&uuml;gbar ist. Bei der Ausf&uuml;hrung mit nahezu vollem Freispeicher kann die Anwendungsleistung geringer werden, unabh&auml;ngig davon, welche der oben genannten Optionen Sie verwenden. Wenn weiterhin Freispeicher angefordert wird, empf&auml;ngt die Anwendung eine Ausnahmebedingung wegen ungen&uuml;gender Speicherkapazit&auml;t und JVM wird beendet, es sei denn, die Ausnahmebedingung wird abgefangen und bearbeitet. Zu diesem Zeitpunkt erstellt JVM eine Diagnosedatei mit dem Namen "javadump". In diesen Situationen sollten Sie entweder die Freispeichergr&ouml;&szlig;e mit der Option <strong>-Xmx</strong> erh&ouml;hen oder die Anzahl der verwendeten Anwendungsobjekte verringern. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<a name="wq40"></a>
<h2 id="wq40"><a href="#ToC_40">Signalverarbeitung durch JVM</a></h2>
<p>Wenn ein f&uuml;r Java Virtual Machine (JVM) wichtiges Signal gesendet wird, wird eine Signalroutine aufgerufen. Diese Signalroutine legt fest, ob das Signal f&uuml;r einen Java- oder
Nicht-Java-Thread aufgerufen wurde. </p>
<p>Wurde das Signal f&uuml;r einen Java-Thread aufgerufen, steuert JVM die Signalverarbeitung. Wenn eine Anwendungsroutine f&uuml;r dieses Signal installiert ist, und Sie die Befehlszeilenoption <strong>-Xnosigchain</strong> nicht angegeben haben, wird die Anwendungsroutine f&uuml;r dieses Signal aufgerufen, nachdem JVM die Verarbeitung abgeschlossen hat. </p>
<p>Wurde das Signal f&uuml;r einen Nicht-Java-Thread aufgerufen und wurde
zuvor mit der Anwendung, mit der JVM installiert wurde, eine
eigene Routine f&uuml;r das Signal installiert, &uuml;bernimmt diese
Signalroutine die Steuerung. Wenn das Signal jedoch von JVM oder der Java-Anwendung angefordert wird, wird es ignoriert, oder die Standardaktion wird ausgef&uuml;hrt. </p>
<p>Unter Windows gibt es eine Ausnahme f&uuml;r diese Regel: F&uuml;r ein extern generiertes Signal (z.&nbsp;B. durch Dr&uuml;cken der Taste Strg-Untbr) wird zum Ausf&uuml;hren der Signalroutine ein neuer Thread erstellt. In diesem Fall f&uuml;hrt die JVM-Signalroutine die Verarbeitung aus, und die Anwendungsroutine f&uuml;r dieses Signal wird installiert, wenn f&uuml;r dieses Signal eine Anwendungsroutine installiert ist und Sie die Befehlszeilenoption <strong>-Xnosigchain</strong> nicht angegeben haben.</p>
<p>JVM f&uuml;hrt f&uuml;r Signale bei Ausnahmebedingungen und f&uuml;r
Fehlersignale eine der folgenden Aktionen aus: </p>
<ul>
<li>Verarbeiten der Bedingung und Wiederherstellung</li>
<li>Beginnen einer Sequenz f&uuml;r einen kontrollierten Systemabschluss. Dabei werden die folgenden Aktionen ausgef&uuml;hrt: 
<ol type="1">
<li>Ausgeben eines Java-Speicherauszugs, um den JVM-Status am
Fehlerpunkt zu beschreiben</li>
<li>Aufrufen der Signalroutine Ihrer Anwendung f&uuml;r dieses Signal </li>
<li>Aufrufen eines beliebigen durch die Anwendung installierten Abbruchhooks  </li>
<li>Ausf&uuml;hren der erforderlichen Bereinigung, damit ein ordnungsgem&auml;&szlig;er Systemabschluss durchgef&uuml;hrt werden kann</li></ol></li></ul>Informationen zum Schreiben eines Startprogramms, das die oben aufgef&uuml;hrten Hooks angibt, finden Sie unter der folgenden Adresse: <a href="http://www.ibm.com/developerworks/java/library/i-signalhandling/">http://www-106.ibm.com/developerworks/java/library/i-signalhandling/</a>. Dieser Abschnitt wurde f&uuml;r Java Version 1.3.1 geschrieben, gilt jedoch auch f&uuml;r sp&auml;tere Versionen.
<p>Bei Interruptsignalen beginnt JVM ebenfalls eine Sequenz f&uuml;r einen kontrollierten Systemabschluss, der jedoch in diesem Fall wie eine normale Beendigung behandelt wird. Hierbei f&uuml;hrt JVM die folgenden Aktionen aus: </p>
<ul>
<li>Aufrufen der Signalroutine Ihrer Anwendung f&uuml;r dieses Signal </li>
<li>Ausf&uuml;hren aller Hooks f&uuml;r das Beenden der Anwendung  </li>
<li>Aufrufen eines beliebigen durch die Anwendung installierten Exit-Hooks  </li>
<li>Ausf&uuml;hren der erforderlichen JVM-Bereinigung</li></ul>
<p>Der Systemabschluss entspricht dem Systemabschluss, der &uuml;ber einen Aufruf
der Java-Methode <tt class="xph">System.exit()</tt> eingeleitet wurde. </p>
<p>Weitere von JVM verwendete Signale werden f&uuml;r die interne
Steuerung verwendet und f&uuml;hren nicht zur Beendigung von JVM. Das einzige wichtige Steuerungssignal ist
SIGBREAK, durch
das ein Java-Speicherauszug generiert wird. </p>
<a name="sighand"></a>
<h3 id="sighand"><a href="#ToC_41">Von JVM verwendete Signale</a></h3>
<p>In <a href="#sig_table">Tabelle 1</a> sind die von JVM verwendeten Signale aufgef&uuml;hrt.
Die Signale werden in der Tabelle nach Typ oder Verwendung wie folgt
zusammengefasst:</p>
<ul>
<li><strong>Ausnahmebedingungen:</strong> Das Betriebssystem setzt beim Auftreten einer schwer wiegenden Bedingung ein entsprechendes Signal zum Anzeigen einer Ausnahmebedingung ab. </li>
<li><strong>Fehler:</strong> JVM setzt ein Signal SIGABRT ab, wenn es eine Bedingung feststellt, aus der keine Wiederherstellung m&ouml;glich ist.</li>
<li><strong>Interrupts:</strong> Interruptsignale werden au&szlig;erhalb eines JVM-Prozesses asynchron abgesetzt, um einen
Systemabschluss anzufordern. </li>
<li><strong>Steuerzeichen:</strong> Hierbei handelt es sich um andere Signale, die von JVM zu Steuerungszwecken verwendet werden. </li></ul>
<a name="sig_table"></a>
<table id="sig_table" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabelle 1. Von JVM verwendete Signale</caption>
<thead valign="bottom">
<tr>
<th id="wq42" width="25%" align="left">Signalname</th>
<th id="wq43" width="25%" align="left">Signaltyp</th>
<th id="wq44" width="25%" align="left">Beschreibung</th>
<th id="wq45" width="25%" align="left">Inaktiviert durch -Xrs</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq42"><strong>SIGINT</strong></td>
<td headers="wq43">Interrupt</td>
<td headers="wq44">Interaktiver Abruf (Strg-C). JVM wird normal beendet.</td>
<td align="center" headers="wq45">Ja</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGTERM</strong></td>
<td headers="wq43">Interrupt</td>
<td headers="wq44">Beendigungsanforderung. JVM wird normal beendet.</td>
<td align="center" headers="wq45">Ja</td>
</tr>
<tr>
<td headers="wq42"><strong>SIGBREAK</strong></td>
<td headers="wq43">Steuerzeichen</td>
<td headers="wq44">Ein Unterbrechungssignal von einem Terminal. JVM
verwendet dieses Signal zum Ausf&uuml;hren von Java-Speicherausz&uuml;gen.</td>
<td align="center" headers="wq45">Ja</td>
</tr>
</tbody>
</table><span><font color="red"><span id="changed">|</span>IBM JVM verwendet eine strukturierte Ausnahmebedingungsbehandlung und die API SetConsoleCtrlHandler(). Diese werden mit <strong>-Xrs</strong> inaktiviert. <strong>-Xnosigchain</strong> wird unter Windows ingoriert.</font></span>
<p>Mit Hilfe der Option <strong>-Xrs</strong> (Reduzierung der Verwendung von Signalen) k&ouml;nnen Sie verhindern, dass JVM die meisten Signale verarbeitet. Weitere Informationen hierzu finden Sie auf der Sun-Website zum
Startprogramm f&uuml;r Java-Anwendungen unter
<a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html">http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html</a>.</p>
<p>Die Signale <tt class="xph">2 (SIGINT)</tt> und <tt class="xph">15 (SIGTERM)</tt> f&uuml;r JVM-Threads f&uuml;hren zur Beendigung von JVM. Daher sollte eine Anwendungssignalroutine bei diesen Signalen keine Wiederherstellung versuchen, es sei denn, JVM wird nicht mehr ben&ouml;tigt.</p>
<a name="wq46"></a>
<h3 id="wq46"><a href="#ToC_42">Verbinden eines nativen Codetreibers mit
der Signalverkettungsbibliothek</a></h3>
<p>Runtime Environment enth&auml;lt eine Signalverkettungsfunktion. Die Signalverkettung erm&ouml;glicht eine effizientere Interaktion von JVM
mit nativem Code, der eigene Signalroutinen installiert. </p>
<p>Mit der Signalverkettungsfunktion kann eine Anwendung mit der gemeinsam benutzten Bibliothek jsig.dll verbunden werden und diese vor msvcrt.dll laden. Mit Hilfe der Bibliothek jsig.dll wird sichergestellt, dass
<tt class="xph">signal()</tt>-Aufrufe abgefangen werden, so dass die
JVM-Signalroutinen nicht durch die zugeh&ouml;rigen Routinen ersetzt
werden. Stattdessen werden die neuen Signalroutinen durch diese Aufrufe gesichert oder nach den durch JVM installierten Signalroutinen hinzugef&uuml;gt.
Wenn diese Signale zu einem sp&auml;teren Zeit gesendet werden und nicht an JVM gerichtet sind, werden die vorinstallierten Signalroutinen aufgerufen.</p>
<p>Wenn Sie jsig.dll verwenden m&ouml;chten, stellen Sie eine Verbindung von jsig.dll zu der Anwendung her, die JVM erstellt oder integriert.</p>
<a name="wq47"></a>
<h2 id="wq47"><a href="#ToC_43">Umwandeln von XML-Dokumenten</a></h2>
<p>In IBM SDK sind der XSLT4J-Prozessor und der XML4J-Parser enthalten, die der Spezifikation <a href="http://java.sun.com/xml/jaxp/">JAXP 1.3</a> entsprechen. Mit Hilfe dieser Tools
k&ouml;nnen Sie XML-Dokumente unabh&auml;ngig von einer bestimmten Implementierung zur XML-Verarbeitung
syntaktisch analysieren und umwandeln. Mit der Funktion "Factory Finders" zum Suchen nach
den Implementierungen SAXParserFactory, DocumentBuilderFactory und TransformerFactory
kann Ihre Anwendung zwischen unterschiedlichen Implementierungen umschalten, ohne
dass hierf&uuml;r Code ge&auml;ndert werden muss.</p>
<p><font color="red"><span id="changed">|</span>Die in IBM SDK enthaltene XML-Technologie &auml;hnelt Apache Xerces Java und Apache Xalan Java. Weitere Informationen finden Sie unter <a href="http://xml.apache.org/xerces2-j/">http://xml.apache.org/xerces2-j/</a> und <a href="http://xml.apache.org/xalan-j/">http://xml.apache.org/xalan-j/</a>.</font></p>
<p>Der XSLT4J-Prozessor bietet Ihnen die M&ouml;glichkeit, zwischen dem urspr&uuml;nglichen
XSLT Interpretive-Prozessor und dem neuen XSLT Compiling-Prozessor zu w&auml;hlen. Der Interpretive-Prozessor wurde speziell f&uuml;r Tools- und Debuggingumgebungen entwickelt.
Er unterst&uuml;tzt die XSLT-Erweiterungsfunktionen, die vom XSLT Compiling-Prozessor nicht unterst&uuml;tzt werden. Der XSLT Compiling-Prozessor wurde dagegen f&uuml;r hochleistungsf&auml;hige Laufzeitumgebungen
entwickelt. Er generiert aus einem XSL-Style-Sheet eine Umwandlungsroutine
(oder <em>Translet</em>). Dadurch wird die Interpretation von Style-Sheet-Anweisungen von der zugeh&ouml;rigen ausf&uuml;hrbaren Anwendung f&uuml;r XML-Daten getrennt. </p>
<p>Der XSLT Interpretive-Prozessor ist der Standardprozessor. Zur Auswahl des
XSLT Compiling-Prozessors stehen folgende M&ouml;glichkeiten zur Verf&uuml;gung: </p>
<ul>
<li>&Auml;ndern der Angaben in der Datei jaxp.properties (unter
C:\Programme\IBM\Java50\jre\lib) oder  </li>
<li>Setzen des Systemmerkmals f&uuml;r den Schl&uuml;ssel javax.xml.transform.TransformerFactory auf
org.apache.xalan.xsltc.trax.TransformerFactoryImpl</li></ul><p class="indatacontent">  </p>
<p>Zur Implementierung von Merkmalen in der Datei jaxp.properties m&uuml;ssen Sie die Datei
jaxp.properties.sample in die Datei jaxp.properties unter
C:\Programme\IBM\Java50\ kopieren. Diese Datei enth&auml;lt au&szlig;erdem ausf&uuml;hrliche Informationen zur Vorgehensweise bei der Ermittlung der Implementierungen, die f&uuml;r TransformerFactory, SAXParserFactory und DocumentBuilderFactory verwendet werden sollen.</p>
<p>Zur Verbesserung der Leistung bei der Umwandlung von StreamSource-Objekten
mit dem XSLT Compiling-Prozessor m&uuml;ssen Sie die Klasse com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager als
Provider des Services org.apache.xalan.xsltc.dom.XSLTCDTMManager angeben. F&uuml;hren Sie zur Ermittlung des Service-Providers jeden der nachfolgend aufgef&uuml;hrten Schritte
durch, bis org.apache.xalan.xsltc.dom.XSLTCDTMManager gefunden wird:</p>
<ol type="1">
<li>&Uuml;berpr&uuml;fen Sie die Einstellung f&uuml;r das Systemmerkmal org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li>
<li>&Uuml;berpr&uuml;fen Sie den Wert f&uuml;r das Systemmerkmal org.apache.xalan.xsltc.dom.XSLTCDTMManager in der
Datei C:\Programme\IBM\Java50\lib\xalan.properties.</li>
<li>&Uuml;berpr&uuml;fen Sie, ob in der Datei META-INF\services\org.apache.xalan.xsltc.dom.XSLTCDTMManager ein Klassenname
aufgef&uuml;hrt ist.</li>
<li>Verwenden Sie den Standard-Service-Provider org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li></ol><p class="indatacontent">Der XSLT Compiling-Prozessor erkennt den Service-Provider f&uuml;r den Service
org.apache.xalan.xsltc.dom.XSLTCDTMManager beim Erstellen eines Objekts mit dem
Namen javax.xml.transform.TransformerFactory. Alle Objekte mit dem Namen javax.xml.transform.Transformer oder javax.xml.transform.sax.TransformerHandler,
die mit Hilfe dieses TransformerFactory-Objekts erstellt werden, verwenden denselben Service-Provider. Sie k&ouml;nnen Service-Provider nur &auml;ndern, indem Sie eine der oben aufgef&uuml;hrten Einstellungen
&auml;ndern und anschlie&szlig;end ein neues TransformerFactory-Objekt erstellen.</p>
<a name="wq49"></a>
<h3 id="wq49"><a href="#ToC_44">Verwenden einer &auml;lteren Version von Xerces oder Xalan</a></h3>
<p>Wenn Sie mit einer &auml;lteren Version von Tomcat arbeiten, gilt m&ouml;glicherweise die folgende Einschr&auml;nkung.</p>
<p>Wenn Sie im &Uuml;berschreibungsverzeichnis eine &auml;lteren Version von Xerces (vor Version 2.0) oder Xalan (vor Version 2.3) verwenden, wird beim Aufrufen der Anwendung m&ouml;glicherweise eine Ausnahmebedingung f&uuml;r Nullzeiger angezeigt. Diese Ausnahmebedingung tritt auf, da bei
&auml;lteren Versionen die Datei jaxp.properties nicht ordnungsgem&auml;&szlig; verarbeitet werden kann. </p>
<p>Gehen Sie wie folgt vor, um diesen Fehler zu umgehen:</p>
<ul>
<p><li>F&uuml;hren Sie ein Upgrade auf eine neuere Version der
Anwendung aus, die die aktuelle JAXP-Spezifikation (Java API for XML
Programming) implementiert (http://java.sun.com/xml/jaxp/index.html).
<br /></li>
<p><li>L&ouml;schen Sie die Datei jaxp.properties aus dem Verzeichnis
C:\Programme\IBM\Java50\jre\lib.
<br /></li>
<p><li>Entfernen Sie die Kommentarzeichen in der Datei jaxp.properties
in C:\Programme\IBM\Java50\jre\lib.
<br /></li>
<p><li>Definieren Sie SAXParserFactory, DocumentBuilderFactory oder TransformerFactory explizit unter Verwendung der Umgebungsvariablen <strong>IBM_JAVA_OPTIONS</strong>. Beispiel:
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
  org.apache.xerces.jaxp.SAXParserFactoryImpl </pre>oder
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</pre>oder 
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
  org.apache.xalan.processor.TransformerFactoryImpl  </pre>
<br /></li>
<li>Legen Sie das Systemmerkmal f&uuml;r <strong>javax.xml.parsers.SAXParserFactory</strong>, <strong>javax.xml.parsers.DocumentBuilderFactory</strong> oder <strong>javax.xml.transform.TransformerFactory</strong> innerhalb des Anwendungscodes fest. Ein Beispiel hierzu finden Sie in der Spezifikation JAXP 1.3.
<br /></li></ul>
<a name="wq50"></a>
<h1 id="wq50"><a href="#ToC_45">Verwenden von SDK zur Entwicklung von Java-Anwendungen</a></h1>
<p>In den folgenden Abschnitten erhalten Sie Informationen zur Verwendung von SDK for Windows zur Entwicklung von Java-Anwendungen. Einzelheiten zu den verf&uuml;gbaren Tools finden Sie im Abschnitt <a href="#sdktools">SDK-Tools</a>.</p>
<a name="debugger"></a>
<h2 id="debugger"><a href="#ToC_46">Debugging in Java-Anwendungen</a></h2>
<p>Zur Fehlerbehebung in Java-Programmen k&ouml;nnen Sie den Java-Debugger (JDB) oder andere Debugger
verwenden, die &uuml;ber die JPDA (Java Platform Debugger Architecture) kommunizieren, die in SDK for Windows enthalten ist.</p>
<a name="jdb"></a>
<h3 id="jdb"><a href="#ToC_47">Java-Debugger (JDB)</a></h3>
<p>Der Java-Debugger (JDB) ist in SDK for Windows enthalten. Dieser Debugger wird &uuml;ber den Befehl
<strong>jdb</strong> aufgerufen. Er wird JVM &uuml;ber die JPDA zugeordnet. Gehen Sie zur Fehlerbehebung in Java-Anwendungen wie folgt vor:</p>
<ol type="1">
<li>Starten Sie JVM unter Angabe folgender Optionen:
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<em>&lt;Port></em>
     MeineAnwendung <em>&lt;Argumente zu MeineAnwendung></em></pre></li>
<li>Daraufhin startet JVM. Vor dem Starten der Java-Anwendung wird die Ausf&uuml;hrung jedoch ausgesetzt.
Sie k&ouml;nnen den Debugger in einer separaten Sitzung &uuml;ber folgenden Befehl JVM zuordnen:
<pre class="xmp">jdb -attach <em>&lt;Portnummer></em></pre>Der Debugger wird daraufhin JVM zugeordnet, und Sie k&ouml;nnen
eine Reihe von Befehlen zur &Uuml;berpr&uuml;fung und Steuerung der Java-Anwendung ausf&uuml;hren. Mit dem Befehl
<tt class="xph">run</tt> k&ouml;nnen Sie die Java-Anwendung beispielsweise ausf&uuml;hren.</li></ol>
<p>Wenn Sie weitere Informationen zu JDB-Optionen aufrufen m&ouml;chten, geben Sie Folgendes ein:</p>
<pre class="xmp">jdb -help</pre><p class="indatacontent">Gehen Sie wie folgt vor, um weitere Informationen zu JDB-Befehlen anzuzeigen:</p>
<ol type="1">
<li>Geben Sie <tt class="xph">jdb</tt> ein.</li>
<li>Geben Sie bei der JDB-Eingabeaufforderung <tt class="xph">help</tt> ein.</li></ol><p class="indatacontent"> </p>
<p>Sie k&ouml;nnen JDB au&szlig;erdem f&uuml;r die Fehlerbehebung in Java-Anwendungen auf fernen Maschinen verwenden.
JPDA verwendet ein TCP/IP-Socket f&uuml;r die Verbindung mit der fernen JVM.</p>
<ol type="1">
<li>Starten Sie JVM wie oben beschrieben.</li>
<li>Ordnen Sie den Debugger mit folgendem Befehl dem fernen System zu:
<pre class="xmp">jdb -attach <em>&lt;Systemname oder IP-Adresse></em>:<em>&lt;Portnummer></em></pre></li></ol>
<p>Wenn Sie eine Debugsitzung &uuml;ber das Transportprotokoll dt_socket aufrufen, m&uuml;ssen Sie sicherstellen,
dass die angegebenen Ports verf&uuml;gbar sind.</p>
<p><font color="red"><span id="changed">|</span>Die JVMDI (Java Virtual Machine Debugging Interface) wird in diesem Release <em>nicht</em> unterst&uuml;tzt. Sie wurde durch die JVMTI (Java Virtual Machine Tool Interface) ersetzt.</font></p>
<p>Weitere Informationen zu JDB und JPDA sowie deren Verwendung finden Sie auf den folgenden Websites: </p>
<ul>
<li><a href="http://java.sun.com/products/jpda/">http://java.sun.com/products/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html</a></li></ul>
<br />
<a name="wq54"></a>
<h2 id="wq54"><a href="#ToC_48">Ermitteln, ob eine Anwendung auf JVM im 32-Bit- oder 64-Bit-Modus ausgef&uuml;hrt wird</a></h2>
<p>Einige Java-Anwendungen m&uuml;ssen in der Lage sein zu ermitteln, ob sie auf JVM im 32-Bit- oder 64-Bit-Modus ausgef&uuml;hrt werden. Falls Ihre Anwendung beispielsweise &uuml;ber eine Bibliothek mit nativem Code
verf&uuml;gt, muss die Bibliothek f&uuml;r Plattformen, die sowohl den 32-Bit- als auch den 64-Bit-Betriebsmodus unterst&uuml;tzen, separat im 32-Bit- und im 64-Bit-Format kompiliert werden. In diesem Fall muss die Anwendung w&auml;hrend der Laufzeit die richtige Bibliothek laden,
da der 32-Bit- und der 64-Bit-Code nicht miteinander kombiniert werden k&ouml;nnen.</p>
<p>Mit Hilfe des Systemmerkmals <strong>com.ibm.vm.bitmode</strong> k&ouml;nnen Anwendungen den Modus ermitteln,
in dem JVM ausgef&uuml;hrt wird. Es werden folgende Werte zur&uuml;ckgegeben: </p>
<ul>
<li>32 - JVM wird im 32-Bit-Modus ausgef&uuml;hrt</li>
<li>64 - JVM wird im 64-Bit-Modus ausgef&uuml;hrt</li></ul><p class="indatacontent">Mit dem folgenden Aufruf k&ouml;nnen Sie das Systemmerkmal <strong>com.ibm.vm.bitmode</strong> innerhalb des Anwendungscodes &uuml;berpr&uuml;fen:</p>
<pre class="xmp">System.getProperty("com.ibm.vm.bitmode");</pre>
<a name="wq55"></a>
<h2 id="wq55"><a href="#ToC_49">Schreiben von JNI-Anwendungen</a></h2>
<p>G&uuml;ltige JNI-Versionsnummmern, die &uuml;ber native Programme im API-Aufruf JNI_CreateJavaVM()
angegeben werden k&ouml;nnen, lauten wie folgt:</p>
<ul>
<li>JNI_VERSION_1_2(0x00010002)</li>
<li>JNI_VERSION_1_4(0x00010004)</li></ul><p class="indatacontent">&Uuml;ber diese Versionsnummer wird lediglich die Version der zu verwendenden
nativen JNI-Schnittstelle festgelegt. Die tats&auml;chliche JVM-Version, die erstellt wird,
wird &uuml;ber die J2SE-Bibliotheken angegeben (Version 5.0). Die JNI-Schnittstellen-API hat <em>keine</em>
Auswirkungen auf die Sprachenspezifikation, die &uuml;ber JVM, die APIs der Klassenbibliothek oder
einen anderen Bereich mit JVM-Funktionen implementiert wird. Weitere Informationen hierzu finden Sie unter <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jni">http://java.sun.com/j2se/1.5.0/docs/guide/jni</a>.</p>
<p>Falls f&uuml;r Ihre Anwendung zwei JNI-Bibliotheken erforderlich sind
(f&uuml;r 32 und 64 Bit), verwenden Sie das Systemmerkmal
<strong>com.ibm.vm.bitmode</strong>, um festzustellen, ob derzeit eine 32-Bit- oder 64-Bit-JVM ausgef&uuml;hrt
wird, und w&auml;hlen Sie dann die geeignete Bibliothek aus.</p>
<a name="wq56"></a>
<div class="notetitle" id="wq56">Anmerkung:</div>
<div class="notebody">Version 1.1 der JNI (Java Native Interface) wird nicht unterst&uuml;tzt.</div>
<a name="wq57"></a>
<h2 id="wq57"><a href="#ToC_50">Arbeiten mit Applets</a></h2>
<p>Mit Applet Viewer k&ouml;nnen Sie mit Hilfe des Applet-Tags mindestens ein Applet ausf&uuml;hren, das durch Verweise auf einer Webseite (HTML-Datei) aufgerufen wird.
Applet Viewer findet die APPLET-Tags in der HTML-Datei und f&uuml;hrt die Applets, wie durch die Tags angegeben, in separaten Fenstern aus.</p>
<p>Da Applet Viewer f&uuml;r das Anzeigen von Applets konzipiert wurde, kann eine Webseite, die viele HTML-Tags enth&auml;lt, mit Applet Viewer nicht vollst&auml;ndig angezeigt werden. Mit Applet Viewer kann lediglich eine syntaktische Analyse der APPLET-Tags und nicht der anderen auf der Webseite enthaltenen HTML-Tags durchgef&uuml;hrt werden.</p>
<a name="wq58"></a>
<h3 id="wq58"><a href="#ToC_51">Ausf&uuml;hren von Applets mit Applet Viewer</a></h3>
<p>Geben Sie zum Ausf&uuml;hren eines Applets mit Applet Viewer Folgendes an einer Eingabeaufforderung ein:</p>
<pre class="xmp">   appletviewer <em>Name</em></pre>
<p><em>Name</em> steht f&uuml;r Folgendes:</p>
<ul>
<li>Dateiname einer HTML-Datei, die ein Applet aufruft</li>
<li>URL einer Webseite, die ein Applet aufruft</li></ul>
<p>Geben Sie z.&nbsp;B. zum Aufrufen von Applet Viewer &uuml;ber eine HTML-Datei, die ein Applet aufruft, an einer Eingabeaufforderung Folgendes ein:</p>
<p></p>
<pre class="xmp">appletviewer &lt;Demo>\GraphLayout\Beispiel1.html</pre><p class="indatacontent"> <em>&lt;Demo></em> wird dabei durch den vollst&auml;ndigen Pfad des dekomprimierten Demopakets ersetzt.</p>
<p>Beispielsweise ist <tt>http://java.sun.com/applets/NervousText/Beispiel1.html</tt> die URL einer Webseite, die ein Applet aufruft. Geben Sie zum Aufrufen von Applet Viewer auf dieser Webseite an einer Shelleingabeaufforderung Folgendes ein:</p>
<p></p>
<pre class="xmp">appletviewer http://java.sun.com/applets/NervousText/Beispiel1.html</pre><p class="indatacontent"> </p>
<p>Applet Viewer erkennt die Option <strong>charset</strong> des Tags
&lt;META> nicht. Wenn die Datei, die Applet Viewer l&auml;dt, nicht als Systemstandard codiert ist, wird m&ouml;glicherweise eine E/A-Ausnahmebedingung angezeigt. Verwenden Sie beim Ausf&uuml;hren des Befehls <tt class="xph">appletviewer</tt> die Option <strong>-encoding</strong>, um die Ausnahmebedingung zu vermeiden. Beispiel: </p>
<pre class="xmp">appletviewer -encoding JISAutoDetect Beispiel.html</pre>
<a name="wq59"></a>
<h3 id="wq59"><a href="#ToC_52">Debugging von Applets mit Applet Viewer</a></h3>
<p>Mit Hilfe der Option <strong>-debug</strong> von Applet Viewer k&ouml;nnen Sie Fehler in Applets beheben. Beim Debugging von Applets wird empfohlen, Applet Viewer &uuml;ber das Verzeichnis aufzurufen, in dem die HTML-Datei enthalten ist, die das Applet aufruft. Beispiel:</p>
<p></p>
<pre class="xmp">cd &lt;Demo>\TicTacToe
appletviewer -debug Beispiel1.html</pre>
<p><em>&lt;Demo></em> wird dabei durch den vollst&auml;ndigen Pfad des dekomprimierten Demopakets ersetzt.</p>
<p>Dokumentation zum Debugging von Applets finden Sie mit Hilfe des Applet Viewer auf der Website von Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p><font color="red"><span id="changed">|</span>
<span id="changed">|</span><a name="alloc_large_page"></a>
<span id="changed">|</span><h2 id="alloc_large_page"><a href="#ToC_53">Konfigurieren einer Speicherzuordnung von gro&szlig;en Seiten</a></h2>
<span id="changed">|</span><p>Sie k&ouml;nnen die Unterst&uuml;tzung f&uuml;r gro&szlig;e Seiten auf Systemen aktivieren, die dies unterst&uuml;tzen.
<span id="changed">|</span>Starten Sie dazu Java unter Angabe der Option <strong>-Xlp</strong>.</p>
<span id="changed">|</span><p>Gro&szlig;e Seiten werden in erster Linie verwendet, um
<span id="changed">|</span>Leistungssteigerungen in Anwendungen zu erzielen, die gro&szlig;e
<span id="changed">|</span>Speichermengen zuordnen und h&auml;ufig auf diesen Speicher zugreifen.
<span id="changed">|</span>Die Leistungssteigerungen durch die Verwendung gro&szlig;er Seiten werden
<span id="changed">|</span>haupts&auml;chlich durch die geringe Anzahl Fehlschl&auml;ge im Translation
<span id="changed">|</span>Lookaside Buffer (TLB) erzielt. Der TLB ordnet einen gr&ouml;&szlig;eren Bereich an virtuellem Speicher zu,
<span id="changed">|</span>und daraus ergeben sich die Leistungssteigerungen.</p>
<span id="changed">|</span><p>Damit JVM gro&szlig;e Seiten verwendet, muss auf Ihrem System eine ausreichende Anzahl zusammenh&auml;ngender gro&szlig;er Seiten verf&uuml;gbar sein. Sollte es nicht m&ouml;glich sein, gro&szlig;e Seiten zuzuordnen, selbst wenn gen&uuml;gend Seiten
<span id="changed">|</span>verf&uuml;gbar sind, h&auml;ngen die gro&szlig;en Seiten m&ouml;glicherweise nicht zusammen. </p>
<span id="changed">|</span><p>Die Zuordnung gro&szlig;er Seiten ist nur m&ouml;glich, wenn die lokale Administrationsrichtlinie f&uuml;r den JVM-Benutzer so konfiguriert ist, dass "Lock pages in memory" (Seiten im Speicher sperren) zul&auml;ssig ist.</p></font>
<a name="wq60"></a>
<h2 id="wq60"><a href="#ToC_54">CORBA-Unterst&uuml;tzung</a></h2>
<p>Java 2 Platform, Standard Edition (J2SE) unterst&uuml;tzt mindestens die Spezifikationen, die in den <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/doc-files/compliance.html">offiziellen Spezifikationen f&uuml;r die CORBA-Unterst&uuml;tzung in J2SE (V1.5)</a> enthalten sind. In einigen F&auml;llen unterst&uuml;tzt IBM J2SE ORB neuere Versionen der Spezifikationen.</p>
<a name="wq61"></a>
<h3 id="wq61"><a href="#ToC_55">Unterst&uuml;tzung f&uuml;r GIOP 1.2</a></h3>
<p>Wie in Kapitel 13 und 15 der Spezifikation CORBA 2.3.1 (OMG-Dokument <em>formal/99-10-07</em>) beschrieben, unterst&uuml;tzt SDK alle GIOP-Versionen. Sie k&ouml;nnen dieses Dokument unter der folgenden Adresse abrufen:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?formal/99-10-07">http://www.omg.org/cgi-bin/doc?formal/99-10-07</a></p>
<p>Bidirektionales GIOP wird nicht unterst&uuml;tzt.</p>
<a name="wq62"></a>
<h3 id="wq62"><a href="#ToC_56">Unterst&uuml;tzung f&uuml;r portierbare Abfangprozesse</a></h3>
<p>Wie von der OMG (Object Management Group) im Dokument <em>ptc/01-03-04</em> beschrieben, unterst&uuml;tzt SDK portierbare Abfangprozesse. Sie k&ouml;nnen dieses Dokument unter der folgenden Adresse abrufen:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/01-03-04">http://www.omg.org/cgi-bin/doc?ptc/01-03-04</a></p>
<p>Portierbare Abfangprozesse sind Hooks in den ORB (Object Request Broker), &uuml;ber die ORB-Services den normalen Ausf&uuml;hrungsablauf des ORBs unterbrechen k&ouml;nnen.</p>
<a name="wq63"></a>
<h3 id="wq63"><a href="#ToC_57">Unterst&uuml;tzung f&uuml;r den Interoperable Naming Service</a></h3>
<p>Wie von der OMG im Dokument <em>ptc/00-08-07</em> beschrieben, unterst&uuml;tzt SDK den Interoperable Naming Service. Sie k&ouml;nnen dieses Dokument unter der folgenden Adresse abrufen:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/00-08-07">http://www.omg.org/cgi-bin/doc?ptc/00-08-07</a></p>
<p>Der Standardport, der vom Transient Name Server (Befehl <tt>tnameserv</tt>) verwendet wird, wenn der Parameter <strong>ORBInitialPort</strong> nicht angegeben ist, wurde von <em>900</em> in <em>2809</em> ge&auml;ndert. Dies ist die Portnummer, die zusammen mit der IANA (Internet
Assigned Number Authority) f&uuml;r einen CORBA Naming Service registriert wird. Programme, die von dieser Standardeinstellung abh&auml;ngig sind, m&uuml;ssen m&ouml;glicherweise aktualisiert werden, um mit dieser Version arbeiten zu k&ouml;nnen.</p>
<p>Der Ausgangskontext, der vom Transient Name Server zur&uuml;ckgegeben wird, lautet jetzt <tt>org.omg.CosNaming.NamingContextExt</tt>. Bereits vorhandene Programme, die den Verweis auf den Kontext <tt>org.omg.CosNaming.NamingContext</tt> eingrenzen, funktionieren weiterhin und m&uuml;ssen nicht erneut kompiliert werden.</p>
<p>Der ORB unterst&uuml;tzt die &uuml;ber die Interoperable Naming Service-Spezifikation definierten Parameter <strong>-ORBInitRef</strong> und <strong>-ORBDefaultInitRef</strong>, und die Operation ORB::string_to_object unterst&uuml;tzt jetzt die &uuml;ber die Interoperable Naming Service-Spezifikation definierten Formate f&uuml;r ObjectURL-Zeichenfolgen (corbaloc: und corbaname:).</p>
<p>Die OMG gibt die Methode ORB::register_initial_reference an, um einen Service mit dem
Interoperable Naming Service zu registrieren. Diese Methode ist jedoch in der
Sun Java Core-API der Version 5.0 nicht verf&uuml;gbar. Programme, die in der aktuellen Version einen Service registrieren m&uuml;ssen, m&uuml;ssen diese Methode in der internen IBM ORB-Implementierungsklasse aufrufen. Dies gilt beispielsweise beim Registrieren des Services "MeinService":</p>
<p></p>
<pre class="xmp">((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MeinService",
serviceRef); </pre>
<p>Dabei ist <tt>orb</tt> eine Instanz von <tt>org.omg.CORBA.ORB</tt>, die von <tt>ORB.init()</tt> zur&uuml;ckgegeben wird, und <tt>serviceRef</tt> ein CORBA-Objekt, das mit dem ORB verbunden ist. Dies ist ein vorl&auml;ufiger Mechanismus, der mit zuk&uuml;nftigen Versionen nicht kompatibel ist und nicht auf ORBs anderer Hersteller portiert werden kann.</p>
<a name="wq64"></a>
<h3 id="wq64"><a href="#ToC_58">Systemmerkmale f&uuml;r die ORB-Tracefunktion</a></h3>
<p>Durch eine Laufzeitfunktion zur Fehlerbehebung wird die Servicefreundlichkeit verbessert. Diese Funktion kann f&uuml;r die Problemdiagnose verwendet werden, oder sie wird vom IBM Kundendienst ben&ouml;tigt.
Die Tracefunktion wird von drei Systemmerkmalen gesteuert.</p>
<ul>
<li>Legen Sie Folgendes fest, um die Tracefunktion zu aktivieren: <tt><strong>com.ibm.CORBA.Debug</strong>=true</tt>.</li>
<li>Legen Sie Folgendes fest, um gesendete und empfangene GIOP-Nachrichten zu formatieren und dem Trace hinzuzuf&uuml;gen: <tt><strong>com.ibm.CORBA.CommTrace</strong>=true</tt>.
Standardm&auml;&szlig;ig wird die Ausgabe der ORB-Tracefunktion in Dateien geschrieben, deren Namen das folgende Format aufweisen: orbtrc.DDMMYYYY.HHmm.SS.txt.</li>
<li>Legen Sie Folgendes fest, um die Ausgabe in eine andere Datei zu schreiben: <tt><strong>com.ibm.CORBA.Debug.Output</strong>=&lt;Dateiname></tt>. </li></ul><p class="indatacontent"> Geben Sie z.&nbsp;B. Folgendes ein, um ein Trace f&uuml;r Ereignisse und formatierte GIOP-Nachrichten durchzuf&uuml;hren:</p>
<pre class="xmp"> java -Dcom.ibm.CORBA.Debug=true  
		-Dcom.ibm.CORBA.CommTrace=true MeineAnwendung   </pre><p class="indatacontent"> </p>
<p>Aktivieren Sie die Tracefunktion nicht f&uuml;r normale Operationen, da dies zu Leistungseinbu&szlig;en f&uuml;hren kann. Obwohl Sie die Tracefunktion inaktiviert haben, funktioniert FFDC (First Failure Data Capture) weiterhin, so dass nur schwer wiegende Fehler dokumentiert werden.
Wenn eine Debugausgabedatei generiert wird, pr&uuml;fen Sie sie in Bezug auf dieses Problem. Z.&nbsp;B. hat der Server m&ouml;glicherweise seinen Betrieb eingestellt, ohne dass ORB.shutdown() ausgef&uuml;hrt wurde.</p>
<p>Der Inhalt und das Format der Traceausgabe k&ouml;nnen von Version zu Version variieren. </p>
<a name="wq65"></a>
<h3 id="wq65"><a href="#ToC_59">Systemmerkmale zur Optimierung des ORB</a></h3>
<p>Mit den folgenden Merkmalen k&ouml;nnen Sie den ORB optimieren:</p>
<ul>
<li>Legen Sie das Systemmerkmal <strong>com.ibm.CORBA.FragmentSize</strong> fest, um die Fragmentierung von GIOP 1.2 zu steuern.
<p>Geben Sie Folgendes ein, um f&uuml;r die Fragmentgr&ouml;&szlig;e 4096 Byte festzulegen:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.FragmentSize=4096 MeineAnwendung
</pre>
<p>Die Standardeinstellung lautet 1024 Byte. Sie k&ouml;nnen die Fragmentierung inaktivieren, wenn Sie die Fragmentgr&ouml;&szlig;e auf 0 setzen.</p> </li>
<li>In einem heterogenen Netz kann sich die Antwort auf eine CORBA-Anforderung verz&ouml;gern oder verloren gehen. &Uuml;ber das Systemmerkmal <strong>com.ibm.CORBA.RequestTimeout</strong> k&ouml;nnen Sie die maximale Wartezeit festlegen. Sie k&ouml;nnen das Zeitlimit f&uuml;r die Anforderungssuche auch &uuml;ber <strong>com.ibm.CORBA.LocateRequestTimeout</strong> steuern.
Geben Sie z.&nbsp;B. Folgendes ein, um beide Verz&ouml;gerungen auf 30 Sekunden zu beschr&auml;nken:
<pre class="xmp">java -Dcom.ibm.CORBA.RequestTimeout=30 
     -Dcom.ibm.CORBA.LocateRequestTimeout=30 MeineAnwendung</pre>
<p>Standardm&auml;&szlig;ig wartet der ORB uneingeschr&auml;nkt lange auf eine Antwort. Legen Sie f&uuml;r das Zeitlimit keinen zu niedrigen Wert fest, um zu vermeiden, dass Verbindungen unn&ouml;tigerweise beendet werden.</p></li>
<li>Wenn Ihr Programm einen Service im Netz bereitstellt, m&uuml;ssen Sie f&uuml;r die Anzahl Ports, &uuml;ber die der ORB eingehende Anforderungen liest, m&ouml;glicherweise einen bekannten Wert festlegen. Sie k&ouml;nnen dies &uuml;ber das Systemmerkmal <strong>com.ibm.CORBA.ListenerPort</strong> steuern.
<p> Geben Sie z.&nbsp;B. Folgendes ein, damit der ORB Port 1050 verwendet:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.ListenerPort=1050 MeineAnwendung</pre>
<p>Wenn f&uuml;r dieses Merkmal ein Wert festgelegt wurde, ist der ORB empfangsbereit, sobald er initialisiert wurde.
Andernfalls ist er nur empfangsbereit, wenn es erforderlich ist.</p></li></ul>
<a name="wq66"></a>
<h3 id="wq66"><a href="#ToC_60">Java 2-Sicherheitsberechtigungen f&uuml;r den ORB</a></h3>
<p>Bei der Ausf&uuml;hrung eines Java 2-Sicherheitsmanagers kann das Aufrufen
einiger Methoden in den CORBA-API-Klassen Berechtigungspr&uuml;fungen verursachen, die
wiederum zu einer Ausnahmebedingung <tt class="xph">SecurityException</tt> f&uuml;hren. Zu den hiervon
betroffenen Methoden geh&ouml;ren: </p>
<p></p>
<a name="corbatable"></a>
<table id="corbatable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Tabelle 2. Methoden, auf die sich das Ausf&uuml;hren eines Java 2-Sicherheitsmanagers auswirkt</caption>
<thead valign="bottom">
<tr>
<th id="wq67" width="32%" align="left">Klasse/Schnittstelle</th>
<th id="wq68" width="32%" align="left">Methode </th>
<th id="wq69" width="34%" align="left">Erforderliche Berechtigung</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq68">
<p>init</p></td>
<td headers="wq69">
<p>java.net.SocketPermission resolve</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq68">
<p>connect</p></td>
<td headers="wq69">
<p>java.net.SocketPermission listen</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.ORB<br />
</div></td>
<td headers="wq68">
<p>resolve_initial_references</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_is_a</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_non_existent</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>OutputStream _request (String, boolean)</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
portable.ObjectImpl<br />
</div></td>
<td headers="wq68">
<p>_get_interface_def</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>invoke</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>send_deferred</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">org.omg.CORBA.<br />
Request<br />
</div></td>
<td headers="wq68">
<p>send_oneway</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
<tr>
<td headers="wq67">
<div class="lines">javax.rmi.<br />
PortableRemoteObject<br />
</div></td>
<td headers="wq68">
<p>narrow</p></td>
<td headers="wq69">
<p>java.net.SocketPermission connect</p></td>
</tr>
</tbody>
</table>
<p>Falls Ihr Programm eine der aufgef&uuml;hrten Methoden verwendet, m&uuml;ssen Sie sicherstellen,
dass die erforderlichen Berechtigungen vorliegen.</p>
<a name="wq70"></a>
<h3 id="wq70"><a href="#ToC_61">ORB-Implementierungsklassen</a></h3>
<p>Die ORB-Implementierungsklassen in diesem Release lauten:</p>
<ul class="simple">
<li>org.omg.CORBA.ORBClass=com.ibm.CORBA.iiop.ORB</li>
<li>org.omg.CORBA.ORBSingletonClass=com.ibm.rmi.corba.ORBSingleton</li>
<li>javax.rmi.CORBA.UtilClass=com.ibm.CORBA.iiop.UtilDelegateImpl</li>
<li>javax.rmi.CORBA.StubClass=com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl</li>
<li>javax.rmi.CORBA.PortableRemoteObjectClass=  com.ibm.rmi.javax.rmi.PortableRemoteObject</li></ul>
<p>Hierbei handelt es sich um die Standardwerte. Es wird jedoch empfohlen, diese Merkmale
nicht direkt festzulegen bzw. nicht direkt auf die Implementierungsklassen zu verweisen. Aus Gr&uuml;nden der Portierbarkeit sollte ausschlie&szlig;lich auf die
CORBA-API-Klassen und nicht auf die Implementierungsklassen verwiesen werden. Diese Werte werden in zuk&uuml;nftigen Releases m&ouml;glicherweise ge&auml;ndert. </p>
<a name="rmi-iiop"></a>
<h2 id="rmi-iiop"><a href="#ToC_62">RMI-IIOP</a></h2>
<p>Java Remote Method Invocation (RMI) bietet ein einfaches Verfahren
f&uuml;r die verteilte Java-Programmierung. RMI-IIOP (RMI over IIOP) arbeitet auf der Grundlage des
Standard-IIOP-Protokolls (IIOP - Internet Inter-ORB Protocol) der
CORBA (Common Object Request Broker Architecture) und erm&ouml;glicht so
Erweiterungen der Java-RMI bei Daten&uuml;bertragungen. Dadurch sind direkte
Interaktionen mit beliebigen anderen CORBA-Object-Request-Brokern (ORBs) m&ouml;glich, unabh&auml;ngig davon,
ob diese in Java oder einer anderen Programmiersprache implementiert wurden.</p>
<p>Folgende Dokumentation steht zur Verf&uuml;gung:</p>
<ul>
<li>Im Handbuch <a href="http://www.ibm.com/developerworks/java/rmi-iiop">RMI-IIOP Programmer's Guide</a> ist eine Einf&uuml;hrung
zum Schreiben von RMI-IIOP-Programmen enthalten. Dieses Handbuch wird bei der Installation
dieser Dokumentation installiert.
<br /></li>
<li>Das Demoverzeichnis  umfasst Folgendes:
<ul>
<li>Ein Beispiel mit der Bezeichnung "Hello World", mit dem zwischen dem Java Remote Method
Protocol (JRMP) und IIOP-Protokollen umgeschaltet werden kann (demo\rmi-iiop\hello)
<br /></li>
<li>Ein Beispiel mit der Bezeichnung "Hello World", das mit einem IDL-Standardprogramm
interagiert (demo\rmi-iiop\idl)
<br /></li></ul></li>
<li>Das Dokument <em>Java Language to IDL Mapping</em> enth&auml;lt detaillierte
technische Spezifikationen zu RMI-IIOP und ist unter folgender Adresse verf&uuml;gbar:
<br /><a href="http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf">http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf </a></li></ul>
<a name="rmi"></a>
<h2 id="rmi"><a href="#ToC_63">Implementieren des Steuerroutinenpools f&uuml;r RMI-Verbindungen</a></h2>
<p>Thread-Pooling f&uuml;r Steuerroutinen von RMI-Verbindungen wird <em>nicht</em> standardm&auml;&szlig;ig aktiviert.</p>
<p>Wenn Sie das Verbindungspooling aktivieren wollen, das in der RMI-TCPTransport-Ebene implementiert ist, legen Sie die folgende Option fest: </p>
<pre class="xmp">-Dsun.rmi.transport.tcp.connectionPool=true (oder einen Wert ungleich null) </pre>
<p>Diese Runtime Environment-Version verf&uuml;gt &uuml;ber keine Einstellungen, die Sie verwenden k&ouml;nnen, um die Anzahl Threads im Verbindungspool zu begrenzen.</p>
<p>Weitere Informationen finden Sie auf der Java-Website von Sun: <a href="http://java.sun.com">http://java.sun.com</a>.</p>
<a name="wq71"></a>
<h2 id="wq71"><a href="#ToC_64">Erweiterte BiDirectional-Unterst&uuml;tzung</a></h2>
<p>IBM SDK umfasst erweiterte BiDirectional-Unterst&uuml;tzung. Weitere Informationen erhalten Sie unter <a href="http://www.ibm.com/developerworks/java/jdk/bidirectional/index.html">http://www-106.ibm.com/developerworks/java/jdk/bidirectional/index.html</a>. Die Javadoc-Komponente f&uuml;r das BiDirectional-Paket wird mit SDK in der Datei <strong>docs/apidoc.zip</strong> mitgeliefert.</p>
<a name="bigd"></a>
<h2 id="bigd"><a href="#ToC_65">Funktionale Erweiterungen f&uuml;r BigDecimal</a></h2><font color="red"><span id="changed">|</span>
<span id="changed">|</span><p>&Uuml;ber Java 5.0 wurde die IBM BigDecimal-Klasse von Sun als java.math.BigDecimal &uuml;bernommen. com.ibm.math.BigDecimal wird von IBM nicht mehr gepflegt und ist daher veraltet. Es wird empfohlen, f&uuml;r die Verwendung von java.math.BigDecimal bereits vorhandenen Java-Code zu migrieren.</p>
<span id="changed">|</span><p>Die neue Klasse java.math.BigDecimal verwendet dieselben Methoden wie die Vorversion
<span id="changed">|</span>und wie com.ibm.math.BigDecimal. Der bereits vorhandene Code, der java.math.BigDecimal verwendet, funktioniert weiterhin ordnungsgem&auml;&szlig;.</p>
<span id="changed">|</span><p>Wenn Sie bereits vorhandenen Java-Code migrieren wollen, um die Klasse java.math.BigDecimal zu verwenden, &auml;ndern Sie die Importanweisung am Anfang Ihrer Java-Datei von <tt class="xph">import com.ibm.math.*;</tt> in <tt class="xph">import java.math,*;</tt>.</p></font>
<a name="wq72"></a>
<h2 id="wq72"><a href="#ToC_66">Unterst&uuml;tzung des Euro-Symbols</a></h2>
<p>F&uuml;r IBM SDK und Runtime Environment  gilt ab dem 1. Januar 2002 f&uuml;r die L&auml;nder der Europ&auml;ischen W&auml;hrungsunion
der Euro als Standardw&auml;hrung.</p>
<p>Wenn Sie die fr&uuml;here nationale W&auml;hrung verwenden m&ouml;chten, geben Sie in der Java-Befehlszeile
<tt>-Duser.variant=PREEURO</tt> an.</p>
<p>Wenn Sie mit der britischen, d&auml;nischen oder schwedischen L&auml;ndereinstellung arbeiten und
den Euro als W&auml;hrung verwenden m&ouml;chten, geben Sie in der Java-Befehlszeile
<tt>-Duser.variant=EURO</tt> an.</p>
<a name="jcommchapter"></a>
<h1 id="jcommchapter"><a href="#ToC_67">Verwenden der Java Communications API (JavaComm)</a></h1>
<p>Das Paket mit der Java Communications API (JavaComm) ist ein optional erh&auml;ltliches Paket, das zusammen mit Runtime Environment for Windows eingesetzt werden kann. JavaComm kann unabh&auml;ngig von SDK oder Runtime Environment installiert werden.</p>
<p>Mit Hilfe der JavaComm API sind Java-Anwendungen in der Lage,
&Uuml;bertragungen &uuml;ber den seriellen Anschluss und den Parallelanschluss
f&uuml;r Technologien, wie z. B. Voicemail, Fax und Smartcards,
unabh&auml;ngig von der jeweiligen Plattform durchzuf&uuml;hren. Nach dem Schreiben von &Uuml;bertragungen &uuml;ber den seriellen
Anschluss oder den Parallelanschluss f&uuml;r Ihre Anwendung k&ouml;nnen Sie
die entsprechenden Dateien in Ihre Anwendung aufnehmen.</p>
<p>Die Java Communications API unterst&uuml;tzt serielle EIA-232-Anschl&uuml;sse
(EIA - Electronic Industries Association) bzw. RS232-Anschl&uuml;sse sowie IEEE
1284-Parallelanschl&uuml;sse (IEEE - Institute of Electrical and Electronics
Engineers). Sie wird auf Systemen mit
IBM Runtime Environment Version 5.0 unterst&uuml;tzt.</p>
<p>Bei Verwendung der Java Communications API haben Sie folgende
M&ouml;glichkeiten:</p>
<ul>
<li>Auflisten von Anschl&uuml;ssen auf einem System</li>
<li>&Ouml;ffnen und Anfordern des Eigentumsrechts von Anschl&uuml;ssen</li>
<li>Beheben von Konkurrenzsituationen in Bezug auf das
Eigentumsrecht f&uuml;r Anschl&uuml;sse zwischen Anwendungen, die mit der
Java Communications API arbeiten</li>
<li>&Uuml;berwachen asynchroner und synchroner E/A-Anschl&uuml;sse mit Hilfe
von Ereignisbenachrichtigungen</li>
<li>Empfangen von Bean-&auml;hnlichen Ereignissen, die Status&auml;nderungen am
Anschluss angeben</li></ul>
<a name="instcomm"></a>
<h2 id="instcomm"><a href="#ToC_68">Installieren der Java Communications API</a></h2>
<p>Sie sollten vor der Installation der Java Communications API
sicherstellen, dass eine Kopie von SDK oder Runtime Environment
installiert ist.</p>
<p>Gehen Sie zur Installation der Java Communications API &uuml;ber
eine Datei mit der Erweiterung
zip folgenderma&szlig;en
vor:</p>
<ol type="1">
<li>Stellen Sie die ZIP-Datei der Java Communications API, <strong>ibm-java2-javacomm-50-win-i386.zip</strong>,
in das Verzeichnis, in dem SDK oder Runtime Environment installiert wurde. Falls Sie bei der Installation das
Standardverzeichnis verwendet haben, handelt es sich hierbei um C:\Programme\IBM\Java50\.</li>
<li>Dekomprimieren Sie die Datei. Es werden folgende Dateien
in die entsprechenden Verzeichnisse extrahiert: 
<ul>
<li>jre\lib\ext\comm.jar</li>
<li>jre\bin\ibmcomm.dll</li>
<li>jre\lib\javax.comm.properties</li>
<li>docs\javacomm\License.html</li></ul> 
<p>Falls Sie bei der Installation von Runtime Environment das
Standardverzeichnis &uuml;bernommen haben, befindet sich die Datei
comm.jar im Verzeichnis C:\Programme\IBM\Java50\jre\lib\ext.</p>
<p>Wenn Sie die
Datei in einem anderen Verzeichnis dekomprimieren, werden die Dateien
in dieselbe Verzeichnisstruktur gestellt, an Stelle von C:\Programme\IBM\Java50\
wird jedoch das Verzeichnis verwendet, in dem Sie die Datei
dekomprimiert haben.</p> </li></ol>
<a name="wq74"></a>
<h2 id="wq74"><a href="#ToC_69">Konfigurieren der Java Communications API</a></h2>
<p>Nach der Installation der Java Communications API m&uuml;ssen Sie
folgende Schritte durchf&uuml;hren:</p>
<ul>
<li>&Auml;ndern Sie den Zugriffsmodus f&uuml;r den seriellen Anschluss
und den Parallelanschluss.</li>
<li>Legen Sie einen Wert f&uuml;r die Umgebungsvariable PATH fest, falls
dies nicht w&auml;hrend der Installation von Java geschehen ist. Siehe
hierzu den Abschnitt <a href="#pathcons">Festlegen der Umgebungsvariablen PATH</a>.</li></ul>
<a name="wq75"></a>
<h2 id="wq75"><a href="#ToC_70">Einschr&auml;nkung beim Drucken mit der Java Communications API</a></h2>
<p>Bei Druckvorg&auml;ngen &uuml;ber die Java Communications API m&uuml;ssen Sie
auf dem Drucker m&ouml;glicherweise die Tasten f&uuml;r
<strong>Seitenvorschub</strong> oder
<strong>Weiter</strong> oder eine &auml;hnliche Funktion dr&uuml;cken.</p>
<a name="wq76"></a>
<h2 id="wq76"><a href="#ToC_71">Deinstallieren der Java Communications API</a></h2>
<p>L&ouml;schen Sie zum Deinstallieren der Java Communications API
die folgenden Dateien aus dem Verzeichnis, in dem Sie Runtime
Environment installiert haben:</p>
<ul>
<li>jre\lib\ext\comm.jar</li>
<li>jre\bin\ibmcomm.dll</li>
<li>jre\lib\javax.comm.properties</li>
<li>docs\javacomm\License.html</li></ul>
<p>Runtime Environment ist standardm&auml;&szlig;ig im Verzeichnis C:\Programme\IBM\Java50\
installiert.</p>
<a name="wq77"></a>
<h2 id="wq77"><a href="#ToC_72">Dokumentation zur Java Communications API</a></h2>
<p>Dokumentation zu APIs und Beispiele zur Java Communications API
finden Sie auf der Sun-Website unter folgender Adresse: <a href="http://java.sun.com">http://java.sun.com</a></p>
<a name="wq78"></a>
<h1 id="wq78"><a href="#ToC_73">Implementieren von Java-Anwendungen</a></h1>
<a name="wq79"></a>
<h2 id="wq79"><a href="#ToC_74">Verwenden des Java-Plug-ins</a></h2>
<p>Bei dem Java-Plug-in handelt es sich um ein
Web-Browser-Plug-in. Durch Verwendung des Java-Plug-ins k&ouml;nnen Sie
die Standard-JVM Ihres Web-Browsers umgehen und zum Ausf&uuml;hren von
Applets oder Beans im Browser die gew&uuml;nschte Laufzeitumgebung verwenden.</p>
<p>Sie m&uuml;ssen warten, bis die Applets vollst&auml;ndig geladen wurden, um zu vermeiden, dass sich der Browser "aufh&auml;ngt".
Wenn Sie beispielsweise die Kn&ouml;pfe <strong>Zur&uuml;ck</strong> und <strong>Weiter</strong>
verwenden, w&auml;hrend ein Applet geladen wird, k&ouml;nnen die HTML-Seiten
unter Umst&auml;nden nicht geladen werden.</p>
<p>Das Java-Plug-in ist auf der Website von Sun unter
<a href="http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/">http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/</a> dokumentiert.</p>
<a name="suppbrowse"></a>
<h3 id="suppbrowse"><a href="#ToC_75">Unterst&uuml;tzte Browser</a></h3>
<p><font color="red"><span id="changed">|</span></p>
<a name="plugintable"></a>
<table id="plugintable" width="100%" summary="" border="1" frame="border" rules="all">
<caption><span id="changed">|</span><font color="red">Tabelle 3. Vom Java-Plug-in unterst&uuml;tzte Browser</font></caption>
<thead valign="bottom">
<tr>
<th id="wq80" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Betriebssystem</font></th>
<th id="wq81" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Internet Explorer</font></th>
<th id="wq82" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Netscape</font></th>
<th id="wq83" width="25%" align="left" valign="top"><span id="changed">|</span><font color="red">Mozilla</font></th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows 2000</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">5.5 SP2, 6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows XP</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
<tr>
<td headers="wq80"><span id="changed">|</span><font color="red">Windows Server 2003</font></td>
<td headers="wq81"><span id="changed">|</span><font color="red">6.0</font></td>
<td headers="wq82"><span id="changed">|</span><font color="red">4.78, 6.2.2, 7.2</font></td>
<td headers="wq83"><span id="changed">|</span><font color="red">1.4.x, 1.5.x, 1.6.x, 1.7.x, Firefox 1.0.x</font></td>
</tr>
</tbody>
</table><span id="changed">|</span><p class="indatacontent">Internet Explorer 5.01, der Standardbrowser unter Windows
<span id="changed">|</span>2000, wird nicht unterst&uuml;tzt.</font></p>
<a name="wq84"></a>
<h3 id="wq84"><a href="#ToC_76">Allgemeine Dokumentobjektmodellunterst&uuml;tzung (Document Object Model, DOM)</a></h3>
<p>Auf Grund von Einschr&auml;nkungen bei bestimmten Browsern k&ouml;nnen
Sie m&ouml;glicherweise nicht alle Funktionen des Pakets org.w3c.dom.html
implementieren. </p>
<ul>
<li>F&uuml;r einige dieser Funktionen wird eine Ausnahmebedingung sun.plugin.dom.exception.NotSupportedException ausgegeben.</li>
<li>Wenn der Browser eine bestimmte Funktion nicht unterst&uuml;tzt, wird eine Ausnahmebedingung sun.plugin.dom.exception.InvalidStateException ausgegeben.</li></ul>
<a name="wq85"></a>
<h3 id="wq85"><a href="#ToC_77">Verwenden von DBCS-Parametern</a></h3>
<p>Das Java-Plug-in unterst&uuml;tzt Doppelbytezeichen (z.&nbsp;B. Traditionelles Chinesisch BIG-5,
Koreanisch, Japanisch) als Parameter f&uuml;r die Tags <tt class="xph">&lt;APPLET></tt>,<tt class="xph">&lt;OBJECT></tt> und <tt class="xph">&lt;EMBED></tt>. Sie m&uuml;ssen die richtige Zeichencodierung f&uuml;r das
HTML-Dokument ausw&auml;hlen, damit das Java-Plug-in den Parameter syntaktisch analysieren kann. 
Geben Sie die Zeichencodierung f&uuml;r das HTML-Dokument mit Hilfe des
Tags <tt class="xph">&lt;META></tt> im Abschnitt <tt class="xph">&lt;HEAD></tt> wie
folgt an:</p>
<pre class="xmp">&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"></pre><p class="indatacontent">In diesem Beispiel wird dem Browser mitgeteilt, dass er die
HTML-Datei mit Hilfe der Zeichencodierung f&uuml;r Chinesisch BIG-5
syntaktisch analysieren soll. Alle Parameter werden ordnungsgem&auml;&szlig; an das Java-Plug-in weitergeleitet.
Einige der &auml;lteren Browserversionen erkennen diesen Tag m&ouml;glicherweise nicht richtig. In diesem Fall k&ouml;nnen Sie erzwingen, dass der Browser diesen Tag ignoriert. Sie m&uuml;ssen die Codierung jedoch m&ouml;glicherweise manuell &auml;ndern.</p>
<p>Sie k&ouml;nnen angeben, welche Codierung Sie verwenden m&ouml;chten, um die HTML-Datei syntaktisch zu analysieren: </p>
<ul>
<li><strong>Internet Explorer 5/6</strong> Ansicht -> Codierung</li>
<li><strong>Netscape 4:</strong> Ansicht -> Zeichensatz </li>
<li><strong>Netscape 6:</strong> Anzeigen -> Zeichencodierung</li></ul>
<a name="wq86"></a>
<h2 id="wq86"><a href="#ToC_78">Verwenden von Java Web Start</a></h2>
<p>Mit Hilfe von Java Web Start k&ouml;nnen Sie Java-Anwendungen implementieren. Web Start bietet dem Benutzer die M&ouml;glichkeit, Anwendungen direkt &uuml;ber das Internet
aufzurufen und zu verwalten. &Uuml;ber Java Web Start k&ouml;nnen Sie Anwendungen auf einfache Weise
&uuml;ber das Internet starten. Dabei haben Sie die Gewissheit, dass Sie mit der neuesten Version arbeiten.
Installations- oder Upgradeprozeduren sind daher nicht mehr erforderlich. Bei der Arbeit mit Java Web Start muss keine Software heruntergeladen und installiert werden, so dass
komplexe Installationsoptionen umgangen werden.</p>
<p><font color="red"><span id="changed">|</span>Neben den unter <a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources</a> dokumentierten Argumenten des Attributs java-vm-args unterst&uuml;tzt Web Start <strong>-Xgcpolicy</strong> zum Festlegen der Garbage-Collection-Richtlinie.</font></p>
<p>Weitere Informationen zu Browsern, die Web Start unterst&uuml;tzen, finden Sie im Abschnitt <a href="#suppbrowse">Unterst&uuml;tzte Browser</a>.</p>
<p>Weitere Informationen zu Web Start finden Sie unter <a href="http://java.sun.com/products/javawebstart">http://java.sun.com/products/javawebstart</a> und <a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html</a>. Weitere Informationen zur Implementierung von Anwendungen finden Sie unter <a href="http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html">http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html</a>.</p>
<a name="installing_webstart"></a>
<h3 id="installing_webstart"><a href="#ToC_79">Ausf&uuml;hren von Java Web Start</a></h3>
<p>Sie k&ouml;nnen Web Start auf drei Arten aufrufen:</p>
<ol type="1">
<li>W&auml;hlen Sie auf einer Webseite einen Link aus, der auf eine JNLP-Datei verweist.</li>
<li>Geben Sie an einer Eingabeaufforderung den Befehl <tt class="xph">javaws &lt;URL></tt> ein, wobei <tt class="xph">&lt;URL></tt> die Speicherposition einer JNLP-Datei ist.</li>
<li><font color="red"><span id="changed">|</span>Falls Sie Java Web Start bereits zum &Ouml;ffnen der Anwendung verwendet haben, f&uuml;hren Sie javaws im Verzeichnis <strong>JRE\bin</strong> aus, um Java Application Cache Viewer zu starten.</font></li></ol>
<p>Sobald eine Anwendung heruntergeladen wurde, wird sie im
Cache der Java-Anwendung zwischengespeichert. Wenn erneut
auf die Anwendung zugegriffen wird, l&auml;dt Java Web Start eine
neuere Version der Anwendung herunter, sofern diese verf&uuml;gbar ist. Andernfalls wird die im Cache vorhandene Version verwendet.</p>
<p>Beim Auftreten eines Fehlers in einer JNLP-Datei (z. B. ein ung&uuml;ltiger Befehlsname) schl&auml;gt Web Start fehl,
ohne dass eine Fehlernachricht angezeigt wird.</p>
<a name="wq88"></a>
<h2 id="wq88"><a href="#ToC_80">Ausliefern von Java-Anwendungen</a></h2>
<p>  Bei einer Java-Anwendung kann im Gegensatz zu einem Java-Applet
kein Web-Browser f&uuml;r Installations- und Laufzeitservices verwendet werden. Bei der Auslieferung einer Java-Anwendung kann im Softwarepaket
beispielsweise Folgendes enthalten sein: </p>
<ul>
<li>Ihre eigenen Klassen-, Ressourcen- und Datendateien
<br /></li>
<li>Ein Installationsverfahren oder Installationsprogramm
<br /></li></ul>
<p>Zum Ausf&uuml;hren der Anwendung ben&ouml;tigt der Benutzer Runtime Environment for Windows. In SDK for Windows ist Runtime Environment enthalten. Sie k&ouml;nnen jedoch nicht davon
ausgehen, dass SDK for Windows auf den Systemen aller Benutzer installiert ist. </p>
<p>Die Lizenz f&uuml;r SDK for Windows berechtigt <strong>nicht</strong> dazu,
Dateien aus SDK zusammen mit der Anwendung weiter zu verteilen.
Sie m&uuml;ssen sicherstellen, dass auf dem Zielsystem eine lizenzierte Version von SDK for Windows installiert ist.</p><font color="red"><span id="changed">|</span>
<span id="changed">|</span><a name="classdatasharing"></a>
<span id="changed">|</span><h1 id="classdatasharing"><a href="#ToC_81">Gemeinsame Nutzung von Klassendaten auf verschiedenen JVMs</a></h1>
<span id="changed">|</span><p>IBM Virtual Machine (VM) erm&ouml;glicht die gemeinsame Nutzung von Boot- und Anwendungsklassen auf verschiedenen VMs, indem diese als gemeinsam genutzter Speicher in einen Cache gestellt werden. Durch die gemeinsame Nutzung von Klassen verringert sich die gesamte virtuelle Speicherbelegung, wenn mehrere VMs einen Cache gemeinsam nutzen. Au&szlig;erdem verk&uuml;rzt sich hierdurch der Systemstart von VM, nachdem der Cache erstellt wurde. Der Cache f&uuml;r gemeinsam genutzte Klassen ist unabh&auml;ngig von den aktiven VMs und besteht &uuml;ber die Laufzeit der VM hinaus, &uuml;ber die der Cache gestartet wurde.</p>
<span id="changed">|</span><a name="wq89"></a>
<span id="changed">|</span><h2 id="wq89"><a href="#ToC_82">&Uuml;bersicht &uuml;ber die gemeinsame Nutzung von Klassen</a></h2>
<span id="changed">|</span><p>Mit IBM SDK k&ouml;nnen Sie so viele Klassen wie m&ouml;glich gemeinsam nutzen. Dieser Vorgang l&auml;uft f&uuml;r den Benutzer transparent ab.</p>
<span id="changed">|</span><a name="wq90"></a>
<span id="changed">|</span><h3 id="wq90"><a href="#ToC_83">Cache-Inhalte</a></h3>
<span id="changed">|</span><p>Der Cache f&uuml;r gemeinsam genutzte Klassen enth&auml;lt
<span id="changed">|</span>schreibgesch&uuml;tzte statische Klassendaten und Metadaten, die die
<span id="changed">|</span>Klassen beschreiben. Alle VMs k&ouml;nnen die Daten im Cache lesen oder
<span id="changed">|</span>aktualisieren. VMs, die den Cache gemeinsam nutzen, m&uuml;ssen
<span id="changed">|</span>dieselbe Version aufweisen. Bei der Bearbeitung von Laufzeitbytecodes m&uuml;ssen Sie sorgf&auml;ltig vorgehen. (Siehe
<span id="changed">|</span>hierzu die Informationen im Abschnitt <a href="#runtimebytecode">&Auml;nderungen bei Laufzeitbytecodes</a>.)</p>
<span id="changed">|</span><a name="wq91"></a>
<span id="changed">|</span><h3 id="wq91"><a href="#ToC_84">Dynamisches Aktualisieren des Caches</a></h3>
<span id="changed">|</span><p>Da der Cache f&uuml;r gemeinsam genutzte Klassen &uuml;ber die
<span id="changed">|</span>Laufzeit von VMs hinaus besteht, wird er dynamisch
<span id="changed">|</span>aktualisiert, um alle &Auml;nderungen wiederzugeben, die
<span id="changed">|</span>m&ouml;glicherweise an JARs oder Klassen auf dem Dateisystem
<span id="changed">|</span>vorgenommen wurden. Durch die dynamische Aktualisierung
<span id="changed">|</span>erscheint der Cache f&uuml;r die Anwendung transparent, die den Cache
<span id="changed">|</span>nutzt.</p>
<span id="changed">|</span><a name="wq92"></a>
<span id="changed">|</span><h3 id="wq92"><a href="#ToC_85">Aktivieren der gemeinsamen Nutzung von Klassen</a></h3>
<span id="changed">|</span><p>Sie k&ouml;nnen die gemeinsame Nutzung von Klassen mit Hilfe der
<span id="changed">|</span>Option <strong>-Xshareclasses</strong> beim Starten von VM
<span id="changed">|</span>aktivieren. VM stellt dadurch eine Verbindung zu einem
<span id="changed">|</span>vorhandenen Cache her oder erstellt einen neuen Cache, falls noch
<span id="changed">|</span>keiner vorhanden ist. Alle &uuml;ber VM geladenen Boot- und Anwendungsklassen werden standardm&auml;&szlig;ig gemeinsam genutzt. Benutzerdefinierte Klassenladeprogramme nutzen den Cache automatisch gemeinsam, wenn sie das Klassenladeprogramm der Anwendung erweitern. Sie m&uuml;ssen die zusammen mit VM verf&uuml;gbare Java Helper API verwenden, um auf den Cache zugreifen zu k&ouml;nnen. (Siehe hierzu die Informationen im Abschnitt <a href="#adaptingclassloaders">Anpassen benutzerdefinierter Klassenladeprogramme an gemeinsam genutzte Klassen</a>.)</p>
<span id="changed">|</span><a name="wq93"></a>
<span id="changed">|</span><h3 id="wq93"><a href="#ToC_86">Cache-Sicherheit</a></h3>
<span id="changed">|</span><p>Der Zugriff auf den Cache f&uuml;r gemeinsam genutzte Klassen wird durch Berechtigungen des Betriebssystems und Java-Sicherheitsberechtigungen begrenzt. Nur ein Klassenladeprogramm, in dem die gemeinsame Nutzung von Klassen registriert ist, kann Klassen zum Cache f&uuml;r gemeinsam genutzte Klassen hinzuf&uuml;gen. Wenn ein Java-Sicherheitsmanager installiert ist, muss Klassenladeprogrammen, mit Ausnahme von Klassenladeprogrammen des Standardbootprogramms, von Anwendungen und Erweiterungen, die Berechtigung zur gemeinsamen Nutzung von Klassen erteilt werden, indem der Datei <strong>java.policy</strong> die Klasse <strong>SharedClassPermission</strong> hinzugef&uuml;gt wird. (Siehe
<span id="changed">|</span>hierzu die Informationen im Abschnitt <a href="#usingsharedclasspermissions">Verwenden von SharedClassPermission</a>.)
<span id="changed">|</span>Die Laufzeitberechtigung "createClassLoader" beschr&auml;nkt die Erstellung neuer Klassenladeprogramme und daher auch den Zugriff auf den Cache. </p>
<span id="changed">|</span><a name="wq94"></a>
<span id="changed">|</span><h3 id="wq94"><a href="#ToC_87">Lebensdauer des Caches</a></h3>
<span id="changed">|</span><p>Auf einem System k&ouml;nnen mehrere Caches vorhanden sein. Sie
<span id="changed">|</span>werden nach Namen als Unteroption des Befehls
<span id="changed">|</span><strong>-Xshareclasses</strong> angegeben. VM kann nur mit jeweils einem Cache verbunden werden. Die Cachegr&ouml;&szlig;e wird beim
<span id="changed">|</span>Systemstart &uuml;ber den Befehl <strong>-Xscmx&lt;n>[k|m|g]</strong>
<span id="changed">|</span>angegeben, und die Gr&ouml;&szlig;e ist dann f&uuml;r die gesamte Lebensdauer des
<span id="changed">|</span>Caches festgelegt. Caches bestehen solange, bis sie
<span id="changed">|</span>explizit &uuml;ber eine Unteroption des Befehls
<span id="changed">|</span><strong>-Xshareclasses</strong> gel&ouml;scht werden oder das System erneut gestartet wird. </p>
<span id="changed">|</span><a name="wq95"></a>
<span id="changed">|</span><h3 id="wq95"><a href="#ToC_88">Cache-Dienstprogramme</a></h3>
<span id="changed">|</span><p>Alle Cache-Dienstprogramme sind Unteroptionen des
<span id="changed">|</span>Befehls <strong>-Xshareclasses</strong>. Mit
<span id="changed">|</span><strong>-Xshareclasses:help</strong> k&ouml;nnen Sie eine Liste der
<span id="changed">|</span>verf&uuml;gbaren Unteroptionen anzeigen.</p>
<span id="changed">|</span><a name="sharedclassesxoptions"></a>
<span id="changed">|</span><h2 id="sharedclassesxoptions"><a href="#ToC_89">Verwenden von Befehlszeilenoptionen f&uuml;r die gemeinsame Nutzung von Klassen</a></h2>
<span id="changed">|</span><p>Die gemeinsame Nutzung von Klassen wird mit Hilfe der Befehlszeilenoptionen <strong>-Xshareclasses</strong> und <strong>-Xscmx</strong> aktiviert und konfiguriert.</p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>-Xscmx</strong>&lt;<em>Gr&ouml;&szlig;e</em>>[k|m|g]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Gibt die Cachegr&ouml;&szlig;e an. Diese Option wird nur angewendet, wenn ein Cache erstellt wird und noch kein Cache mit demselben Namen vorhanden ist. Die Standardcachegr&ouml;&szlig;e h&auml;ngt von der
<span id="changed">|</span>jeweiligen Plattform ab.
<span id="changed">|</span>Den verwendeten Gr&ouml;&szlig;enwert k&ouml;nnen Sie durch Hinzuf&uuml;gen von <strong>-verbose:sizes</strong> als Befehlszeilenargument ermitteln. Der Cache ist mindestens 4 KB gro&szlig;. Die maximale Gr&ouml;&szlig;e des
<span id="changed">|</span>Caches h&auml;ngt ebenfalls von der Plattform ab. (Siehe hierzu die
<span id="changed">|</span>Informationen im Abschnitt <a href="#cachesizelimits">Grenzwerte f&uuml;r die Cachegr&ouml;&szlig;e</a>.)</li></ul></li>
<span id="changed">|</span><li><strong>-Xshareclasses</strong>:&lt;<em>Unteroption1</em>>[,&lt;<em>Unteroption2</em>>...]
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Aktiviert die gemeinsame Nutzung von Klassen. Hierf&uuml;r liegt
<span id="changed">|</span>eine Reihe von Unteroptionen vor, bei denen es sich bei einigen um
<span id="changed">|</span>Cache-Dienstprogramme handelt. Cache-Dienstprogramme f&uuml;hren den erforderlichen Vorgang f&uuml;r den angegebenen Cache durch, ohne VM zu starten. Sie k&ouml;nnen mehrere Unteroptionen miteinander
<span id="changed">|</span>kombinieren, wobei diese durch Kommas voneinander getrennt sein
<span id="changed">|</span>m&uuml;ssen. Die Cache-Dienstprogramme schlie&szlig;en sich allerdings
<span id="changed">|</span>gegenseitig aus.</li></ul>Zusammen mit der Option <strong>-Xshareclasses</strong> k&ouml;nnen Sie folgende Unteroptionen verwenden, z. B.
<span id="changed">|</span><strong>-Xshareclasses:help</strong>.
<span id="changed">|</span><ul>
<span id="changed">|</span><li><strong>help</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Listet alle Befehlszeilenoptionen auf.</li></ul></li>
<span id="changed">|</span><li><strong>name=</strong>&lt;<em>Name</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Stellt die Verbindung zu einem Cache mit einem bestimmten
<span id="changed">|</span>Namen her und erstellt den Cache, falls er nicht bereits
<span id="changed">|</span>vorhanden ist. Mit der Dienstprogrammoption <strong>listAllCaches</strong>
<span id="changed">|</span>kann angezeigt werden, welche Caches derzeit verf&uuml;gbar sind. Wenn Sie keinen Namen angeben, wird als Cachename der Standardname
<span id="changed">|</span>"sharedcc_" verwendet, an den der aktuelle Benutzername angeh&auml;ngt wird.</li></ul></li>
<span id="changed">|</span><li><strong>verbose</strong>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Mit dieser Option kann eine ausf&uuml;hrliche Ausgabe zu E/A-Aktivit&auml;ten im Cache angezeigt werden. Dabei werden Informationen zu Klassen aufgelistet,
<span id="changed">|</span>die gespeichert und gefunden wurden. F&uuml;r jedes
<span id="changed">|</span>Klassenladeprogramm wird eine eindeutige ID vergeben (das
<span id="changed">|</span>Bootladeprogramm hat immer die ID 0), und in der Ausgabe ist
<span id="changed">|</span>die Funktionsweise der Hierarchie von Klassenladeprogrammen dargestellt.
<span id="changed">|</span>Die Klassenladeprogramme m&uuml;ssen bei den zugeh&ouml;rigen
<span id="changed">|</span>&uuml;bergeordneten Programmen eine Klasse anfordern, bevor sie diese selbst
<span id="changed">|</span>laden k&ouml;nnen. Es ist normal, dass zahlreiche fehlgeschlagene Anforderungen angezeigt werden. Dieses Verhalten wird in der Hierarchie von Klassenladeprogrammen erwartet. Beachten Sie, dass mit der Standardoption <strong>-verbose:class</strong> auch die
<span id="changed">|</span>ausf&uuml;hrliche Ausgabe f&uuml;r die gemeinsame Klassennutzung aktiviert wird, falls die gemeinsame Nutzung von Klassen aktiviert ist. </li></ul></li>
<span id="changed">|</span><li><strong>modified=</strong>&lt;<em>Ge&auml;nderter Inhalt</em>>
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Diese Option muss angegeben werden, wenn ein Bytecode-Agent
<span id="changed">|</span>installiert wurde, der m&ouml;glicherweise den Bytecode w&auml;hrend der Laufzeit
<span id="changed">|</span>&auml;ndert. Wenn Sie diese Option nicht angeben und ein Bytecode-Agent
<span id="changed">|</span>installiert ist, werden im Cache keine Klassen gespeichert oder
<span id="changed">|</span>gefunden. Bei der Angabe <em>&lt;Ge&auml;nderter Inhalt></em> handelt es sich um einen vom Benutzer
<span id="changed">|</span>ausgew&auml;hlten Deskriptor, z. B. "Meine&Auml;nderungen1". Hiermit wird der Cache so partitioniert, dass nur JVMs, die den
<span id="changed">|</span>Kontext "Meine&Auml;nderungen1" verwenden, dieselben Klassen gemeinsam
<span id="changed">|</span>nutzen k&ouml;nnen. Wenn Sie z. B. "HelloWorld" zusammen mit einem
<span id="changed">|</span>&Auml;nderungskontext ausf&uuml;hren und anschlie&szlig;end mit einem
<span id="changed">|</span>anderen &Auml;nderungskontext erneut ausf&uuml;hren, werden alle
<span id="changed">|</span>Klassen zweimal im Cache gespeichert.</li></ul></li>
<span id="changed">|</span><li><strong>destroy</strong> (Dienstprogrammoption)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>L&ouml;scht einen Cache unter Verwendung des Namens, der mit
<span id="changed">|</span>der Unteroption <strong>name=</strong>&lt;<em>Name</em>>
<span id="changed">|</span>angegeben wurde. Falls kein Name angegeben wird, wird der Standardcache gel&ouml;scht. Ein Cache kann nur gel&ouml;scht werden, wenn alle VMs, die
<span id="changed">|</span>diesen Cache verwenden, heruntergefahren wurden und der Benutzer &uuml;ber
<span id="changed">|</span>die erforderlichen Berechtigungen verf&uuml;gt.</li></ul></li>
<span id="changed">|</span><li><strong>destroyAll</strong> (Dienstprogrammoption)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Versucht, alle f&uuml;r den Benutzer verf&uuml;gbaren Caches zu
<span id="changed">|</span>l&ouml;schen. Ein Cache kann nur gel&ouml;scht werden, wenn alle VMs, die
<span id="changed">|</span>diesen Cache verwenden, heruntergefahren wurden und der Benutzer &uuml;ber
<span id="changed">|</span>die erforderlichen Berechtigungen verf&uuml;gt.</li></ul></li>
<span id="changed">|</span><li><strong>expire=</strong>&lt;<em>Zeit in Minuten</em>> (Dienstprogrammoption)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>L&ouml;scht alle Caches, die w&auml;hrend des angegebenen
<span id="changed">|</span>Zeitraums nicht verwendet wurden.</li></ul></li>
<span id="changed">|</span><li><strong>listAllCaches</strong> (Dienstprogrammoption)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Listet alle Caches im System auf und zeigt an, ob diese im Gebrauch sind und wann sie zum letzten Mal verwendet wurden.</li></ul></li>
<span id="changed">|</span><li><strong>printStats</strong> (Dienstprogrammoption)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Zeigt eine Zusammenfassung statistischer Daten zu dem
<span id="changed">|</span>Cache an, der &uuml;ber die Unteroption <strong>name=</strong>&lt;<em>Name</em>>
<span id="changed">|</span>angegeben wurde. Falls kein Name angegeben wird, werden statistische Daten zum
<span id="changed">|</span>Standardcache angezeigt. Zu den n&uuml;tzlichsten
<span id="changed">|</span>Informationen geh&ouml;ren die Angaben zur Speicherbelegung im Cache und die Anzahl der darin enthaltenen Klassen. Beachten Sie, dass es sich bei "veralteten" Klassen um Klassen handelt, die auf dem
<span id="changed">|</span>Dateisystem aktualisiert wurden und die der Cache daher mit "veraltet" gekennzeichnet hat. Veraltete Klassen werden nicht
<span id="changed">|</span>aus dem Cache gel&ouml;scht. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
<span id="changed">|</span>Guide</a>.</li></ul></li>
<span id="changed">|</span><li><strong>printAllStats</strong> (Dienstprogrammoption)
<span id="changed">|</span><ul class="simple">
<span id="changed">|</span><li>Zeigt ausf&uuml;hrliche Informationen zum Inhalt des Caches an,
<span id="changed">|</span>der in der Unteroption <strong>name=</strong>&lt;<em>Name</em>>
<span id="changed">|</span>angegeben wurde.
<span id="changed">|</span>Falls kein Name angegeben wird, werden statistische Daten zum
<span id="changed">|</span>Standardcache angezeigt.
<span id="changed">|</span>Alle Klassen werden in chronologischer
<span id="changed">|</span>Reihenfolge zusammen mit einem Verweis auf die Speicherposition
<span id="changed">|</span>aufgelistet, von der aus sie geladen wurden. Weitere Informationen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
<span id="changed">|</span>Guide</a>.</li></ul></li></ul></li></ul>
<span id="changed">|</span><a name="wq96"></a>
<span id="changed">|</span><h2 id="wq96"><a href="#ToC_90">Erstellen, Belegen, &Uuml;berwachen und L&ouml;schen eines Caches</a></h2>
<span id="changed">|</span><p>Zum Aktivieren der gemeinsamen Nutzung von Klassen m&uuml;ssen Sie
<span id="changed">|</span>die Angabe <strong>-Xshareclasses[:name=&lt;Name>]</strong> in
<span id="changed">|</span>der Befehlszeile Ihrer Anwendung hinzuf&uuml;gen. VM stellt
<span id="changed">|</span>dann entweder eine Verbindung zu einem vorhandenen Cache mit dem
<span id="changed">|</span>angegebenen Namen her oder erstellt einen neuen Cache mit diesem
<span id="changed">|</span>Namen. Wenn ein neuer Cache erstellt wurde, wird dieser mit allen
<span id="changed">|</span>Boot- und Anwendungsklassen gef&uuml;llt, die geladen wurden, bis der Cache voll wird. Sollten
<span id="changed">|</span>zwei oder mehr VMs gleichzeitig gestartet werden, schreiben diese
<span id="changed">|</span>gleichzeitig Daten in den Cache. </p>
<span id="changed">|</span><p>Wenn Sie &uuml;berpr&uuml;fen m&ouml;chten, ob der Cache erstellt wurde, f&uuml;hren
<span id="changed">|</span>Sie den Befehl <tt class="xph">java -Xshareclasses:listAllCaches</tt> aus. Sie m&uuml;ssen den Befehl <tt class="xph">java -Xshareclasses:[name=&lt;Name>],printStats</tt> ausf&uuml;hren, um anzuzeigen, wie viele Klassen und Klassendaten gemeinsam genutzt werden. (Diese Dienstprogramme k&ouml;nnen entweder nach der Beendigung der
<span id="changed">|</span>Anwendungs-VM oder in einem anderen Befehlsfenster ausgef&uuml;hrt werden.)</p>
<span id="changed">|</span><p>Wenn Sie Klassen anzeigen m&ouml;chten, die in den Cache
<span id="changed">|</span>geladen oder im Cache gespeichert wurden, f&uuml;gen Sie in der
<span id="changed">|</span>Befehlszeile Ihrer Anwendung <tt class="xph">-Xshareclasses:[name=&lt;Name>],verbose</tt>
<span id="changed">|</span>hinzu.</p>
<span id="changed">|</span><p>Zum L&ouml;schen des zuvor erstellten Caches f&uuml;hren Sie den Befehl
<span id="changed">|</span><tt class="xph">java -Xshareclasses:[name=&lt;Name>],delete</tt> aus. Caches m&uuml;ssen normalerweise nur dann gel&ouml;scht werden, wenn sie
<span id="changed">|</span>zahlreiche veraltete Klassen enthalten bzw. wenn der Cache voll
<span id="changed">|</span>ist und Sie einen gr&ouml;&szlig;eren Cache erstellen m&ouml;chten. </p>
<span id="changed">|</span><p>Es wird empfohlen, die Cachegr&ouml;&szlig;e f&uuml;r Ihre spezielle Anwendung zu optimieren, da die Standardeinstellung sehr wahrscheinlich nicht die optimale Gr&ouml;&szlig;e angibt. Am besten ermitteln Sie die optimale Cachegr&ouml;&szlig;e, indem Sie einen gro&szlig;en Cache (mit <strong>-Xscmx</strong>) angeben, die Anwendung ausf&uuml;hren und dann mit <strong>printStats</strong> ermitteln, wie viele Klassendaten gespeichert wurden. Addieren Sie f&uuml;r alle F&auml;lle einen kleinen Betrag zu dem in <strong>printStats</strong> angezeigten Wert hinzu. Da Klassen jederzeit w&auml;hrend der Lebensdauer von VM geladen werden k&ouml;nnen, empfiehlt es sich, diese Analyse nach Beendigung der Anwendung durchzuf&uuml;hren. Da jedoch ein voller Cache keine negativen Auswirkungen auf die Leistung oder Funktionalit&auml;t von VMs hat, die mit diesem Cache verbunden sind, k&ouml;nnen Sie auch eine kleinere als die erforderliche Cachegr&ouml;&szlig;e ausw&auml;hlen.</p>
<span id="changed">|</span><p>Wenn ein Cache voll wird, wird eine entsprechende Nachricht in der Befehlszeile aller VMs angezeigt, die diesen Cache verwenden. Diese VMs laden dann weitere Klassen in ihren eigenen Prozessspeicher. Die in einem vollen Cache enthaltenen
<span id="changed">|</span>Klassen k&ouml;nnen weiterhin gemeinsam genutzt werden, der volle
<span id="changed">|</span>Cache ist jedoch schreibgesch&uuml;tzt und kann nicht mit neuen
<span id="changed">|</span>Klassen aktualisiert werden.</p>
<span id="changed">|</span><a name="wq97"></a>
<span id="changed">|</span><h2 id="wq97"><a href="#ToC_91">Leistung und Speicherbelegung</a></h2>
<span id="changed">|</span><p>Die gemeinsame Nutzung von Klassen empfiehlt sich
<span id="changed">|</span>insbesondere auf Systemen, auf denen mit mehreren VMs
<span id="changed">|</span>gearbeitet wird, die &auml;hnlichen Code ausf&uuml;hren. Diese Systeme profitieren von der
<span id="changed">|</span>geringeren virtuellen Speicherbelegung. Au&szlig;erdem ist die gemeinsame Nutzung von Klassen auf Systemen sinnvoll, auf denen VMs h&auml;ufig
<span id="changed">|</span>gestartet und heruntergefahren werden. Auf diesen Systemen
<span id="changed">|</span>verk&uuml;rzt sich dadurch der Zeitraum f&uuml;r den Systemstart. </p>
<span id="changed">|</span><p>Der Aufwand f&uuml;r das Erstellen und Belegen eines neuen Caches
<span id="changed">|</span>ist minimal. Wenn Sie die gemeinsame Nutzung von Klassen verwenden, aber nur eine einzige VM starten, dauert der Startvorgang 0 bis 5 % l&auml;nger als der Startvorgang einer VM, die die gemeinsame Nutzung von Klassen nicht verwendet. Wenn Sie die gemeinsame Nutzung von Klassen verwenden und zwei VMs starten, l&auml;dt die zweite VM 10 bis 40 % schneller als eine VM, die die gemeinsame Nutzung von Klassen nicht verwendet. Dies h&auml;ngt vom Betriebssystem
<span id="changed">|</span>und der Anzahl geladener Klassen ab. Bei mehreren gleichzeitig ablaufenden VMs ergeben sich gr&ouml;&szlig;ere Verk&uuml;rzungen bei der Startzeit.</p>
<span id="changed">|</span><p>Wenn bei der Ausf&uuml;hrung Ihrer Anwendung die gemeinsame
<span id="changed">|</span>Nutzung von Klassen aktiviert ist, k&ouml;nnen Sie mit Hilfe von
<span id="changed">|</span>Betriebssystemtools die Verringerung der virtuellen Speicherbelegung anzeigen.</p>
<span id="changed">|</span><a name="wq98"></a>
<span id="changed">|</span><h2 id="wq98"><a href="#ToC_92">Einschr&auml;nkungen und besondere Aspekte bei der gemeinsamen Nutzung von Klassen</a></h2>
<span id="changed">|</span><a name="cachesizelimits"></a>
<span id="changed">|</span><h3 id="cachesizelimits"><a href="#ToC_93">Grenzwerte f&uuml;r die Cachegr&ouml;&szlig;e</a></h3>
<span id="changed">|</span><p>Die maximale theoretische Cachegr&ouml;&szlig;e betr&auml;gt 2 GB. Der Cache wird durch die folgenden Faktoren begrenzt:</p>
<span id="changed">|</span><p></p>
<span id="changed">|</span><ul>
<span id="changed">|</span><li>Verf&uuml;gbarer Plattenspeicherplatz. Auf der Platte wird eine Datei im Verzeichnis "javasharedresources" unter dem Benutzerprofil erstellt, in der die Klassendaten gespeichert werden. Das Verzeichnis "javasharedresources" befindet sich in der Regel unter "C:\Dokumente und Einstellungen\&lt;Benutzername>\Anwendungsdaten\".
<span id="changed">|</span>Die erstellte Datei wird bei jedem Neustart von Windows gel&ouml;scht.</li>
<span id="changed">|</span><li>Verf&uuml;gbarer virtueller Adressraum. Da der virtuelle Adressraum eines Prozesses vom Cache f&uuml;r gemeinsam genutzteKlassen und dem Java-Freispeicher gemeinsam genutzt wird, verringert sich bei Erh&ouml;hung der maximalen Gr&ouml;&szlig;e des Java-Freispeichers die Gr&ouml;&szlig;e des Caches f&uuml;r gemeinsam genutzte Klassen, den Sie erstellen k&ouml;nnen.</li></ul>
<span id="changed">|</span><a name="runtimebytecode"></a>
<span id="changed">|</span><h3 id="runtimebytecode"><a href="#ToC_94">&Auml;nderungen bei Laufzeitbytecodes</a></h3>
<span id="changed">|</span><p>Damit VMs, die einen JVMTI-Agenten verwenden, mit dem Bytecode
<span id="changed">|</span>ge&auml;ndert werden kann, die gemeinsame Nutzung von Klassen
<span id="changed">|</span>erm&ouml;glicht wird, muss in der Befehlszeile die Unteroption
<span id="changed">|</span>modified=&lt;Ge&auml;nderter Kontext> verwendet werden (siehe oben). Bei dem ge&auml;nderten Kontext handelt es sich um einen benutzerdefinierten Deskriptor, der die Art der durchgef&uuml;hrten &Auml;nderung beschreibt. Alle VMs, die einen bestimmten ge&auml;nderten Kontext
<span id="changed">|</span>verwenden, m&uuml;ssen den Bytecode f&uuml;r jede Klasse in einer berechenbaren,
<span id="changed">|</span>wiederholt anwendbaren Weise &auml;ndern, so dass die im Cache gespeicherten,
<span id="changed">|</span>ge&auml;nderten Klassen die erwarteten &Auml;nderungen aufweisen,
<span id="changed">|</span>wenn sie von einer anderen VM geladen werden. Der Grund daf&uuml;r,
<span id="changed">|</span>dass alle &Auml;nderungen berechenbar sein m&uuml;ssen, besteht darin, dass
<span id="changed">|</span>Klassen, die aus dem Cache f&uuml;r gemeinsam genutzte Klassen geladen
<span id="changed">|</span>wurden, nicht &uuml;ber den Agenten erneut ge&auml;ndert werden k&ouml;nnen. Ge&auml;nderter
<span id="changed">|</span>und nicht ge&auml;nderter Bytecode kann im selben Cache gespeichert
<span id="changed">|</span>werden. Weitere Informationen hierzu finden Sie im Handbuch
<span id="changed">|</span><a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics Guide</a>.</p>
<span id="changed">|</span><a name="wq99"></a>
<span id="changed">|</span><h3 id="wq99"><a href="#ToC_95">Betriebssystemeinschr&auml;nkungen</a></h3>
<span id="changed">|</span><p>Bei Betriebssystemen, die sowohl
<span id="changed">|</span>32-Bit-Anwendungen als auch 64-Bit-Anwendungen ausf&uuml;hren k&ouml;nnen, ist
<span id="changed">|</span>die gemeinsame Nutzung von Klassen zwischen VMs mit 32 Bit und 64 Bit
<span id="changed">|</span>nicht zul&auml;ssig.
<span id="changed">|</span>Mit der Unteroption <strong>listAllCaches</strong> werden je
<span id="changed">|</span>nach Adressmodus der verwendeten VM 32-Bit- oder 64-Bit-Caches
<span id="changed">|</span>aufgelistet.</p>
<span id="changed">|</span><p>Der Cache f&uuml;r gemeinsam genutzte Klassen ben&ouml;tigt
<span id="changed">|</span>Plattenspeicherplatz zum Speichern von ID-Informationen zu den Caches auf dem System. Diese
<span id="changed">|</span>Informationen sind im Verzeichnis mit dem Benutzerprofil enthalten.  Wenn das Verzeichnis mit
<span id="changed">|</span>den ID-Informationen gel&ouml;scht wird, kann VM die gemeinsam
<span id="changed">|</span>genutzten Klassen auf dem System nicht identifizieren und muss den Cache erneut
<span id="changed">|</span>erstellen. </p>
<span id="changed">|</span><p>Die Berechtigungen f&uuml;r den Zugriff auf einen Cache f&uuml;r gemeinsam genutzte Klassen werden vom Betriebssystem umgesetzt. Falls kein Cachename angegeben wird, wird der
<span id="changed">|</span>Benutzername an den Standardnamen angeh&auml;ngt, damit mehrere Benutzer
<span id="changed">|</span>auf demselben System standardm&auml;&szlig;ig eigene Caches erstellen.</p>
<span id="changed">|</span><a name="usingsharedclasspermissions"></a>
<span id="changed">|</span><h3 id="usingsharedclasspermissions"><a href="#ToC_96">Verwenden von SharedClassPermission</a></h3>
<span id="changed">|</span><p>Wenn ein Sicherheitsmanager zusammen mit der gemeinsamen Nutzung von Klassen verwendet wird und die ausgef&uuml;hrte Anwendung ihre eigenen Klassenladeprogramme verwendet, m&uuml;ssen diesen Klassenladeprogrammen Berechtigungen zur gemeinsamen Nutzung von Klassen erteilt werden, bevor sie Klassen gemeinsam nutzen k&ouml;nnen. F&uuml;gen Sie der Datei java.policy Berechtigungen zur gemeinsamen Nutzung von Klassen unter Verwendung des Klassennamens des Klassenladeprogramms (Platzhalterzeichen sind zul&auml;ssig) und "read", "write" oder "read,write" zur Angabe der erteilten Zugriffsberechtigung hinzu.
<span id="changed">|</span>Beispiel:</p>
<span id="changed">|</span><pre class="xmp">permission com.ibm.oti.shared.SharedClassPermission "com.abc.customclassloaders.*", "read,write";</pre><p class="indatacontent">Wenn ein Klassenladeprogramm nicht die korrekten Berechtigungen hat und versucht, Klassen gemeinsam zu nutzen, wird die Ausnahmebedingung <strong>AccessControlException</strong> ausgel&ouml;st. Sie k&ouml;nnen die Berechtigungen der Klassenladeprogramme f&uuml;r das Standardbootprogramm, f&uuml;r Anwendungen oder Erweiterungen nicht &auml;ndern oder verringern.</p>
<span id="changed">|</span><a name="adaptingclassloaders"></a>
<span id="changed">|</span><h2 id="adaptingclassloaders"><a href="#ToC_97">Anpassen benutzerdefinierter Klassenladeprogramme an gemeinsam genutzte Klassen</a></h2>
<span id="changed">|</span><p>Die meisten Java-Anwendungen verwenden die Klassenladeprogramme
<span id="changed">|</span>von VM oder verf&uuml;gen &uuml;ber benutzerdefinierte Klassenladeprogramme,
<span id="changed">|</span>die eine Erweiterung zu java/net/URLClassLoader darstellen. Anwendungen,
<span id="changed">|</span>die diese Klassenladeprogramme verwenden, k&ouml;nnen automatisch Boot- und Anwendungsklassen gemeinsam nutzen.
<span id="changed">|</span>Benutzerdefinierte Klassenladeprogramme, die keine Erweiterung
<span id="changed">|</span>zu java/net/URLClassLoader darstellen, m&uuml;ssen bearbeitet werden, um
<span id="changed">|</span>mit der gemeinsamen Nutzung von Klassen arbeiten zu k&ouml;nnen. Allen benutzerdefinierten Klassenladeprogrammen m&uuml;ssen Berechtigungen zur gemeinsamen Nutzung von Klassen erteilt werden, wenn ein Sicherheitsmanager verwendet wird. Weitere Informationen hierzu finden Sie im Abschnitt <a href="#usingsharedclasspermissions">Verwenden von SharedClassPermission</a>. IBM
<span id="changed">|</span>bietet mehrere Java-Schnittstellen f&uuml;r verschiedene Typen von
<span id="changed">|</span>benutzerdefinierten Klassenladeprogrammen, mit denen die
<span id="changed">|</span>Programme im Cache f&uuml;r gemeinsam genutzte Klassen nach Klassen suchen
<span id="changed">|</span>und diese speichern k&ouml;nnen. Diese Klassen befinden sich im Paket "com.ibm.oti.shared". Die Javadoc-Komponente f&uuml;r dieses Paket wird mit SDK in der Datei <strong>docs/apidoc.zip</strong> mitgeliefert. Weitere Informationen zur Verwendung
<span id="changed">|</span>dieser Schnittstellen finden Sie im Handbuch <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html">Diagnostics
<span id="changed">|</span>Guide</a>.</p></font>
<a name="wq100"></a>
<h1 id="wq100"><a href="#ToC_98">Service und Unterst&uuml;tzung f&uuml;r unabh&auml;ngige Softwareanbieter</a></h1>
<p> Falls Sie berechtigt sind, Serviceleistungen f&uuml;r den Programmcode des Programms 'IBM Solutions Developer Program' in Anspruch zu nehmen, gehen Sie hierbei wie gewohnt vor,
oder rufen Sie das Programm im Internet unter folgender Adresse auf: <a href="http://www.ibm.com/partnerworld/">http://www-1.ibm.com/partnerworld/</a>.</p>
<p>Wenn Sie einen Servicevertrag (z. B. f&uuml;r IBM Personal Systems Support Line oder f&uuml;r einen vergleichbaren, in Ihrem Land verf&uuml;gbaren Service) unterzeichnet haben, ist in den Vertragsbedingungen dieses Servicevertrags festgelegt, welche Services Sie - falls verf&uuml;gbar - gem&auml;&szlig; dem o g. Programm in Anspruch nehmen d&uuml;rfen. </p>
<a name="wq101"></a>
<h1 id="wq101"><a href="#ToC_99">Eingabehilfen</a></h1>
<p>Die Benutzerhandb&uuml;cher, die zusammen mit SDK und Runtime Environment geliefert werden, wurden mit Hilfe von Sprachausgabeprogrammen getestet. Sie k&ouml;nnen ein Sprachausgabeprogramm, wie z.&nbsp;B. Home
Page Reader oder das JAWS-Sprachausgabeprogramm, zusammen mit diesen Benutzerhandb&uuml;chern verwenden.</p>
<p>Verwenden Sie zum &Auml;ndern der Schriftgr&ouml;&szlig;en in den Benutzerhandb&uuml;chern die Funktion, die in Ihrem Browser enthalten ist. Sie finden diese Funktion normalerweise im Men&uuml; <strong>Ansicht</strong>.</p>
<p>Benutzer, die &uuml;ber die Tastatur navigieren m&uuml;ssen, finden unter "Swing Key Bindings" (<a href="http://www-128.ibm.com/developerworks/java/jdk/additional/">http://www-128.ibm.com/developerworks/java/jdk/additional/</a>) eine Beschreibung von n&uuml;tzlichen Tastatureingaben f&uuml;r Swing-Anwendungen. </p>
<a name="ikeycmd"></a>
<h2 id="ikeycmd"><a href="#ToC_100">iKeyman-Eingabehilfen</a></h2>
<p><font color="red"><span id="changed">|</span>Zus&auml;tzlich zur GUI verf&uuml;gt das iKeyman-Tool &uuml;ber das Befehlszeilentool <strong>IKEYCMD</strong>, das dieselben Funktionen wie die iKeyman-GUI aufweist. Mit <strong>IKEYCMD</strong> k&ouml;nnen Sie Schl&uuml;ssel, Zertifikate und Zertifikatsanforderungen verwalten. Sie k&ouml;nnen <strong>IKEYCMD</strong> &uuml;ber native Shell-Scripts und Programme aufrufen, die verwendet werden sollen, wenn Anwendungen benutzerdefinierte Schnittstellen zu Zertifikaten und wichtigen Verwaltungstasks hinzuf&uuml;gen m&uuml;ssen. <strong>IKEYCMD</strong> kann f&uuml;r alle Typen, die zurzeit von iKeyman unterst&uuml;tzt werden, Schl&uuml;sseldateien erstellen. <strong>IKEYCMD</strong> kann auch Zertifikatsanforderungen erstellen, CA-signierte Zertifikate importieren und selbstsignierende Zertifikate verwalten. </font></p>
<p>Geben Sie zum Ausf&uuml;hren eines <strong>IKEYCMD</strong>-Befehls Folgendes ein:</p>
<pre class="xmp">java [-Dikeycmd.properties=&lt;Merkmaldatei>]com.ibm.gsk.ikeyman.ikeycmd
&lt;Objekt> &lt;Aktion> [Optionen]</pre><p class="indatacontent">Dabei gilt Folgendes:</p>
<dl>
<dt class="bold">&lt;Objekt></dt>
<dd>steht f&uuml;r Folgendes:
<dl>
<dt class="bold">-keydb</dt>
<dd>Aktionen, die f&uuml;r die Schl&uuml;sseldatenbank ausgef&uuml;hrt werden (eine CMS-Schl&uuml;sseldatei, eine WebDB-Schl&uuml;sselringdatei oder SSLight-Klasse).
</dd>
<dt class="bold">-cert</dt>
<dd>Aktionen, die f&uuml;r ein Zertifikat in einer Schl&uuml;sseldatenbank ausgef&uuml;hrt werden sollen.
</dd>
<dt class="bold">-certreq</dt>
<dd>Aktionen, die f&uuml;r eine Zertifikatsanforderung in einer Schl&uuml;sseldatenbank ausgef&uuml;hrt werden sollen.
</dd>
<dt class="bold">-version</dt>
<dd>Zeigt Versionsinformationen f&uuml;r <strong>IKEYCMD</strong> an.
</dd>
<dt class="bold">-help</dt>
<dd>Zeigt einen Hilfetext f&uuml;r die <strong>IKEYCMD</strong>-Aufrufe an.
</dd>
</dl>
</dd>
<dt class="bold">&lt;Aktion></dt>
<dd><font color="red"><span id="changed">|</span>Die Aktion, die f&uuml;r das Objekt ausgef&uuml;hrt werden soll. Wenn Sie die verf&uuml;gbaren Aktionen f&uuml;r ein Objekt anzeigen wollen, rufen Sie <strong>IKEYCMD</strong> auf, wobei nur das Objekt als Argument &uuml;bergeben wird. In der kontextbezogenen Hilfe werden die verf&uuml;gbaren Aktionen f&uuml;r dieses Objekt angezeigt.</font>
</dd>
<dt class="bold">-Dikeycmd.properties</dt>
<dd>Gibt den Namen einer optionalen Merkmaldatei an, die f&uuml;r diesen Java-Aufruf verwendet werden soll. Die Standardmerkmaldatei ikeycmd.properties wird als Musterdatei zur Verf&uuml;gung gestellt, die ge&auml;ndert und von einer beliebigen Java-Anwendung verwendet werden kann.
</dd>
</dl>
<a name="wq102"></a>
<div class="notetitle" id="wq102">Anmerkung:</div>
<div class="notebody">Die Objekt- und Aktionsschl&uuml;sselw&ouml;rter m&uuml;ssen in der angegebenen Reihenfolge aufgef&uuml;hrt sein. Optionen sind jedoch nicht positionsgebunden und k&ouml;nnen in beliebiger Reihenfolge aufgef&uuml;hrt werden, sofern sie als Option und Operandenpaar angegeben werden.</div>
<p>Weitere Informationen finden Sie im Handbuch "iKeyman User Guide" unter <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>.</p>
<a name="wq103"></a>
<h2 id="wq103"><a href="#ToC_101">Verschieben des Eingabefokus von JComboBox-Komponenten in Swing per Tastatur</a></h2>
<p>Beim Bl&auml;ttern in der Dropdown-Liste einer JComboBox-Komponente mit den Cursortasten kann der Wert mit Hilfe des Knopfs oder des editierbaren Felds des Kombinationsfelds nicht ge&auml;ndert werden, solange ein Element ausgew&auml;hlt ist. Mit diesem f&uuml;r dieses Release gew&uuml;nschten Verhalten verbessern sich Eingabehilfen und Benutzerfreundlichkeit, da sichergestellt wird, dass das Verschieben des Eingabefokus per Tastatur dem Verschieben des Eingabefokus per Maus entspricht.</p>
<a name="wq104"></a>
<h2 id="wq104"><a href="#ToC_102">Web Start-Eingabehilfen</a></h2>
<p>In IBM Java Web Start V5.0 wurden im Vergleich zum vorherigen Release Eingabehilfen und Benutzerfreundlichkeit verbessert. Dazu geh&ouml;ren z.&nbsp;B. eine bessere Unterst&uuml;tzung f&uuml;r Sprachausgabeprogramme und eine bessere Navigation &uuml;ber die Tastatur.</p>
<p>Sie k&ouml;nnen die Befehlszeile nur zum Starten einer Java-Anwendung verwenden, die f&uuml;r Web Start aktiviert ist. Zum &Auml;ndern von Einstellungsoptionen m&uuml;ssen Sie die Konfigurationsdatei <strong>Application Data\IBM\Java\Deployment\deployment.properties</strong> im Ausgangsverzeichnis des Benutzers editieren. Sichern Sie die Datei, bevor Sie sie editieren. Nicht alle Einstellungen, die in Java Application Cache Viewer festgelegt werden k&ouml;nnen, sind in der Konfigurationsdatei verf&uuml;gbar.</p>
<a name="wq105"></a>
<h1 id="wq105"><a href="#ToC_103">Allgemeine Hinweise zu Sicherheitsfunktionen</a></h1>
<p>Uneingeschr&auml;nkte JCE-Richtliniendateien finden Sie unter <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>. Auf dieser Website finden Sie auch die Dokumentation zu den IBM Sicherheitspaketen
JCE, JCEFIPS, JSSE2, JSSEFIPS, JGSS und JAAS sowie zur Hardwareverschl&uuml;sselung.</p>
<a name="wq106"></a>
<h1 id="wq106"><a href="#ToC_104">Bekannte Einschr&auml;nkungen</a></h1>
<p>In IBM 32-bit SDK for Windows, v5.0 sind folgende Einschr&auml;nkungen zu beachten:</p>
<ul>
<li>IBM 32-bit SDK for Windows, v5.0 unterst&uuml;tzt
folgende L&auml;ndereinstellungen:
<ul>
<li>Bengali (bn_IN)</li>
<li>Malayalam (ml_IN)</li>
<li>Oriya (or_IN)</li></ul>Die Schriftarten f&uuml;r diese L&auml;ndereinstellungen funktionieren jedoch m&ouml;glicherweise nicht zusammen mit AWT-Komponenten.
<p></p></li>
<li>IBM 32-bit SDK for Windows, v5.0 unterst&uuml;tzt IPv6. <span><font color="red"><span id="changed">|</span>Da die derzeitige IPv6-Unterst&uuml;tzung unter Windows nicht &uuml;ber die Dual-Stack-F&auml;higkeit verf&uuml;gt,
<span id="changed">|</span>emuliert SDK das Dual-Stack-Verhalten auf einem System mit IPv6. Ihre Java-Anwendung
<span id="changed">|</span>verwendet je nach Emulation m&ouml;glicherweise bis zu doppelt so viele Sockets. Wenn Sie diese Emulation inaktivieren m&ouml;chten, m&uuml;ssen Sie die IPv6-Unterst&uuml;tzung in SDK
<span id="changed">|</span>inaktivieren. Setzen Sie dazu das Systemmerkmal <strong>java.net.preferIPv4Stack</strong> auf <tt class="xph">true</tt>.</font></span>
<p></p></li>
<li>Wenn Sie mit einem Editor f&uuml;r Eingabemethoden (Input Method
Editor, IME) arbeiten, sollten Sie die Zeichenzusammensetzung beendet
und die Kandidaten ausgew&auml;hlt haben, bevor Sie den Arbeitsbereich f&uuml;r
weitere Verarbeitungen verwenden.
<p></p></li>
<li>Das Erstellen von besonders langen DSA-Schl&uuml;sselpaaren kann auf
langsamen Maschinen sehr lange dauern. Verz&ouml;gerungen bedeuten hierbei nicht, dass es zu einem
Systemabsturz gekommen ist. Der Prozess wird stattdessen
abgeschlossen, wenn gen&uuml;gend Zeit einger&auml;umt wird. Der Algorithmus f&uuml;r die Generierung von DSA-Schl&uuml;sseln wurde optimiert, um
Schl&uuml;ssel mit Standardl&auml;ngen (z.&nbsp;B. 512 oder 1024) schneller zu
generieren als andere.
<p></p></li>
<li>Pers&ouml;nliche Firewalls k&ouml;nnen zu Fehlern im
Windows NIO-Code f&uuml;hren, sodass bestimmte Operationen fehlschlagen. Der Methodenaufruf <strong>Selector.open()</strong> kann z. B. zu der Ausnahmebedingung
<tt class="xph">java.io.IOException: Unable to establish loopback connection</tt> mit der Ursache
<tt class="xph">java.net.ConnectException: Connection refused: connect</tt> f&uuml;hren. Die Ausnahmebedingung wird durch das Betriebssystem beim Herstellen der Verbindung zu einem Port
verursacht, der von der Firewall blockiert wird. JVM versucht, die Verbindung erneut herzustellen, wobei das Betriebssystem eine andere Portnummer verwenden soll. Falls die Verbindung auch nach mehreren
Versuchen nicht hergestellt werden kann, wird die Ausnahmebedingung <tt class="xph">ConnectException</tt> angezeigt.
<p>Wenn diese Ausnahmebedingung angezeigt wird, k&ouml;nnen Sie durch Festlegen des Systemmerkmals
<strong>java.nio.debug=pipe</strong> anzeigen, welche Portnummern blockiert werden.</p></li>
<li>Wenn ein Benutzer bei der Verwendung von IME Text in TextArea von AWT eingibt, und anschlie&szlig;end die Gr&ouml;&szlig;e des Anwendungsfensters <em>vor</em> dem Festschreiben des Texts &auml;ndert, wird der Text automatisch festgeschrieben.
<p></p></li>
<li>Unter Windows 2000 und Windows XP ist der
Standardwert f&uuml;r die Anzahl Dateien, die gleichzeitig ge&ouml;ffnet
sein k&ouml;nnen, zu klein. Dies kann zu Fehlern bei E/A-intensiven
Anwendungen f&uuml;hren. Wenn Sie diese Einschr&auml;nkung beheben m&ouml;chten,
m&uuml;ssen Sie in der Datei &lt;windows>\system32\CONFIG.NT folgende
Werte angeben:
<ul>
<li><tt class="xph">files=200</tt></li>
<li><tt class="xph">buffers=60</tt></li></ul>&lt;windows> ist hierbei das Verzeichnis, in dem Windows installiert wurde.
<p></p></li>
<li>Der DirectDraw-Mechanismus von JVM zeichnet unter Windows 2000 bei einer Bildtiefe von 32 Bit den Bereich unter dem Mauszeiger nicht nach. Dadurch werden in Men&uuml;s in den Bereichen graue
oder schwarze Quadrate angezeigt, &uuml;ber die der Mauszeiger bewegt
wurde. Zum Vermeiden dieses Effekts, m&uuml;ssen Sie entweder DirectDraw
inaktivieren (<tt>-Dsun.java2d.noddraw</tt>) oder
f&uuml;r die Aufl&ouml;sung der Anzeigenfarbe einen anderen Wert (z. B. 256
Farben) festlegen.
<p></p></li>
<li>Wenn Sie die native Bibliothek PKCS 11 auf JVM Version 1.4.x installieren, m&uuml;ssen Sie die Bibliothek zusammen mit den anderen nativen JRE-Bibliotheken in das JRE-Verzeichnis "bin" stellen.
<p></p></li>
<li>Der NIO-Aufruf <strong>SocketChannel finishConnect()</strong> gibt entweder <tt class="xph">true</tt> (der Kanal ist verbunden),
<tt class="xph">false</tt> (der Prozess zum Herstellen der Verbindung ist noch nicht
abgeschlossen) oder eine Ausnahmebedingung zur&uuml;ck. Unter Windows
2000 wird bei Verwendung nicht geblockter Verbindungen selbst
dann <tt class="xph">false</tt> zur&uuml;ckgegeben, wenn ein zuvor durchgef&uuml;hrter
Java-Aufruf <strong>select()</strong> angezeigt hat, dass ein
Kanal f&uuml;r die Verarbeitung zur Verf&uuml;gung steht. 
<p></p></li>
<li>Sie k&ouml;nnen den Stackbereich des Java-Hauptthreads (wird auch als
"urspr&uuml;nglicher Thread" bezeichnet) w&auml;hrend der Ausf&uuml;hrung nicht &auml;ndern. Der Hauptthread hat eine feste Gr&ouml;&szlig;e von 256 KB, die im Hinblick auf die Leistung als optimale
Gr&ouml;&szlig;e ermittelt wurde. Mit der Option <strong>-Xss</strong> k&ouml;nnen Sie den Stackbereich
in allen Threads au&szlig;er dem Hauptthread &auml;ndern. Auf Grund der festen Gr&ouml;&szlig;e des Hauptthreads
empfiehlt es sich, nicht zu h&auml;ufig rekursive Vorg&auml;nge durchzuf&uuml;hren,
da beim Hauptthread h&auml;ufiger Stack&uuml;berl&auml;ufe auftreten als bei anderen Threads.
<p></p></li>
<li>Wenn Sie Doppelbytezeichen in JTextArea, JTextField oder JFileChooser eingeben, kann das Wechseln von einigen chinesischen IMEs (besonders Chinese Internal Code und Zhengma) zu Intelligent ABC IME dazu f&uuml;hren, dass ein Kernspeicherauszug erzeugt wird.
<p></p></li>
<li>F&uuml;r Benutzer der tschechischen Version wird in der Anzeige
zur Sprachauswahl des Installationsprogramms ein &uuml;bersetzter Eintrag
in einer Installation angezeigt, die ansonsten nicht &uuml;bersetzt ist. Diese Einschr&auml;nkung wird vom Installationsprogramm verursacht. Diese Zeichenfolge wird aus dem Betriebssystem basierend auf der
Codepage &uuml;bernommen. Da sowohl Polnisch (in diese Sprache wurde
die Installation &uuml;bersetzt) als auch Tschechisch die Codepage 1250
haben, versucht das Installationsprogramm, eine Sprachenliste f&uuml;r
beide Sprachen aus dem System abzurufen. Dies f&uuml;hrt zu dieser
Zeichenfolge in der Sprachenliste.
<p></p></li>
<li>Wenn Sie traditionelles Chinesisch verwenden, leiten Sie die Ausgabe Ihrer Java-Anwendung nicht direkt in den Befehl <strong>more</strong> um. Leiten Sie die Ausgabe stattdessen in eine tempor&auml;re Datei, und
zeigen Sie die Datei separat an.

<p></p></li>
<li>Benutzer der katalanischen Version sollten die Schriftart Lucida Console verwenden, um fehlerhafte Gro&szlig;buchstaben mit Akzent zu vermeiden. Dies betrifft nur Benutzer von Windows 2000. 
<p></p></li></ul>
<a name="rcf"></a>
<h1 id="rcf"><a href="#ToC_105">Kommentare zu diesem Handbuch</a></h1>
<p>Wenn Sie Ihren Kommentar zur Zweckm&auml;&szlig;igkeit oder zu anderen Eigenschaften dieses
Benutzerhandbuchs mitteilen m&ouml;chten, k&ouml;nnen Sie sich &uuml;ber eine der im Folgenden aufgef&uuml;hrten
M&ouml;glichkeiten an uns wenden.
Beachten Sie, dass diese Mitteilungswege nicht eingerichtet wurden, um technische Fragen zu
beantworten. Sie sind nur f&uuml;r Kommentare zur Dokumentation bestimmt. Senden Sie Ihre Kommentare an folgende Adresse:</p>
<ul>
<li>Per E-Mail: idrcf@hursley.ibm.com</li>
<li>Per Fax: 
<ul>
<li>Von Gro&szlig;britannien: 01962 842327 </li>
<li>Von anderen L&auml;ndern: &lt;Internationaler Code&gt;44 1962 842327 </li></ul> </li>
<li>Per Post:
<div class="lines">IBM United Kingdom Ltd<br />
User Technologies, <br />
Mail Point 095&nbsp;&nbsp;&nbsp;<br />
Hursley Park&nbsp;&nbsp;&nbsp;<br />
Winchester&nbsp;&nbsp;&nbsp;<br />
Hampshire&nbsp;&nbsp;&nbsp;<br />
SO21 2JN<br />
United Kingdom <br />
</div></li></ul>
<p><strong>Das Kleingedruckte.</strong> Wenn Sie eine Nachricht an IBM senden, erkl&auml;ren
Sie sich einverstanden, dass alle in Ihrer Nachricht enthaltenen Informationen, einschlie&szlig;lich
der R&uuml;ckmeldedaten, wie beispielsweise Fragen, Kommentare, Anregungen o.&nbsp;&Auml;., nicht vertraulich
behandelt werden und dass IBM keinerlei Verpflichtungen in Bezug auf diese Informationen hat
und diese uneingeschr&auml;nkt abdrucken, verwenden, ver&ouml;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&auml;nkt und f&uuml;r beliebige Zwecke verwenden, u.&nbsp;a.
f&uuml;r die Entwicklung, die Produktion und das Marketing von Produkten, die diese Informationen
enthalten. </p>
<a name="notices"></a>
<h1 id="notices"><a href="#ToC_106">Bemerkungen</a></h1>
<p> Die vorliegenden Informationen wurden f&uuml;r Produkte und Services
entwickelt, die auf dem deutschen Markt angeboten werden. M&ouml;glicherweise bietet IBM die in dieser Dokumentation beschriebenen Produkte, Services oder Komponenten in anderen L&auml;ndern nicht an. Informationen &uuml;ber die gegenw&auml;rtig im jeweiligen Land verf&uuml;gbaren
Produkte und Services sind beim IBM Ansprechpartner erh&auml;ltlich.
Hinweise auf IBM Lizenzprogramme oder andere IBM Produkte bedeuten nicht,
dass nur Programme, Produkte oder Services von IBM
verwendet werden k&ouml;nnen. An Stelle der IBM Produkte,
Programme oder Services k&ouml;nnen auch andere
ihnen &auml;quivalente Produkte, Programme oder
Services verwendet werden, solange diese
keine gewerblichen oder anderen Schutzrechte der IBM
verletzen. Die Verantwortung f&uuml;r den Betrieb von Fremdprodukten,
Fremdprogrammen und Fremdservices liegt beim Kunden.</p>
<p>F&uuml;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. Lizenzanforderungen sind schriftlich an folgende Adresse zu richten
(Anfragen an diese Adresse m&uuml;ssen auf Englisch formuliert werden):</p>
<ul>
<li>IBM Europe 
<br /> Director of Licensing 
<br />92066 Paris La Defense Cedex 
<br />France 
<br /></li></ul>
<p></p>
<p></p>
<p></p>
<p>Trotz sorgf&auml;ltiger Bearbeitung k&ouml;nnen technische
Ungenauigkeiten oder Druckfehler in dieser Ver&ouml;ffentlichung
nicht ausgeschlossen werden. Die Angaben in diesem Handbuch werden in regelm&auml;&szlig;igen
Zeitabst&auml;nden aktualisiert. Die &Auml;nderungen werden in
&Uuml;berarbeitungen oder in Technical News Letters (TNLs) bekannt
gegeben. IBM kann jederzeit ohne Vorank&uuml;ndigung Verbesserungen und/oder &Auml;nderungen
an den in dieser Ver&ouml;ffentlichung beschriebenen Produkten und/oder
Programmen vornehmen.</p>
<p>Verweise in diesen Informationen auf Websites anderer
Anbieter dienen lediglich als Benutzerinformationen und
stellen keinerlei Billigung des Inhalts dieser Websites dar. Das &uuml;ber diese Websites verf&uuml;gbare
Material ist nicht Bestandteil des Materials f&uuml;r dieses IBM Produkt.
Die Verwendung dieser Websites geschieht auf eigene Verantwortung. </p>
<p>Werden an IBM Informationen eingesandt, k&ouml;nnen diese beliebig verwendet
werden, ohne dass eine Verpflichtung gegen&uuml;ber dem Einsender entsteht.</p>
<p>Lizenznehmer des Programms, die Informationen zu diesem Produkt
w&uuml;nschen mit der Zielsetzung: (i) den Austausch von Informationen zwischen
unabh&auml;ngigen, erstellten Programmen und anderen Programmen (einschlie&szlig;lich
des vorliegenden Programms) sowie (ii) die gemeinsame Nutzung der
ausgetauschten Informationen zu erm&ouml;glichen, wenden sich an folgende
Adresse:</p>
<ul>
<li>JIMMAIL@uk.ibm.com 
<br />[Ansprechpartner im Hursley Java Technology Center (JTC)]</li></ul>
<p>Die Bereitstellung dieser Informationen kann unter Umst&auml;nden von bestimmten Bedingungen - in einigen F&auml;llen auch von der Zahlung einer Geb&uuml;hr - abh&auml;ngig sein.</p>
<p>Die Lieferung des in der Informationsdatei aufgef&uuml;hrten Lizenzprogramms
sowie des zugeh&ouml;rigen Lizenzmaterials erfolgt im Rahmen der Allgemeinen
Gesch&auml;ftsbedingungen der IBM oder einer &auml;quivalenten Vereinbarung.</p>
<p>Alle in diesem Dokument enthaltenen Leistungsdaten stammen aus einer
gesteuerten Umgebung.
Die Ergebnisse, die in anderen Betriebsumgebungen
erzielt werden, k&ouml;nnen daher erheblich von den hier erzielten Ergebnissen
abweichen.
Einige Daten stammen m&ouml;glicherweise von Systemen, deren Entwicklung noch nicht abgeschlossen ist. Eine Gew&auml;hrleistung, dass diese Daten auch in allgemein verf&uuml;gbaren Systemen erzielt werden, kann nicht gegeben werden. Dar&uuml;ber hinaus wurden einige Daten unter Umst&auml;nden durch
Extrapolation berechnet.
Die tats&auml;chlichen Ergebnisse k&ouml;nnen abweichen. Benutzer dieses Dokuments sollten die entsprechenden Daten in ihrer spezifischen Umgebung pr&uuml;fen.</p>
<p>Alle Informationen zu Produkten anderer Anbieter
stammen von den Anbietern der aufgef&uuml;hrten Produkte,
deren ver&ouml;ffentlichten Ank&uuml;ndigungen oder anderen
allgemein verf&uuml;gbaren Quellen. IBM
hat diese Produkte nicht getestet
und kann daher keine Aussagen zu Leistung,
Kompatibilit&auml;t oder anderen Merkmalen machen.
Fragen zu den
Leistungsmerkmalen von Produkten anderer Anbieter sind an den jeweiligen
Anbieter zu richten.</p>
<a name="wq107"></a>
<h2 id="wq107"><a href="#ToC_107">Marken</a></h2>
<p>IBM ist in gewissen L&auml;ndern eine Marke der International Business
Machines Corporation.</p>
<p>Java und alle Java-basierten Marken und Logos sind in gewissen
L&auml;ndern Marken oder eingetragene Marken von Sun Microsystems, Inc.</p>
<p>Microsoft, Windows und das Windows-Logo sind in gewissen L&auml;ndern Marken der Microsoft Corporation.</p>
<p>Andere Namen von Unternehmen, Produkten oder Dienstleistungen k&ouml;nnen Marken oder Dienstleistungsmarken anderer
Unternehmen sein.</p>
<p>Dieses Produkt basiert auch teilweise auf der Arbeit
zum Projekt FreeType. Weitere Informationen zu Freetype finden Sie unter <a href="http://www.freetype.org">http://www.freetype.org</a>.</p>
<p>Dieses Produkt enth&auml;lt Software, die von der Apache Software Foundation
(<a href="http://www.apache.org/">http://www.apache.org/</a>) entwickelt wurde.</p>
<a id="Bot_Of_Page" name="Bot_Of_Page"></a>
</body>
</html>
