<?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="en-US" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="dc.language" scheme="rfc1766" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights                   -->
<!-- Use, duplication or disclosure restricted by            -->
<!-- GSA ADP Schedule Contract with IBM Corp.                -->
<meta name="dc.date" scheme="iso8601" content="2008-02-22" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2003, 2008" />
<meta name="security" content="public" />
<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))' />
<meta name="type" content="concept, reference, reference, task, task, task, task, task, task, reference, task, task, reference, task, task, task, task, reference, task, task, reference, task, reference, task, task, reference, reference, reference, reference, task, reference, task, task, reference, task, task, task, reference, task, reference, task, task, task, task, reference, reference, reference" />
<meta name="keywords" content="-agentlib:, -agentpath:, -assert, -cp, -classpath, -D, -help, -?, -javaagent:, -jre-restrict-search" />
<meta name="keywords" content="-no-jre-restrict-search, -showversion, -verbose:, -version:, -X, just-in-time, complier, just-in-time compiliation, -Xinit, options, -Xnojit, testing" />
<meta name="keywords" content="JIT, specifying, garbage collection, -Xgcpolicy, pause time, pause time reduction, full heaps, environments, class data sharing, -Xshareclasses" />
<meta name="keywords" content="class sharing options, -Xscmx, creating a cache, populating a cache, monitoring a cache, deleting a cache, performance consumption, memory consumption" />
<meta name="keywords" content="limitations, class sharing, considerations, cache size limits, runtime bytecode modification, operating system limitations, using" />
<meta name="keywords" content="SharedClassPermission, adapting, classloaders" />
<title>SDK and Runtime Guide</title>
<link rel="stylesheet" type="text/css" href="../ibmidwb.css" />
<link rel="stylesheet" type="text/css" href="../swg_info_common.css" />
</head>
<body class="revised">
<a id="Top_Of_Page" name="Top_Of_Page"></a><h1>IBM 32-bit SDK for Windows platforms, Java Technology Edition</h1>
<h1>SDK and Runtime Guide</h1><span class="productlevel">Version 5 Release 0</span> 
<br />
<span class="ibmdocnum"></span><br />
<a name="notices_link"></a>
<div id="notices_link">
<div class="pblklblbox">
<span class="pblktitle">Note</span>
<p>Before using this information and the product it supports, read the information
in <a href="#notices">Notices</a>.</p></div></div>
<a name="copyright"></a>
<div id="copyright">
<span class="ednoticestitle">Copyright information</span>
<p>This edition of the
user guide applies to the IBM 32-bit SDK and Runtime Environment for Windows, Java 2
Technology Edition, Version 5.0,
and to all subsequent releases, modifications, and Service Refreshes, until
otherwise indicated in new editions.</p>
<p>(C) Copyright Sun Microsystems, Inc. 1997, 2004, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All
rights reserved.</p></div><div><strong>Copyright International Business Machines Corporation 2003, 2008. All rights reserved.</strong><br />US Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.</div>

<a name="wq2"></a>
<div id="wq2">
<h1>Contents</h1>
<div class="head1"><a id="ToC_1" name="ToC_1" href="#preface" class="toclink">Preface</a></div>
<div class="head1"><a id="ToC_2" name="ToC_2" href="#overview" class="toclink">Overview</a></div>
<div class="head2"><a id="ToC_3" name="ToC_3" href="#compatibility" class="toclink">Version compatibility</a></div>
<div class="head2"><a id="ToC_4" name="ToC_4" href="#migrating" class="toclink">Migrating from other IBM JVMs</a></div>
<div class="head1"><a id="ToC_5" name="ToC_5" href="#contents_sdk" class="toclink">Contents of the SDK and Runtime Environment</a></div>
<div class="head2"><a id="ToC_6" name="ToC_6" href="#jretools" class="toclink">Contents of the Runtime Environment</a></div>
<div class="head2"><a id="ToC_7" name="ToC_7" href="#sdktools" class="toclink">Contents of the SDK</a></div>
<div class="head1"><a id="ToC_8" name="ToC_8" href="#win_install" class="toclink">Installing and configuring the SDK and Runtime Environment</a></div>
<div class="head2"><a id="ToC_9" name="ToC_9" href="#win_before_install" class="toclink">Before you install</a></div>
<div class="head2"><a id="ToC_10" name="ToC_10" href="#attended_installation" class="toclink">Installing the packages</a></div>
<div class="head3"><a id="ToC_11" name="ToC_11" href="#win_installing_packages" class="toclink">Attended (interactive) installation</a></div>
<div class="head3"><a id="ToC_12" name="ToC_12" href="#win_system_machine" class="toclink">Installing the Runtime Environment as the system Java Virtual Machine</a></div>
<div class="head3"><a id="ToC_13" name="ToC_13" href="#win_unattended_install" class="toclink">Unattended installation</a></div>
<div class="head2"><a id="ToC_14" name="ToC_14" href="#win_accessibility_bridge" class="toclink">Enabling the IBM Accessibility Bridge</a></div>
<div class="head2"><a id="ToC_15" name="ToC_15" href="#win_disable_accessibility" class="toclink">Disabling Java Accessibility support</a></div>
<div class="head2"><a id="ToC_16" name="ToC_16" href="#win_euro_lang" class="toclink">Information for European language users</a></div>
<div class="head2"><a id="ToC_17" name="ToC_17" href="#pathcons" class="toclink">Setting the path</a></div>
<div class="head2"><a id="ToC_18" name="ToC_18" href="#classpath" class="toclink">Setting the class path</a></div>
<div class="head2"><a id="ToC_19" name="ToC_19" href="#uninstallation" class="toclink">Uninstallation</a></div>
<div class="head1"><a id="ToC_20" name="ToC_20" href="#running_applications" class="toclink">Running Java applications</a></div>
<div class="head2"><a id="ToC_21" name="ToC_21" href="#invint" class="toclink">The java and javaw commands</a></div>
<div class="head3"><a id="ToC_25" name="ToC_25" href="#build_number" class="toclink">Obtaining version information</a></div>
<div class="head3"><a id="ToC_26" name="ToC_26" href="#specifying_options" class="toclink">Specifying Java options and system properties</a></div>
<div class="head3"><a id="ToC_27" name="ToC_27" href="#standard_options" class="toclink">Standard options</a></div>
<div class="head3"><a id="ToC_28" name="ToC_28" href="#globalization" class="toclink">Globalization of the java command</a></div>
<div class="head2"><a id="ToC_29" name="ToC_29" href="#win_shell" class="toclink">Executing a Java file automatically</a></div>
<div class="head2"><a id="ToC_30" name="ToC_30" href="#jaws" class="toclink">Running Java applications with native assistive technologies</a></div>
<div class="head2"><a id="ToC_31" name="ToC_31" href="#jit" class="toclink">The Just-In-Time (JIT) compiler</a></div>
<div class="head3"><a id="ToC_32" name="ToC_32" href="#disjit" class="toclink">Disabling the JIT</a></div>
<div class="head3"><a id="ToC_33" name="ToC_33" href="#enajit" class="toclink">Enabling the JIT</a></div>
<div class="head3"><a id="ToC_34" name="ToC_34" href="#detjit" class="toclink">Determining whether the JIT is enabled</a></div>
<div class="head2"><a id="ToC_35" name="ToC_35" href="#garbage" class="toclink">Specifying garbage collection policy</a></div>
<div class="head3"><a id="ToC_36" name="ToC_36" href="#garbage_options" class="toclink">Garbage collection options</a></div>
<div class="head3"><a id="ToC_37" name="ToC_37" href="#garbage_pause" class="toclink">Pause time</a></div>
<div class="head3"><a id="ToC_38" name="ToC_38" href="#pausetimereduction" class="toclink">Pause time reduction</a></div>
<div class="head3"><a id="ToC_39" name="ToC_39" href="#garbage_full_heap" class="toclink">Environments with very full heaps</a></div>
<div class="head2"><a id="ToC_40" name="ToC_40" href="#euro_symbol" class="toclink">Euro symbol support</a></div>
<div class="head2"><a id="ToC_41" name="ToC_41" href="#serbian_locale" class="toclink">Support for Serbian locale</a></div>
<div class="head1"><a id="ToC_42" name="ToC_42" href="#developing" class="toclink">Using the SDK to develop Java applications</a></div>
<div class="head2"><a id="ToC_43" name="ToC_43" href="#xml_transforms" class="toclink">Transforming XML documents</a></div>
<div class="head3"><a id="ToC_44" name="ToC_44" href="#old_xerces" class="toclink">Using an older version of Xerces or Xalan</a></div>
<div class="head2"><a id="ToC_45" name="ToC_45" href="#debugger" class="toclink">Debugging Java applications</a></div>
<div class="head3"><a id="ToC_46" name="ToC_46" href="#jdb" class="toclink">Java Debugger (JDB)</a></div>
<div class="head2"><a id="ToC_47" name="ToC_47" href="#bit_check" class="toclink">Determining whether your application is running on a 32-bit or 64-bit JVM</a></div>
<div class="head2"><a id="ToC_48" name="ToC_48" href="#signals" class="toclink">How the JVM processes signals</a></div>
<div class="head3"><a id="ToC_49" name="ToC_49" href="#sighand" class="toclink">Signals used by the JVM</a></div>
<div class="head3"><a id="ToC_50" name="ToC_50" href="#native_signals" class="toclink">Linking a native code driver to the signal-chaining library</a></div>
<div class="head2"><a id="ToC_51" name="ToC_51" href="#usejni" class="toclink">Writing JNI applications</a></div>
<div class="head2"><a id="ToC_52" name="ToC_52" href="#alloc_large_page" class="toclink">Configuring large page memory allocation</a></div>
<div class="head2"><a id="ToC_53" name="ToC_53" href="#corba" class="toclink">CORBA support</a></div>
<div class="head3"><a id="ToC_57" name="ToC_57" href="#corba_properties" class="toclink">System properties for tracing the ORB</a></div>
<div class="head3"><a id="ToC_61" name="ToC_61" href="#corba_tuning" class="toclink">System properties for tuning the ORB</a></div>
<div class="head3"><a id="ToC_62" name="ToC_62" href="#corba_security" class="toclink">Java security permissions for the ORB</a></div>
<div class="head3"><a id="ToC_63" name="ToC_63" href="#corba_classes" class="toclink">ORB implementation classes</a></div>
<div class="head2"><a id="ToC_64" name="ToC_64" href="#rmi-iiop" class="toclink">RMI over IIOP</a></div>
<div class="head2"><a id="ToC_65" name="ToC_65" href="#rmi" class="toclink">Implementing the Connection Handler Pool for RMI</a></div>
<div class="head2"><a id="ToC_66" name="ToC_66" href="#bigd" class="toclink">Enhanced BigDecimal</a></div>
<div class="head1"><a id="ToC_67" name="ToC_67" href="#deploying" class="toclink">Plug-in, Applet Viewer and Web Start</a></div>
<div class="head2"><a id="ToC_68" name="ToC_68" href="#using_plugin" class="toclink">Using the Java plug-in</a></div>
<div class="head3"><a id="ToC_69" name="ToC_69" href="#suppbrowse" class="toclink">Supported browsers</a></div>
<div class="head3"><a id="ToC_70" name="ToC_70" href="#installing_plugin_win" class="toclink">Installing the Java plug-in</a></div>
<div class="head3"><a id="ToC_71" name="ToC_71" href="#plugin_ssv" class="toclink">Secure Static Versioning (SSV) support</a></div>
<div class="head3"><a id="ToC_72" name="ToC_72" href="#plugin_dom" class="toclink">Common Document Object Model (DOM) support</a></div>
<div class="head3"><a id="ToC_73" name="ToC_73" href="#plugin_dbcs" class="toclink">Using DBCS parameters</a></div>
<div class="head2"><a id="ToC_74" name="ToC_74" href="#applets" class="toclink">Working with applets</a></div>
<div class="head3"><a id="ToC_75" name="ToC_75" href="#applet_viewer" class="toclink">Running and debugging applets with the Applet Viewer</a></div>
<div class="head3"><a id="ToC_77" name="ToC_77" href="#clsids" class="toclink">Unique CLSIDs</a></div>
<div class="head2"><a id="ToC_78" name="ToC_78" href="#using_webstart" class="toclink"> Using Web Start</a></div>
<div class="head3"><a id="ToC_79" name="ToC_79" href="#installing_webstart" class="toclink">Running Web Start</a></div>
<div class="head3"><a id="ToC_80" name="ToC_80" href="#webstart_ssv" class="toclink">WebStart Secure Static Versioning</a></div>
<div class="head2"><a id="ToC_81" name="ToC_81" href="#shipping" class="toclink">Distributing Java applications</a></div>
<div class="head1"><a id="ToC_82" name="ToC_82" href="#classdatasharing" class="toclink">Class data sharing between JVMs</a></div>
<div class="head2"><a id="ToC_83" name="ToC_83" href="#shc_overview" class="toclink">Overview of class data sharing</a></div>
<div class="head2"><a id="ToC_90" name="ToC_90" href="#sharedclassesxoptions" class="toclink">Class data sharing command-line options</a></div>
<div class="head2"><a id="ToC_91" name="ToC_91" href="#shc_admin" class="toclink">Creating, populating, monitoring, and deleting a cache</a></div>
<div class="head2"><a id="ToC_92" name="ToC_92" href="#shc_performance" class="toclink">Performance and memory consumption</a></div>
<div class="head2"><a id="ToC_93" name="ToC_93" href="#shc_limitations" class="toclink">Considerations and limitations of using class data sharing</a></div>
<div class="head3"><a id="ToC_94" name="ToC_94" href="#cachesizelimits" class="toclink">Cache size limits</a></div>
<div class="head3"><a id="ToC_95" name="ToC_95" href="#runtimebytecode" class="toclink">Runtime bytecode modification</a></div>
<div class="head3"><a id="ToC_96" name="ToC_96" href="#shc_os_limitations" class="toclink">Operating system limitations</a></div>
<div class="head3"><a id="ToC_97" name="ToC_97" href="#usingsharedclasspermissions" class="toclink">Using SharedClassPermission</a></div>
<div class="head2"><a id="ToC_98" name="ToC_98" href="#adaptingclassloaders" class="toclink">Adapting custom classloaders to share classes</a></div>
<div class="head1"><a id="ToC_99" name="ToC_99" href="#jcommchapter" class="toclink">Using the Java Communications API (JavaComm)</a></div>
<div class="head2"><a id="ToC_100" name="ToC_100" href="#instcomm" class="toclink">Installing Java Communications API from a compressed file</a></div>
<div class="head2"><a id="ToC_101" name="ToC_101" href="#javacomm_configure" class="toclink">Configuring the Java Communications API</a></div>
<div class="head3"><a id="ToC_102" name="ToC_102" href="#javacomm_lnx_devices" class="toclink">Specifying devices in the javax.comm.properties file</a></div>
<div class="head2"><a id="ToC_103" name="ToC_103" href="#javacomm_printing" class="toclink">Printing limitation with the Java Communications API</a></div>
<div class="head2"><a id="ToC_104" name="ToC_104" href="#javacomm_win_remove" class="toclink">Uninstalling Java Communications API</a></div>
<div class="head2"><a id="ToC_105" name="ToC_105" href="#javacomm_apidoc" class="toclink">The Java Communications API documentation</a></div>
<div class="head1"><a id="ToC_106" name="ToC_106" href="#support" class="toclink">Service and support for independent software vendors</a></div>
<div class="head1"><a id="ToC_107" name="ToC_107" href="#accessibility" class="toclink">Accessibility</a></div>
<div class="head2"><a id="ToC_108" name="ToC_108" href="#access_keyboard" class="toclink">Keyboard traversal of JComboBox components in Swing</a></div>
<div class="head2"><a id="ToC_109" name="ToC_109" href="#access_webstart" class="toclink">Web Start accessibility</a></div>
<div class="head2"><a id="ToC_110" name="ToC_110" href="#access_jconsole" class="toclink">JConsole accessibility</a></div>
<div class="head1"><a id="ToC_111" name="ToC_111" href="#win_security" class="toclink">General note about security</a></div>
<div class="head1"><a id="ToC_112" name="ToC_112" href="#rcf" class="toclink">Any comments on this user guide?</a></div>
<div class="head1"><a id="ToC_113" name="ToC_113" href="#xoptions" class="toclink">Appendix A. Nonstandard options</a></div>
<div class="head1"><a id="ToC_114" name="ToC_114" href="#limitations" class="toclink">Appendix B. Known limitations</a></div>
<div class="head1"><a id="ToC_135" name="ToC_135" href="#notices" class="toclink">Notices</a></div>
<div class="head2"><a id="ToC_136" name="ToC_136" href="#trademarks" class="toclink">Trademarks</a></div>
</div>
<a name="preface"></a>
<h1 id="preface"><a href="#ToC_1">Preface</a></h1>
<div>
<p>This user guide provides general information about the IBM<sup>(R)</sup> 32-bit SDK and Runtime Environment for Windows<sup>(R)</sup>, Java<sup>(TM)</sup> 2
Technology Edition, Version 5.0 and specific information
about any differences in the IBM implementation compared with the Sun implementation.</p></div>
<p>Read this user guide in conjunction with the more extensive documentation
on the Sun Web site: <a href="http://java.sun.com" target="_blank">http://java.sun.com</a>.</p>
<p>The SDK and Runtime Environment is supported
on the following products: 
</p>
<ul>
<li>Windows 2000</li>
<li>Windows XP</li>
<li>Windows Server
2003</li>
<li>Windows Vista</li>
<li><font color="RED"><span id="changed">|</span>Windows Server 2008</font></li></ul>
<p>From Version 5.0, Service Refresh 5,
these Virtualized Environments are supported:
</p>
<ul>
<li>VMWare</li>
<li>Xen</li>
<li>Microsoft<sup>(R)</sup> Virtual
Server</li></ul>
<p>Note that IPv6 is supported
only on Windows XP and Windows Server 2003.</p>
<p>The <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> provides more detailed information about the IBM Virtual Machine
for Java.</p>
<p>This user guide is part of a release and is applicable only to that  particular
release. Make sure that you have the user guide appropriate to the release
you are using.</p>
<p>The terms "Runtime Environment" and "Java Virtual Machine" are used interchangeably
throughout this user guide.</p>
<p><font color="RED"><span id="changed">|</span>Technical changes made for this version of the user
<span id="changed">|</span>guide, other than minor or obvious ones, are indicated by blue chevrons when
<span id="changed">|</span>viewing in an Information Center, in red with vertical bars to the left of
<span id="changed">|</span>the changes when viewing in HTML or in a color-printed copy, or by vertical
<span id="changed">|</span>bars to the left of the changes when viewing as a PDF.</font></p>
<p>The Program Code is not designed or intended for use in real-time
applications such as (but not limited to) the online control of aircraft,
air traffic, aircraft navigation, or aircraft communications; or in the design,
construction, operation, or maintenance of any nuclear facility.</p>
<a name="overview"></a>
<h1 id="overview"><a href="#ToC_2">Overview</a></h1>
<div>
<p>The IBM SDK
is a development environment for writing and running applets and applications
that conform to the Java 5.0 Core
Application Program Interface (API).</p></div>
<p>The SDK includes the Runtime Environment for Windows, which enables you only
to run Java applications. If you have installed the SDK, the
Runtime Environment is included.</p>
<p>The Runtime Environment contains the Java Virtual
Machine and supporting files including class files. The Runtime Environment contains only a subset
of the classes that are found in the SDK and allows you to support a Java program
at runtime but does not provide compilation of Java programs. The Runtime Environment for Windows does not include any of
the development tools, for example <strong>appletviewer.exe</strong> or
the Java compiler
(<strong>javac.exe</strong>), or classes that are only for
development systems.</p>
<p>In addition, the Java Communications application programming
interface (API) package is provided for use with the Runtime Environment for Windows. You can find information
about it in <a href="#jcommchapter">Using the Java Communications API (JavaComm)</a>.</p>
<a name="compatibility"></a>
<h2 id="compatibility"><a href="#ToC_3">Version compatibility</a></h2>
<div>
<p>In general, any applet
or application that ran with a previous version of the SDK should
run correctly with the IBM 32-bit SDK for Windows,
v5.0.
Classes compiled with this release are not guaranteed to work on previous
releases.</p></div>
<p>The IBM 32-bit SDK for Windows, v5.0, is built with Microsoft Visual
Studio .NET 2003.</p>
<p>For information about compatibility issues between releases, see the Sun
web site at:</p>
<p><a href="http://java.sun.com/j2se/5.0/compatibility.html" target="_blank">http://java.sun.com/j2se/5.0/compatibility.html</a></p>
<p><a href="http://java.sun.com/j2se/1.4/compatibility.html" target="_blank">http://java.sun.com/j2se/1.4/compatibility.html</a></p>
<p><a href="http://java.sun.com/j2se/1.3/compatibility.html" target="_blank">http://java.sun.com/j2se/1.3/compatibility.html</a></p>
<p>If you are using the SDK as part of another product (for
example, IBM WebSphere<sup>(R)</sup> Application
Server), and you upgrade from a previous level of the SDK, perhaps v1.4.2, serialized classes might not be compatible. However,
classes are compatible between service refreshes.</p>
<a name="migrating"></a>
<h2 id="migrating"><a href="#ToC_4">Migrating from other IBM JVMs</a></h2>
<div>
<p>From Version 5.0, the IBM Runtime Environment
for Windows contains a
new version of the IBM Virtual Machine for Java and the Just-In-Time (JIT) compiler.</p></div>
<p>If you are migrating from an older IBM Runtime Environment, note that:</p>
<ul>
<li>To remain compatible with Version 1.4.2, the JVM dynamic link library jvm.dll is installed in both
jre\bin\j9vm and jre\bin\classic. Set the <strong>LIBPATH</strong> environment
variable to use the JVM  dynamic
link library in jre\bin\classic when writing native
applications using the JNI invocation interface.</li>
<li>The JVM Monitoring Interface (JVMMI) is no longer
available. You must rewrite applications that used that API. You are recommended
to use the JVM Tool Interface (JVMTI) instead. The JVMTI is not functionally
the equivalent of JVMMI. For information about JVMTI, see <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/</a> and
the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics
Guide</a>.</li>
<li>The new implementation of JNI conforms to the JNI specification,
but differs from the old implementation. It returns copies of objects rather
than pinning the objects.  This difference can expose errors in JNI application
code. For information about debugging JNI code, see <strong>-Xcheck:jni</strong> in <a href="#xoptions">Appendix A. Nonstandard options</a>.</li>
<li>The format and content of garbage collector verbose logs obtained
using <strong>-verbose:gc</strong> have changed. The data is now formatted as XML. The
data content reflects the changes to the implementation of garbage collection
in the JVM, and most of the statistics that are produced have changed. You
must change any programs that process the verbose GC data to make them work
with the new format and data. See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> for an example of the new verbose
GC data.</li>
<li>SDK 1.4 versions of the IBM JRE included JVM specific classes in
a file called core.jar. From Java 5.0 onwards, these are included in
a file called vm.jar.</li>
<li>Earlier versions of the IBM JRE included a file called rt.jar in
the jre/lib directory. From Java v1.4 onwards, this file has been replaced
by multiple JAR files in the jre/lib directory.</li>
<li>For additional industry compatibility information, see Sun's Java 5
Compatibility Documentation: <a href="http://java.sun.com/j2se/5.0/compatibility.html" target="_blank">http://java.sun.com/j2se/5.0/compatibility.html</a></li>
<li>For additional deprecated API information, see Sun's Java 5
Deprecated API List: <a href="http://java.sun.com/j2se/1.5.0/docs/api/deprecated-list.html" target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/deprecated-list.html</a></li>
<li>Tracing class dependencies, invoked using <strong>-verbose:Xclassdep</strong>,
is not supported. If you specify <strong>-verbose:Xclassdep</strong>,
the JVM will issue an error message and will not start.</li></ul>
<a name="contents_sdk"></a>
<h1 id="contents_sdk"><a href="#ToC_5">Contents of the SDK and Runtime Environment</a></h1>
<div>
<p>The SDK contains
several development tools and a Java Runtime Environment (JRE). This section
describes the contents of the SDK tools
and the Runtime Environment.</p></div>
<p>Applications written entirely in Java must have <strong>no</strong> dependencies on
the IBM SDK's
directory structure (or files in those directories).  Any dependency on the
SDK's directory structure (or the files in those directories) might result
in application portability problems. Java Native
Interface (JNI) applications will have some minor dependencies.</p>
<p>The user guides, Javadoc,
and the accompanying license, copyright
files, javadoc, and demo directory are the only documentation included in
this SDK for Windows. You can view Sun's software
documentation by visiting the Sun Web site, or you can download Sun's software
documentation package from the Sun Web site: <a href="http://java.sun.com" target="_blank">http://java.sun.com</a>.</p>
<a name="jretools"></a>
<h2 id="jretools"><a href="#ToC_6">Contents of the Runtime Environment</a></h2>
<div>
<p>A list of classes, tools, and other files that you can use with
the standard Runtime Environment.</p></div>
<p></p>
<ul>
<li>Core Classes - These are the compiled class files for the platform and
must remain zipped for the compiler and interpreter to access them. Do not
modify these classes; instead, create subclasses and override where you need
to.</li>
<li>Trusted root certificates from certificate signing authorities - These
certificates are used to validate the identity of signed material.</li>
<li>JRE tools - The following tools are part of the Runtime Environment and
are in the C:\Program Files\IBM\Java50\jre\bin directory unless otherwise
specified.

<dl class="parml">
<dt class="bold"><a id="jretools__ikeyman" name="jretools__ikeyman"></a>ikeyman.exe (iKeyman GUI utility)</dt>
<dd>Allows you to manage keys, certificates, and certificate requests. For
more information see the accompanying <a href="http://www.ibm.com/developerworks/java/jdk/security/50/index.html" target="_blank">Security Guide</a> and <a href="http://download.boulder.ibm.com/ibmdl/pub/software/dw/jdk/security/50/GSK7c_SSL_IKM_Guide.pdf" target="_blank">http://download.boulder.ibm.com/ibmdl/pub/software/dw/jdk/security/50/GSK7c_SSL_IKM_Guide.pdf</a>. The SDK also provides a command-line version of
this utility.
</dd>
<dt class="bold"><a id="jretools__jaaslogon" name="jretools__jaaslogon"></a>jaaslogon.exe</dt>
<dd>A Windows service
that enables Jaas Active Login applications to change their effective user
at runtime using the Jaas Active Login api.
</dd>
<dt class="bold"><a id="jretools__java" name="jretools__java"></a>java.exe (Java Interpreter)</dt>
<dd>Runs Java classes. The Java Interpreter runs programs that are
written in the Java programming language.
</dd>
<dt class="bold"><a id="jretools__javaw" name="jretools__javaw"></a>javaw.exe (Java Interpreter)</dt>
<dd>Runs Java classes in the same way as the <strong>java</strong> command
does, but does not use a console window.
</dd>
<dt class="bold"><a id="jretools__javaws" name="jretools__javaws"></a>javaws.exe (Java Web Start)</dt>
<dd>Enables the deployment and automatic maintenance of Java applications.
For more information, see <a href="#installing_webstart">Running Web Start</a>.
</dd>
<dt class="bold"><a id="jretools__jextract" name="jretools__jextract"></a>jextract.exe (Dump extractor)</dt>
<dd>Converts a system-produced dump into a common format that can be used
by jdmpview. For more information, see <a href="#sdktools__jdmpview">jdmpview</a>.
</dd>
<dt class="bold"><a id="jretools__keytool" name="jretools__keytool"></a>keytool.exe (Key and Certificate Management
Tool)</dt>
<dd>Manages a keystore (database) of private keys and their associated X.509
certificate chains that authenticate the corresponding public keys.
</dd>
<dt class="bold"><a id="jretools__policytool" name="jretools__policytool"></a>policytool.exe (Policy File Creation and Management
Tool)</dt>
<dd>Creates and modifies the external policy configuration files that define
your installation's Java security policy.
</dd>
<dt class="bold"><a id="jretools__rmid" name="jretools__rmid"></a>rmid.exe (RMI activation system daemon)</dt>
<dd>Starts the activation system daemon so that objects can be registered
and activated in a Java virtual machine (JVM).
</dd>
<dt class="bold"><a id="jretools__rmiregistry" name="jretools__rmiregistry"></a>rmiregistry.exe (Java remote object registry)</dt>
<dd>Creates and starts a remote object registry on the specified port of the
current host.
</dd>
<dt class="bold"><a id="jretools__tnameserv" name="jretools__tnameserv"></a>tnameserv.exe (Common Object Request Broker
Architecture (CORBA) transient naming service)</dt>
<dd>Starts the CORBA transient naming service.
</dd>
</dl></li></ul>
<a name="sdktools"></a>
<h2 id="sdktools"><a href="#ToC_7">Contents of the SDK</a></h2>
<div>
<p>A list of tools and reference information that is included with
the standard SDK.</p></div>
<p></p>
<dl class="parml">
<dt class="bold">The following tools are part of the SDK and are located in the C:\Program Files\IBM\Java50\bin directory:</dt>
<dd>
<dl class="parml">
<dt class="bold"><a id="sdktools__appletviewer" name="sdktools__appletviewer"></a>appletviewer.exe (Java Applet Viewer)</dt>
<dd>Tests and runs applets outside a Web browser.
</dd>
<dt class="bold"><a id="sdktools__apt" name="sdktools__apt"></a>apt.exe (Annotation Processing Tool)</dt>
<dd>Finds and executes annotation processors based on the annotations present
in the set of specified source files being examined.
</dd>
<dt class="bold"><a id="sdktools__extcheck" name="sdktools__extcheck"></a>extcheck.exe (Extcheck utility)</dt>
<dd>Detects version conflicts between a target jar file and currently-installed
extension jar files.
</dd>
<dt class="bold"><a id="sdktools__htmlconverter" name="sdktools__htmlconverter"></a>HtmlConverter.exe (Java Plug-in HTML Converter)</dt>
<dd>Converts an HTML page that contains applets to a format that can use the Java Plug-in.
</dd>
<dt class="bold"><a id="sdktools__idlj" name="sdktools__idlj"></a>idlj.exe (IDL to Java Compiler) </dt>
<dd>Generates Java bindings from a given IDL file.
</dd>
<dt class="bold"><a id="sdktools__jar" name="sdktools__jar"></a>jar.exe (Java Archive Tool)</dt>
<dd>Combines multiple files into a single Java Archive (JAR) file.
</dd>
<dt class="bold"><a id="sdktools__jarsigner" name="sdktools__jarsigner"></a>jarsigner.exe (JAR Signing and Verification
Tool)</dt>
<dd>Generates signatures for JAR files and verifies the signatures of signed
JAR files.
</dd>
<dt class="bold"><a id="sdktools__javac" name="sdktools__javac"></a>javac.exe (Java Compiler) </dt>
<dd>Compiles programs that are written in the Java programming language into bytecodes
(compiled Java code).
</dd>
<dt class="bold"><a id="sdktools__javadoc" name="sdktools__javadoc"></a>javadoc.exe (Java Documentation Generator)</dt>
<dd>Generates HTML pages of API documentation from Java source files.
</dd>
<dt class="bold"><a id="sdktools__javah" name="sdktools__javah"></a>javah.exe (C Header and Stub File Generator)</dt>
<dd>Enables you to associate native methods with code written in the Java programming
language.
</dd>
<dt class="bold"><a id="sdktools__javap" name="sdktools__javap"></a>javap.exe (Class File Disassembler)</dt>
<dd>Disassembles compiled files and can print a representation of the bytecodes.
</dd>
<dt class="bold"><a id="sdktools__jconsole" name="sdktools__jconsole"></a>jconsole.exe (JConsole Monitoring and Management
Tool)</dt>
<dd>Experimental (unsupported). Monitors local and
remote JVMs using a GUI. JMX-compliant.
</dd>
<dt class="bold"><a id="sdktools__jdb" name="sdktools__jdb"></a>jdb.exe (Java Debugger)</dt>
<dd>Helps debug your Java programs.
</dd>
<dt class="bold"><a id="sdktools__jdmpview" name="sdktools__jdmpview"></a>jdmpview.exe (Cross-platform dump formatter)</dt>
<dd>Analyzes dumps. For more information, see the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>.
</dd>
<dt class="bold"><a id="sdktools__native2ascii" name="sdktools__native2ascii"></a>native2ascii.exe (Native-To-ASCII Converter)</dt>
<dd>Converts a native encoding file to an ASCII file that contains characters
encoded in either Latin-1 or Unicode, or both.
</dd>
<dt class="bold"><a id="sdktools__rmic" name="sdktools__rmic"></a>rmic.exe (Java Remote Method Invocation (RMI) Stub
Converter)</dt>
<dd>Generates stubs, skeletons, and ties for remote objects. Includes RMI
over Internet Inter-ORB Protocol (RMI-IIOP) support.
</dd>
<dt class="bold"><a id="sdktools__serialver" name="sdktools__serialver"></a>serialver.exe (Serial Version Command)</dt>
<dd>Returns the serialVersionUID for one or more classes in a format that
is suitable for copying into an evolving class.
</dd>
</dl>
</dd>
<dt class="bold">Include Files</dt>
<dd>C headers for JNI programs.
</dd>
<dt class="bold">Demos</dt>
<dd>The demo directory contains a number of subdirectories containing sample
source code, demos, applications, and applets that you can use.
</dd>
<dt class="bold">copyright</dt>
<dd>The copyright notice for the SDK for Windows software.
</dd>
<dt class="bold">License</dt>
<dd>
<p>The License file, C:\Program Files\IBM\Java50\license,
contains the license agreement for the SDK for Windows software. To view or print
the license agreement, open the file in a Web browser.</p>
</dd>
<dt class="bold">fixes.lst</dt>
<dd>A text file that describes any defects that are fixed after the initial
release of this version.
</dd>
</dl>
<a name="win_install"></a>
<h1 id="win_install"><a href="#ToC_8">Installing and configuring the SDK and Runtime Environment</a></h1>
<div>
<p>Use the installation wizard or the compressed file to install the
SDK. Configure the SDK using environment variables, command-line options,
and properties files.</p></div>
<a name="win_before_install"></a>
<h2 id="win_before_install"><a href="#ToC_9">Before you install</a></h2>
<div>
<p>To install the SDK or the Runtime Environment package, download
the relevant installation package. Ensure that you download all packages to
the same directory and that there is enough space in your temporary directory.</p></div>
<p> The packages and their file names are listed in <a href="#attended_installation">Installing the packages</a>;
do not change the packages' file names.</p>
<p>Before you begin to install, ensure that there is enough space in your
C:\WINDOWS\TEMP directory to use during installation. The amount of temporary
space required in the TEMP directory during installation is:   
</p>
<ul>
<li>SDK installable package: 130 MB</li>
<li>Runtime Environment installable package: 85 MB</li></ul><p class="indatacontent">If you do not have enough temporary space, the installation program generates
an error and terminates the installation. If you do have enough temporary
space but still see this message, verify that the packages you are attempting
to install were downloaded completely. You can do this by comparing the file
sizes of your packages to the file sizes shown on the Web pages from which
you downloaded the packages.</p>
<a name="attended_installation"></a>
<h2 id="attended_installation"><a href="#ToC_10">Installing the packages</a></h2>
<div>
<p>There are many packages you can install independently, including
the SDK, the Runtime Environment, Javacomm, documentation,
and demos.</p></div>
<p>
<p>The packages you can install are: 
</p>
<ul>
<li>SDK installable package: ibm-java2-sdk-50-win-i386.exe</li>
<li>Runtime Environment installable package: ibm-java2-jre-50-win-i386.exe</li>
<li>Runtime Environment installable package
(IBM hardware
only): ibm-java2-jre-50-ibmpc-win-i386.exe</li></ul>
<p>Other packages are provided as compressed files: 
</p>
<ul>
<li>Runtime Environment package: ibm-java2-jre-50-win-i386.zip</li>
<li>SDK package: ibm-java2-sdk-50-win-i386.zip</li>
<li>Java Communications Application Programming
Interface (API) for Windows package: ibm-java2-javacomm-50-win-i386.zip.
See the section <a href="#instcomm">Installing Java Communications API from a compressed file</a> for installation
instructions.</li>
<li>Documentation package: ibm-java2-docs-50-win-i386.zip</li>
<li>Demos package: ibm-java2-demos-50-win-i386.zip</li></ul>
<p>If you install the SDK or Runtime Environment from the compressed
package, you will not be able to use Web Start or the Java plug-in,
and the control panel will contain an <strong>Update</strong> tab which
does not work.</p>
<p>If you install the SDK or Runtime Environment on a mapped
(network) drive, the control panel icon will not be available in the Windows control
panel. Installation on a mapped (network) drive is not supported.</p></p>
<a name="win_installing_packages"></a>
<h3 id="win_installing_packages"><a href="#ToC_11">Attended (interactive) installation</a></h3>
<div>
<p>Use the attended installation to install the SDK or JRE on a single
client.</p></div>
<ol type="1">
<li>Launch ibm-java2-sdk-50-win-i386.exe (for
the SDK) or ibm-java2-jre-50-win-i386.exe (for
the Runtime Environment only).</li>
<li>Follow the instructions in the installation wizard. 

<p>The
Runtime Environment is installed by default in the directory C:\Program Files\IBM\Java50\jre.</p>

<p>If
you downloaded the SDK installable package, you can choose which components
to install: 
</p>
<ul>
<li>The SDK development tools (for example, the Java compiler).</li>
<li>The Runtime Environment.</li>
<li>The source code for the class libraries, used by some tools to debug applications.</li></ul>

<p>In the installation wizard, you are presented with the following
options: 
</p>
<ul>
<li><strong>Typical</strong> - this option installs all three components.</li>
<li><strong>Compact</strong> - this option installs the Runtime Environment only.</li>
<li><strong>Custom</strong> - this option lets you choose which components to install.</li></ul>

<p>On Windows Vista, there might be a delay after selecting
the installation language.</p>

<p>If the installation fails with the error
message &quot;Error applying transform&quot;, the Windows Installer configuration information
has become corrupted. To fix the error, use the Windows Installer Cleanup Utility from <a href="http://support.microsoft.com/kb/290301" target="_blank">http://support.microsoft.com/kb/290301</a> to
remove the corrupted Windows Installer configuration information.</p></li></ol>
<a name="win_system_machine"></a>
<h3 id="win_system_machine"><a href="#ToC_12">Installing the Runtime Environment as the system Java Virtual
Machine</a></h3>
<div>
<p>When you install the Runtime Environment (either as part of the
SDK installable package or from the Runtime Environment installable package),
you are asked whether you want to install the Runtime Environment as the system Java Virtual
Machine (JVM). If you do install it as the system JVM, the installation program
copies the java.exe and javaw.exe launchers into the Windows system directory.</p></div>
<p> If a version of java.exe or javaw.exe currently
exists in the Windows system directory, you are prompted to overwrite
the existing version with the current version. Installing these files into
the Windows system
directory makes this Runtime Environment the default JVM for the system. In
addition, the &quot;Current Version&quot; registry key is set to match this installation.</p>
<a name="wq7"></a>
<div class="note-noindent" id="wq7">
<span class="notetitle">Note:</span> <span class="notebody">Installing the Runtime Environment as the system JVM copies only java.exe and javaw.exe into
the Windows system
directory. No other programs (such as javac.exe or appletviewer.exe)
are copied.</span></div>
<a name="win_unattended_install"></a>
<h3 id="win_unattended_install"><a href="#ToC_13">Unattended installation</a></h3>
<div>
<p>Use the unattended installation to install the SDK or JRE on multiple
clients.</p></div>
<p>To create an unattended installation, you must first complete an attended
installation and create a response file (setup.iss) that
records the choices you made during installation. The response file you create
must be correct for the computers on which you plan to use it. If necessary,
create several response files to use for installing the packages on computers
that have different configurations.</p>
<p>To create a response file while running the installation, at a command
prompt type: </p>
<pre class="xmp">ibm-java2-sdk-50-win-i386 /r</pre><p class="indatacontent">or </p>
<pre class="xmp">ibm-java2-jre-50-win-i386 /r</pre>
<p>Depending on your Windows product, a response file (setup.iss)
is created in either the C:\Windows or C:\Winnt directory.</p>
<p>The following message might occur during an interactive installation:</p>
<pre class="xmp">Another Java Runtime Environment is currently
installed as the System JVM. Select Yes to
overwrite this version or No to exit this
installation.</pre>
<p>If this message is displayed, click <strong>No</strong> and exit
from the installation. Go to the Windows system directory and delete
the following two files:</p>
<ul>
<li>java.exe</li>
<li>javaw.exe</li></ul>
<p>After you have deleted the files, restart the interactive installation
using the command shown at the beginning of this section.</p>
<p>On the system on which you will run the unattended installation, copy the setup.iss response
file to the C:\Windows directory. After you have copied
the file, at a command prompt type:</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="wq8"></a>
<div class="note-noindent" id="wq8">
<span class="notetitle">Note:</span> <span class="notebody">
<ol type="1">
<li>There are no spaces after <tt class="xph">/f1</tt> or <tt class="xph">/f2</tt>.</li>
<li>The <tt class="xph">/f1</tt> flag specifies the name and location of the response
file. The <tt class="xph">/f2</tt> flag specifies the name and location of the
log file.</li></ol></span></div>
<p>If the installation is successful, the log file contains the string <tt class="xph">ResultCode=0</tt>.
If the installation is not successful, the log file will contain a different
result code.</p>
<a name="win_accessibility_bridge"></a>
<h2 id="win_accessibility_bridge"><a href="#ToC_14">Enabling the IBM Accessibility Bridge</a></h2>
<div>
<p>The IBM Accessibility
Bridge is installed but disabled by default. To enable the IBM Accessibility
Bridge, uncomment the <strong>assistive_technologies</strong> entry in
the Accessibility.properties file.</p></div>
<p>
<p>The Accessibility.properties file is in
the jre/lib directory. Delete the # from the beginning
of the following line:</p></p>
<pre class="xmp">#assistive_technologies=JawBridge</pre>
<p>This
Web site tells you more about the Accessibility Utilities:</p>
<p><a href="http://java.sun.com/products/jfc/accessibility.html" target="_blank">http://java.sun.com/products/jfc/accessibility.html</a></p>
<a name="win_disable_accessibility"></a>
<h2 id="win_disable_accessibility"><a href="#ToC_15">Disabling Java Accessibility support</a></h2>
<div>
<p>You can disable Java Accessibility support to improve the
JVM loading performance of Java applications that do not provide Java assistive
technology support, especially over network links. To disable Java Accessibility
support, set the <strong>JAVA_ASSISTIVE</strong> environment variable
to OFF.</p></div>
<p>
<p>An assistive technology, such as JawBridge, is not available
if this environment variable is set to OFF, even if the technology is enabled
in the Accessibility.properties file.</p></p>
<a name="win_euro_lang"></a>
<h2 id="win_euro_lang"><a href="#ToC_16">Information for European language users</a></h2>
<div>
<p>In Windows, a process has two codepages: the ANSI (or Windows)
code page and the OEM (or DOS) code page. The javaw command
always uses the ANSI code page unless the <strong>console.encoding</strong> system
property is set.</p></div>
<p></p>
<p>The command window normally uses the OEM code page. Java console
output uses the code page of the command window from which Java is
started. However, the javaw command always uses the ANSI
code page. You specify the code page to use for console output with the <strong>-Dconsole.encoding</strong> option
on the java or javaw launcher. For example, <strong>-Dconsole.encoding=Cp1252</strong> causes
all console output to be in the Windows ANSI Latin1 code page (1252).</p>
<a name="pathcons"></a>
<h2 id="pathcons"><a href="#ToC_17">Setting the path</a></h2>
<div>
<p>If you alter the <strong>PATH</strong> environment variable,
you will override any existing Java launchers in your path.</p></div>
<p>
<p>The <strong>PATH</strong> environment variable enables Windows to find programs and utilities,
such as javac, java, and javadoc,
from any current directory. To display the current value of your <strong>PATH</strong>,
type the following at a command prompt: </p>
<pre class="xmp">echo %PATH%</pre>
<p>To add the Java launchers
to your path: 
</p>
<ol type="1">
<li>If you installed the SDK or Runtime Environment in C:\Program Files\IBM\Java50\ add
the following directories to the <strong>PATH</strong> environment variable:
 

<ul class="simple">
<li>C:\Program Files\IBM\Java50\bin (SDK
only)</li>
<li>C:\Program Files\IBM\Java50\jre\bin
(SDK and Runtime Environment)</li></ul></li>
<li>Close and reopen any command prompt windows to activate the new <strong>PATH</strong> environment
variable.</li></ol></p>
<p>
<p>After setting the path, you can run a tool by typing its name at
a command prompt from any directory. For example, to compile the file Myfile.Java,
at a command prompt, type:</p></p>
<pre class="xmp">javac Myfile.Java</pre>
<a name="classpath"></a>
<h2 id="classpath"><a href="#ToC_18">Setting the class path</a></h2>
<div>
<p>The class path tells the SDK tools,
such as java, javac, and javadoc,
where to find the Java class libraries.</p></div>
<p>
<p>You need to set the class path explicitly only if: 
</p>
<ul>
<li>You require a different library or class file, such as one that you develop,
and it is not in the current directory.</li>
<li>You change the location of the bin and lib directories
and they no longer have the same parent directory.</li>
<li>You plan to develop or run applications using different runtime environments
on the same system.</li></ul>
<p>To display the current value of your <strong>CLASSPATH</strong> environment
variable, type the following command at a command prompt: </p>
<pre class="xmp">  echo %CLASSPATH%</pre>
<p>If
you develop and run applications that use different runtime environments,
including other versions that you have installed separately, you must set
the <strong>CLASSPATH</strong> and <strong>PATH</strong> explicitly
for each application. If you run multiple applications simultaneously and
use different runtime environments, each application must run in its own command prompt.</p></p>
<a name="uninstallation"></a>
<h2 id="uninstallation"><a href="#ToC_19">Uninstallation</a></h2>
<div>
<p>Use the Windows Add/Remove programs utility to uninstall
the SDK or Runtime Environment.</p></div>
<p>
<p>To uninstall the SDK,
whether you installed using attended or unattended installation:</p></p>
<ol type="1">
<li>Double-click <strong>My Computer</strong> on the Windows desktop.</li>
<li>Double-click <strong>Control Panel</strong>.</li>
<li>Double-click <strong>Add/Remove Programs</strong>.</li>
<li>Click <strong>IBM 32-bit SDK for Java 2 v5.0</strong> in the list,
and then click <strong>Change/Remove</strong>.</li>
<li>Click <strong>OK</strong>.</li></ol>
<p>
<p>This procedure removes all of the packages that are installed
with the Installer. It does <em>not</em> remove the Java Communications API package (see <a href="#javacomm_win_remove">Uninstalling Java Communications API</a>) or any additional files that have
been extracted from the compressed packages. </p>
<a name="wq19"></a>
<div class="note-noindent" id="wq19">
<span class="notetitle">Note:</span> <span class="notebody">Warning messages might
be displayed notifying you that not all files, or registry entries, or both,
were removed. These warnings are issued because Windows believes that certain files
are still in use; these files, or registry entries, or both, will be removed
during the next reboot.</span></div>
<p>When
you maintain multiple installations between the IBM 32-bit SDK for Windows,
v5.0,
and versions at V1.3.1 or earlier, if you uninstall the earlier version while
a version v5.0 is
still installed on the system, the V1.3.1 uninstaller removes the following
registry keys, and all the subkeys, that are required by the v5.0 version,
thereby corrupting the v5.0 installation: 
</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">Therefore, reinstall v5.0 after
uninstalling the V1.3.1 version. This uninstaller limitation has been fixed
for V1.4.0 and any subsequent release.</p></p>
<a name="running_applications"></a>
<h1 id="running_applications"><a href="#ToC_20">Running Java applications</a></h1>
<div>
<p>Java applications can be started using the java launcher
or through JNI. Settings are passed to a Java application using command-line arguments,
environment variables, and properties files.</p></div>
<a name="invint"></a>
<h2 id="invint"><a href="#ToC_21">The java and javaw commands</a></h2>
<div>
<p>An overview of the java and javaw commands.</p></div>
<p>
<a name="wq20"></a>
<h3 id="wq20">Purpose</h3>
<p>The java and javaw tools
launch a Java application by starting a Java Runtime
Environment and loading a specified class.</p>
<p>The javaw command
is identical to java, except that javaw has
no associated console window. Use javaw when you do not
want a command prompt window to be displayed. The javaw launcher
displays a dialog box with error information if a launch fails.</p></p>
<p>
<a name="wq21"></a>
<h3 id="wq21">Usage</h3>
<p>The JVM searches for the initial class (and
other classes that are used) in three sets of locations: the bootstrap class
path, the installed extensions, and the user class path. The arguments that
you specify after the class name or jar file name are passed to the main function.</p>
<p>The java and javaw commands
have the following syntax:</p></p>
<pre class="xmp">java [ <em>options</em> ] <em>&lt;class&gt;</em> [ <em>arguments ...</em> ]
java [ <em>options</em> ] -jar <em>&lt;file.jar&gt;</em> [ <em>arguments ...</em> ]
javaw [ <em>options</em> ] <em>&lt;class&gt;</em> [ arguments ... ]
javaw [ <em>options</em> ] -jar <em>&lt;file.jar&gt;</em> [ <em>arguments ...</em> ]</pre>
<p>
<a name="wq22"></a>
<h3 id="wq22">Parameters</h3></p>
<dl class="parml">
<dt class="bold">[<em>options</em>]</dt>
<dd>Command-line options to be passed to the runtime environment.
</dd>
<dt class="bold"><em>&lt;class&gt;</em></dt>
<dd>Startup class. The class must contain a main() method.
</dd>
<dt class="bold"><em>&lt;file.jar&gt;</em></dt>
<dd>Name of the jar file to invoke. It is used only with the <strong>-jar</strong> option.
The named jar file must contain class and resource files for the application,
with the startup class indicated by the Main-Class manifest header.
</dd>
<dt class="bold">[<em>arguments ...</em>]</dt>
<dd>Command-line arguments to be passed to the main() function
of the startup class.
</dd>
</dl>
<a name="build_number"></a>
<h3 id="build_number"><a href="#ToC_25">Obtaining version information</a></h3>
<div>
<p>You obtain The IBM build and version number for your Java installation
using the <strong>-version</strong> option.</p></div>
<ol type="1">
<li>Open a command prompt.</li>
<li>Type the following command: 
<pre class="xmp">java -version</pre> You will see information similar to:
<pre class="xmp">java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pwi32dev-20051104)
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20051103 (JIT enabled)
J9VM - 20051027_03723_lHdSMR
JIT  - 20051027_1437_r8
GC   - 20051020_AA)
JCL  - 20051102</pre>Exact build dates and versions will change.</li></ol>
<a name="specifying_options"></a>
<h3 id="specifying_options"><a href="#ToC_26">Specifying Java options and system properties</a></h3>
<div>
<p>You can specify Java options and system properties on the
command line, by using an options file, or by using an environment variable.</p></div>
<p>These methods of specifying Java options are listed in order of precedence:</p>
<ol type="1">
<li>By specifying the option or property on the command line. For example: 
<pre class="xmp">java -Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump MyJavaClass</pre></li>
<li>By creating a file that contains the options, and specifying it
on the command line using <strong>-Xoptionsfile=</strong><em>&lt;file&gt;</em>.</li>
<li>By creating an environment variable called <strong>IBM_JAVA_OPTIONS</strong> containing
the options. For example: 
<pre class="xmp">set IBM_JAVA_OPTIONS="-Dmysysprop1=tcpip -Dmysysprop2=wait -Xdisablejavadump"</pre></li></ol>
<p>
<p>Rightmost options on the command line have precedence over leftmost
options; for example, if you specify:</p></p>
<pre class="xmp">java -Xint -Xjit myClass</pre>
<p>The <strong>-Xjit</strong> option
takes precedence.</p>
<a name="standard_options"></a>
<h3 id="standard_options"><a href="#ToC_27">Standard options</a></h3>
<div>
<p>The definitions for the standard options.</p></div><a id="idx1" name="idx1"></a><a id="idx2" name="idx2"></a><a id="idx3" name="idx3"></a><a id="idx4" name="idx4"></a><a id="idx5" name="idx5"></a><a id="idx6" name="idx6"></a><a id="idx7" name="idx7"></a><a id="idx8" name="idx8"></a><a id="idx9" name="idx9"></a><a id="idx10" name="idx10"></a><a id="idx11" name="idx11"></a><a id="idx12" name="idx12"></a><a id="idx13" name="idx13"></a><a id="idx14" name="idx14"></a><a id="idx15" name="idx15"></a>
<p>
<p>See <a href="#xoptions">Appendix A. Nonstandard options</a> for information about nonstandard
(-X) options.</p></p>
<p></p>
<dl class="parml">
<dt class="bold"><strong>-agentlib</strong>:<em>&lt;libname&gt;</em>[=<em>&lt;options&gt;</em>]</dt>
<dd>Loads a native agent library <em>&lt;libname&gt;</em>; for example <strong>-agentlib:hprof</strong>.
 For more information, specify <strong>-agentlib:jdwp=help</strong> and <strong>-agentlib:hprof=help</strong> on
the command line.
</dd>
<dt class="bold"><strong>-agentpath</strong>:<em>libname</em>[=<em>&lt;options&gt;</em>]</dt>
<dd>Loads a native agent library by full path name.
</dd>
<dt class="bold"><strong>-assert</strong></dt>
<dd> Prints help on assert-related options.
</dd>
<dt class="bold"><strong>-cp</strong> <em>&lt;directories and zip or jar files
separated by </em>;<em>&gt;</em></dt>
<dd>Sets the search path for application classes and resources. If <strong>-classpath</strong> and <strong>-cp</strong> are
not used and the <strong>CLASSPATH</strong> environment variable is not
set, the user class path is, by default, the current directory (.).
</dd>
<dt class="bold"><strong>-classpath</strong> <em>&lt;directories and zip or jar
files separated by </em>;<em>&gt;</em></dt>
<dd>Sets the search path for application classes and resources. If <strong>-classpath</strong> and <strong>-cp</strong> are
not used and the <strong>CLASSPATH</strong> environment variable is not
set, the user class path is, by default, the current directory (.).
</dd>
<dt class="bold"><strong>-D</strong><em>&lt;property name&gt;</em>=<em>&lt;value&gt;</em></dt>
<dd>Sets a system property.
</dd>
<dt class="bold"><strong>-help or -?</strong></dt>
<dd>Prints a usage message.
</dd>
<dt class="bold"><strong>-javaagent</strong>:<em>&lt;jarpath&gt;</em>[=<em>&lt;options&gt;</em>] </dt>
<dd>Load a Java programming language agent. For more information,
see the java.lang.instrument API documentation.
</dd>
<dt class="bold"><strong>-jre-restrict-search</strong></dt>
<dd>Include user private JREs in the version search.
</dd>
<dt class="bold"><strong>-no-jre-restrict-search</strong></dt>
<dd>Exclude user private JREs in the version search.
</dd>
<dt class="bold"><strong>-showversion</strong></dt>
<dd>Prints product version and continues.
</dd>
<dt id="standard_options__verbose" class="bold">
<a name="standard_options__verbose"></a><strong>-verbose</strong>:<em>&lt;option&gt;</em></dt>
<dd>Enables verbose output. The available options are:

<dl class="parml">
<dt class="bold"><strong>class</strong></dt>
<dd>Writes an entry to stderr for each class that is loaded.
</dd>
<dt class="bold"><strong>gc</strong></dt>
<dd>Writes verbose garbage collection information
to stderr. Use <a href="#xoptions__xverbosegclog"><strong>-Xverbosegclog</strong></a> to
control the output. See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> for more information.
</dd>
<dt class="bold"><strong>jni</strong></dt>
<dd>Writes information to stderr describing the JNI services called by the
application and JVM.
</dd>
<dt class="bold"><strong>sizes</strong></dt>
<dd>Writes information to stderr describing the active memory usage settings.
</dd>
<dt class="bold"><strong>stack</strong></dt>
<dd>Writes information to stderr describing the Java and C stack usage for each thread.
</dd>
</dl>
</dd>
<dt class="bold"><strong>-version</strong></dt>
<dd>Prints product version.
</dd>
<dt class="bold"><strong>-version</strong>:<em>&lt;value&gt;</em></dt>
<dd>Requires the specified version to run, for example &quot;1.5&quot;.
</dd>
<dt class="bold"><strong>-X</strong></dt>
<dd>Prints help on nonstandard options.
</dd>
</dl>
<a name="globalization"></a>
<h3 id="globalization"><a href="#ToC_28">Globalization of the java command</a></h3>
<div>
<p>The java and javaw launchers
accept arguments and class names containing any character that is in the character
set of the current locale. You can also specify any Unicode character in the
class name and arguments by using Java escape sequences.</p></div>
<p>To do this, use the <strong>-Xargencoding</strong> command-line option.</p>
<dl class="parml">
<dt class="bold"><strong>-Xargencoding</strong></dt>
<dd>Use argument encoding. To specify a Unicode character, use escape sequences
in the form <tt>\u####</tt>, where # is a hexadecimal digit (0 to 9, A to
F).
</dd>
<dt class="bold"><strong>-Xargencoding:utf8</strong></dt>
<dd>Use UTF8 encoding.
</dd>
<dt class="bold"><strong>-Xargencoding:latin</strong></dt>
<dd>Use ISO8859_1 encoding.
</dd>
</dl>
<p>For example, to specify a class called HelloWorld using Unicode encoding
for both capital letters, use this command:</p>
<pre class="xmp">java -Xargencoding '\u0048ello\u0057orld'</pre>
<p>The java and javaw commands provide
translated messages. These messages differ based on the locale in which Java is
running. The detailed error descriptions and other debug information that
is returned by java is in English.</p>
<a name="win_shell"></a>
<h2 id="win_shell"><a href="#ToC_29">Executing a Java file automatically</a></h2>
<div>
<p>To set a Java class or jar file to start automatically
from the Windows explorer, use the <strong>Tools</strong> -&gt; <strong>Folder Options</strong> -&gt; <strong>File Type</strong> option
of Windows Explorer.</p></div>
<p>
<p>Alternatively, at a command prompt type: </p>
<pre class="xmp">assoc .class=javaclass 
ftype javaclass=C:\Program Files\IBM\Java50\jre\bin\java.exe''%l''%*'</pre></p>
<a name="wq30"></a>
<div class="note-noindent" id="wq30">
<span class="notetitle">Note:</span> <span class="notebody">
<ol type="1">
<li>The <tt>%l</tt> is the number 1 and not the letter l.</li>
<li>If your Java is installed in a directory other than C:\Program Files\IBM\Java50\, substitute your installation
directory.</li></ol></span></div>
<a name="jaws"></a>
<h2 id="jaws"><a href="#ToC_30">Running Java applications with native assistive technologies</a></h2>
<div>
<p>Sun provides the Java Access Bridge to give native Windows assistive
technologies, such as screen readers, access to the Java Accessibility
support in a Java application. These native Windows assistive
technologies must support calls to the Java Access Bridge.</p></div>
<p>The Java Access Bridge available from Sun includes an installer,
which places five files in the correct directories: access-bridge.jar, jaccess.jar, accessibility.properties, JavaAccessBridge.dll and WindowsAccessBridge.dll. IBM ships
a copy of jaccess.jar in the appropriate directory for
use with JawBridge.</p>
<p>If you have already enabled the IBM Accessibility Bridge (JawBridge), which
allows the Windows 2000 Magnifier to function with Swing applications,
and you want to enable JawBridge at the same time as the Java Access
Bridge, edit the line in the accessibility.properties file
to read:</p>
<p> </p>
<pre class="xmp">assistive_technologies=com.sun.java.accessibility.AccessBridge,JawBridge</pre>
<p>Comment out the line by inserting a leading <tt>#</tt> to deactivate both
bridges. This Web site tells you how to how to download the Java Access
Bridge:</p>
<p><a href="http://java.sun.com/products/jfc/accessibility.html" target="_blank">http://java.sun.com/products/jfc/accessibility.html</a>.</p>
<a name="jit"></a>
<h2 id="jit"><a href="#ToC_31">The Just-In-Time (JIT) compiler</a></h2>
<div>
<p>The IBM Just-In-Time
(JIT) compiler dynamically generates machine code for frequently used bytecode
sequences in Java applications and applets during their execution. <span>The JIT v5.0 compiler
delivers new optimizations as a result of compiler research, improves optimizations
implemented in previous versions of the JIT, and provides better hardware
exploitation.</span></p></div><a id="idx16" name="idx16"></a><a id="idx17" name="idx17"></a><a id="idx18" name="idx18"></a><a id="idx19" name="idx19"></a><a id="idx20" name="idx20"></a>
<p>Both the IBM SDK
and Runtime Environment include the JIT, which is enabled by default in user
applications and SDK tools. Normally, you do not invoke the JIT explicitly;
the compilation of Java bytecode to machine code occurs transparently.
You can disable the JIT to help isolate a problem. If a problem occurs when
executing a Java application or an applet, you can disable the JIT
to help isolate the problem. Disabling the JIT is a temporary measure only;
the JIT is required to optimize performance.</p>
<p>For more information about the JIT, see the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>.</p>
<a name="disjit"></a>
<h3 id="disjit"><a href="#ToC_32">Disabling the JIT</a></h3>
<div>
<p>The JIT can be disabled in a number of different ways. Both command-line
options override the <strong>JAVA_COMPILER</strong> environment variable.</p></div>
<p>Turning off the JIT is a temporary measure that can help isolate
problems when debugging Java applications.</p>
<ul>
<li>Set the <strong>JAVA_COMPILER</strong> environment variable
to <tt>NONE</tt> or the empty string before running the java application. At the command prompt where
the application is run, type: 
<pre class="xmp">set JAVA_COMPILER=NONE</pre> You
can also permanently set <strong>JAVA_COMPILER</strong> by using the graphical
user interface. Open <strong>Control Panel</strong>, select <strong>System</strong>,
and on the <strong>Advanced</strong> tab, select <strong>Environment
Variables</strong>.</li>
<li>Use the <strong>-D</strong> option on the JVM command line
to set the <strong>java.compiler</strong> property to <tt>NONE</tt> or
the empty string. Type the following at a command prompt:
<pre class="xmp">java -Djava.compiler=NONE <em>&lt;class&gt;</em></pre></li>
<li>Use the <strong>-Xint</strong> option on the JVM command line. Type the following at a command prompt:
<pre class="xmp">java -Xint <em>&lt;class&gt;</em></pre></li></ul>
<a name="enajit"></a>
<h3 id="enajit"><a href="#ToC_33">Enabling the JIT</a></h3>
<div>
<p>The JIT is enabled by default. You can explicitly enable the JIT
in a number of different ways. Both command-line options override the <strong>JAVA_COMPILER</strong> environment
variable.</p></div>
<ul>
<li>Set the <strong>JAVA_COMPILER</strong> environment variable
to <tt>jitc</tt> before running the Java application. At
the command prompt where the application
is run, enter: 
<pre class="xmp">set JAVA_COMPILER=jitc</pre> You can also
permanently set <strong>JAVA_COMPILER</strong> by using the graphical
user interface. Open <strong>Control Panel</strong>, select <strong>System</strong>,
and on the <strong>Advanced</strong> tab, select <strong>Environment
Variables</strong>. If the <strong>JAVA_COMPILER</strong> environment variable is an
empty string, the JIT remains disabled. To disable the environment variable,
at the command prompt, enter:
<pre class="xmp">set JAVA_COMPILER=</pre></li>
<li>Use the <strong>-D</strong> option on the JVM command line
to set the <strong>java.compiler</strong> property to <tt>jitc</tt>. At a command prompt,
enter: 
<pre class="xmp">java -Djava.compiler=jitc <em>&lt;class&gt;</em></pre></li>
<li>Use the <strong>-Xjit</strong> option on the JVM command line. Do <strong>not</strong> specify the <strong>-Xint</strong> option at the same
time. At a command prompt,
enter: 
<pre class="xmp">java -Xjit <em>&lt;class&gt;</em></pre></li></ul>
<a name="detjit"></a>
<h3 id="detjit"><a href="#ToC_34">Determining whether the JIT is enabled</a></h3>
<div>
<p>You can determine the status of the JIT using the <strong>-version</strong> option.</p></div><a id="idx21" name="idx21"></a><a id="idx22" name="idx22"></a>
<p>Run the java launcher with the <strong>-version</strong> option.
Enter the following at a command prompt: </p>
<pre class="xmp">java -version</pre> 
<p>If the
JIT is not in use, a message is displayed that includes the following:</p>
<pre class="xmp">(JIT disabled)</pre>
<p>If
the JIT is in use, a message is displayed that includes the following:</p>
<pre class="xmp">(JIT enabled)</pre>
<p>For more information about the JIT, see the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>.</p>
<a name="garbage"></a>
<h2 id="garbage"><a href="#ToC_35">Specifying garbage collection policy</a></h2>
<div>
<p>The Garbage Collector manages the memory used by Java and
by applications running within the JVM.</p></div><a id="idx23" name="idx23"></a>
<p>When the Garbage Collector receives a request for storage, unused memory
in the heap is set aside in a process called "allocation".  The Garbage Collector
also checks for areas of memory that are no longer referenced, and releases
them for reuse. This is known as "collection".</p>
<p>The collection phase can be triggered by a memory allocation fault, which
occurs when no space is left for a storage request, or by an explicit System.gc() call.</p>
<p>Garbage collection can significantly affect application performance, so
the IBM virtual
machine provides various methods of optimizing the way garbage collection
is carried out, potentially reducing the effect on your application.</p>
<p>For more detailed information about garbage collection, see
the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>.</p>
<a name="garbage_options"></a>
<h3 id="garbage_options"><a href="#ToC_36">Garbage collection options</a></h3>
<div>
<p>The <strong>-Xgcpolicy</strong> options control the behavior
of the Garbage Collector. They make trade-offs between throughput of the application
and overall system, and the pause times that are caused by garbage collection.</p></div><a id="idx24" name="idx24"></a><a id="idx25" name="idx25"></a><a id="idx26" name="idx26"></a>
<p>
<p>The format of the option and its values is:
</p>
<dl class="parml">
<dt class="bold"><strong>-Xgcpolicy:optthruput</strong></dt>
<dd>(Default and recommended value.) Delivers very high throughput to applications,
but at the cost of occasional pauses.
</dd>
<dt class="bold"><strong>-Xgcpolicy:optavgpause</strong></dt>
<dd>Reduces the time spent in garbage collection pauses and limits the effect
of increasing heap size on the length of the garbage collection pause. Use <strong>optavgpause</strong> if
your configuration has a very large heap.
</dd>
<dt class="bold"><strong>-Xgcpolicy:gencon</strong></dt>
<dd>Requests the combined use of concurrent and generational GC to help minimize
the time that is spent in any garbage collection pause.
</dd>
</dl></p>
<a name="garbage_pause"></a>
<h3 id="garbage_pause"><a href="#ToC_37">Pause time</a></h3>
<div>
<p>When an application's attempt to create an object cannot be satisfied
immediately from the available space in the heap, the Garbage Collector is
responsible for identifying unreferenced objects (garbage), deleting them,
and returning the heap to a state in which the immediate and subsequent allocation
requests can be satisfied quickly.</p></div><a id="idx27" name="idx27"></a><a id="idx28" name="idx28"></a>
<p>Such garbage collection cycles introduce occasional unexpected pauses in
the execution of application code.  Because applications grow in size and
complexity, and heaps become correspondingly larger, this garbage collection
pause time tends to grow in size and significance.</p>
<p>The default garbage collection value, <strong>-Xgcpolicy:optthruput</strong>,
delivers very high throughput to applications, but at the cost of these occasional
pauses, which can vary from a few milliseconds to many seconds, depending
on the size of the heap and the quantity of garbage.</p>
<a name="pausetimereduction"></a>
<h3 id="pausetimereduction"><a href="#ToC_38">Pause time reduction</a></h3>
<div>
<p>The JVM uses two techniques to reduce pause times: concurrent garbage
collection and generational garbage collection.</p></div><a id="idx29" name="idx29"></a><a id="idx30" name="idx30"></a>
<p>The <strong>-Xgcpolicy:optavgpause</strong> command-line option requests
the use of concurrent garbage collection to  reduce significantly the time
that is spent in garbage collection pauses. Concurrent GC reduces the pause
time by performing some garbage collection activities concurrently with normal
program execution to minimize the disruption caused by the collection of the
heap.  The <strong>-Xgcpolicy:optavgpause</strong> option also limits
the effect of increasing the heap size on the length of the garbage collection
pause. The <strong>-Xgcpolicy:optavgpause</strong> option is most useful
for configurations that have large heaps. With the reduced pause time, you
might experience some reduction of throughput to your applications.</p>
<p>During concurrent garbage collection, a significant amount of time is wasted
identifying relatively long-lasting objects that cannot then be collected.
 If garbage collection concentrates on only the objects that are most likely
to be recyclable, you can further reduce pause times for some applications.
Generational GC reduces pause times by dividing the heap into two generations:
the &quot;new&quot; and the &quot;tenure&quot; areas. Objects are placed in one of these
areas depending on their age. The new area is the smaller of the two and contains
new objects; the tenure is larger and contains older objects. Objects are
first allocated to the new area; if they have active references for long enough,
they are promoted to the tenure area.</p>
<p>Generational GC depends on most objects not lasting long. Generational
GC reduces pause times by concentrating the effort to reclaim storage on the new
area because it has the most recyclable space. Rather than occasional but
lengthy pause times to collect the entire heap, the new area is collected
more frequently and, if the new area is small enough, pause times are comparatively
short. However, generational GC has the drawback that, over time, the tenure
area might become full. To minimize the pause time when this situation occurs,
use a combination of concurrent GC and generational GC. The <strong>-Xgcpolicy:gencon</strong> option
requests the combined use of  concurrent and generational GC to help minimize
the time that is spent in any garbage collection pause.</p>
<a name="garbage_full_heap"></a>
<h3 id="garbage_full_heap"><a href="#ToC_39">Environments with very full heaps</a></h3>
<div>
<p>If the Java heap becomes nearly full, and very little garbage
can be reclaimed, requests for new objects might not be satisfied quickly
because no space is immediately available.</p></div><a id="idx31" name="idx31"></a><a id="idx32" name="idx32"></a>
<p>If the heap is operated at near-full capacity, application performance
might suffer regardless of which garbage collection options are used; and,
if requests for more heap space continue to be made, the application might
receive an OutOfMemoryError, which results in JVM termination
if the exception is not caught and handled. At this point, the JVM produces
a Javadump file for use during diagnostics. In these conditions, you are recommended
either to increase the heap size by using the <strong>-Xmx</strong> option
or to reduce the number of objects in use.</p>
<p>For more information, see the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/" target="_blank">Diagnostics
Guide</a>.</p>
<a name="euro_symbol"></a>
<h2 id="euro_symbol"><a href="#ToC_40">Euro symbol support</a></h2>
<div>
<p>The IBM SDK and Runtime Environment set
the Euro as the default currency for those countries in the European Monetary
Union (EMU) for dates on or after 1 January, 2002. <span>From
1 January 2008, Cyprus and Malta also have the Euro as the default
currency.</span></p></div>
<p>To use the old national currency, specify <strong>-Duser.variant=PREEURO</strong> on
the Java command
line.</p>
<p>If you are running the UK, Danish, or Swedish locales and want to use the
Euro, specify <strong>-Duser.variant=EURO</strong> on the Java command
line.</p>
<a name="serbian_locale"></a>
<h2 id="serbian_locale"><a href="#ToC_41">Support for Serbian locale</a></h2>
<div>
<p>From Service Refresh 5, the following new locale is added: Serbia
(SE), with three new locale variations.</p></div>
<p>The locale variations are:
</p>
<ul>
<li>sr_RS</li>
<li>sr_Cyrl_RS</li>
<li>sr_Latn_RS</li></ul>
<p>The existing locale variations for the former Serbia and Montenegro are
maintained as before. The 3-letter country code SRB, corresponding to the
2-letter country code RC, is also added.</p>
<a name="developing"></a>
<h1 id="developing"><a href="#ToC_42">Using the SDK to
develop Java applications</a></h1>
<div>
<p>The SDK for Windows contains many tools and
libraries required for Java software development.</p></div>
<p> See <a href="#sdktools">Contents of the SDK</a> for details of the tools
available.</p>
<a name="xml_transforms"></a>
<h2 id="xml_transforms"><a href="#ToC_43">Transforming XML documents</a></h2>
<div>
<p>The IBM SDK contains
the XSLT4J processor and the XML4J parser. With these tools, you can parse
and transform XML documents independently from any given XML processing implementation.
  By using "Factory Finders" to locate the SAXParserFactory,
 DocumentBuilderFactory and TransformerFactory implementations,
your application can swap between different  implementations without having
to change any code.</p></div>
<p>
<p>The IBM SDK contains
the XSLT4J processor and the XML4J parser that conform to the <a href="http://java.sun.com/xml/jaxp/" target="_blank">JAXP 1.3 specification</a>.</p>
<p>The XML technology included with the IBM SDK is similar to Apache
Xerces Java and Apache Xalan Java.  See <a href="http://xml.apache.org/xerces2-j/" target="_blank">http://xml.apache.org/xerces2-j/</a> and <a href="http://xml.apache.org/xalan-j/" target="_blank">http://xml.apache.org/xalan-j/</a> for
more information.</p>
<p>With the XSLT4J processor, you choose between the
original XSLT Interpretive processor and the XSLT Compiling  processor. The
Interpretive processor is for tooling and debugging environments and supports
the XSLT extension functions  that are not supported by the XSLT Compiling
processor. The XSLT Compiling processor is for high performance runtime environments;
it generates a transformation engine, or <em>translet</em>,  from an XSL style
sheet. This approach separates the interpretation of style sheet instructions
from their runtime application to XML data.</p>
<p>The XSLT Interpretive processor
is the default processor. To use the XSLT Compiling processor: 
</p>
<ul>
<li>Change the entry in the jaxp.properties file, (located
in C:\Program Files\IBM\Java50\jre\lib) or</li>
<li>Set the <strong>javax.xml.transform.TransformerFactory</strong> system
property to <tt>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</tt>.</li></ul>
<p>To implement properties in the jaxp.properties file,
copy jaxp.properties.sample to jaxp.properties in C:\Program Files\IBM\Java50\jre\lib. This file also contains full details about the procedure used
to determine which implementations to use for the TransformerFactory, SAXParserFactory,
and the DocumentBuilderFactory.</p>
<p>To improve
the performance when you transform a StreamSource object with the XSLT Compiling
processor, specify the com.ibm.xslt4j.b2b2dtm.XSLTCB2BDTMManager class
as the provider of the service org.apache.xalan.xsltc.dom.XSLTCDTMManager.
 To determine the service provider, try each step until you find org.apache.xalan.xsltc.dom.XSLTCDTMManager:
</p>
<ol type="1">
<li>Check the setting of the system property <strong>org.apache.xalan.xsltc.dom.XSLTCDTMManager</strong>.</li>
<li>Check the value of the property <strong>org.apache.xalan.xsltc.dom.XSLTCDTMManager</strong> in
the file C:\Program Files\IBM\Java50\jre\lib\xalan.properties.</li>
<li>Check the contents of the file META-INF\services\org.apache.xalan.xsltc.dom.XSLTCDTMManager for
a class name.</li>
<li>Use the default service provider, org.apache.xalan.xsltc.dom.XSLTCDTMManager.</li></ol><p class="indatacontent">The XSLT Compiling processor detects the service provider for the org.apache.xalan.xsltc.dom.XSLTCDTMManager service
when a javax.xml.transform.TransformerFactory object is
created.  Any javax.xml.transform.Transformer or javax.xml.transform.sax.TransformerHandler objects
that are created by using that TransformerFactory object
use the same service provider.  You can change service providers
by modifying one of the settings described above and then creating a new TransformerFactory object.</p></p>
<a name="old_xerces"></a>
<h3 id="old_xerces"><a href="#ToC_44">Using an older version of Xerces or Xalan</a></h3>
<div>
<p>If you are using an older version of Xerces (before 2.0) or Xalan
(before 2.3) in the endorsed override, you might get a NullPointerException when
you start your application. This exception occurs because these older versions
do not handle the jaxp.properties file correctly.</p></div>
<p>
<p>To avoid this situation, use one of the following workarounds: 
</p>
<ul>
<li>Upgrade to a newer version of the application that implements the latest Java API
for XML Programming (JAXP) specification (http://java.sun.com/xml/jaxp/index.html).</li>
<li>Remove the jaxp.properties file
from C:\Program Files\IBM\Java50\jre\lib.</li>
<li>Uncomment the entries
in the jaxp.properties file in C:\Program Files\IBM\Java50\jre\lib.</li>
<li>Set the system property for <strong>javax.xml.parsers.SAXParserFactory</strong>, <strong>javax.xml.parsers.DocumentBuilderFactory</strong>, or <strong>javax.xml.transform.TransformerFactory</strong> using the <strong>-D</strong> command-line
option.</li>
<li>Set the system property for <strong>javax.xml.parsers.SAXParserFactory</strong>, <strong>javax.xml.parsers.DocumentBuilderFactory</strong>, or <strong>javax.xml.transform.TransformerFactory</strong> in your
application. For an example, see the JAXP 1.3 specification.</li>
<li>Explicitly set the SAX parser, Document builder, or Transformer factory
using the <strong>IBM_JAVA_OPTIONS</strong> environment variable. 
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.SAXParserFactory=
  org.apache.xerces.jaxp.SAXParserFactoryImpl </pre>or 
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.parsers.DocumentBuilderFactory=
  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</pre>or  
<pre class="xmp">set IBM_JAVA_OPTIONS=-Djavax.xml.transform.TransformerFactory=
  org.apache.xalan.processor.TransformerFactoryImpl  </pre></li></ul></p>
<a name="debugger"></a>
<h2 id="debugger"><a href="#ToC_45">Debugging Java applications</a></h2>
<div>
<p>To debug Java programs, you can use the Java Debugger
(JDB) application or other debuggers that communicate by using the Java Platform
Debugger Architecture (JPDA) that is provided by the SDK for Windows.</p></div>
<p>More information about problem diagnosis using Java can
be found in the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>.</p>
<a name="jdb"></a>
<h3 id="jdb"><a href="#ToC_46">Java Debugger (JDB)</a></h3>
<div>
<p>The Java Debugger (JDB) is included in the SDK for Windows. The debugger is invoked
by the jdb command; it attaches to the JVM using JPDA.</p></div>
<p>
<p> To debug a Java application: 
</p>
<ol type="1">
<li id="jdb__jdb_start_jvm">
<a name="jdb__jdb_start_jvm"></a>Start the JVM with the following options: 
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,address=<em>&lt;port&gt;</em> <em>&lt;class&gt;</em></pre>The
JVM starts up, but suspends execution before it starts the Java application.</li>
<li>In a separate session, you can attach the debugger to the JVM: 
<pre class="xmp">jdb -attach <em>&lt;port&gt;</em></pre>The
debugger will attach to the JVM, and you can now issue a range of commands
to examine and control the Java application; for example, type <tt class="xph">run</tt> to
allow the Java application to start.</li></ol></p>
<p>
<p>For more information about JDB options, type: </p>
<pre class="xmp">jdb -help</pre><p class="indatacontent">For
more information about JDB commands: 
</p>
<ol type="1">
<li>Type <tt class="xph">jdb</tt></li>
<li>At the jdb prompt, type <tt class="xph">help</tt></li></ol></p>
<p>
<p>You can also use JDB to debug Java applications running on remote machines.
 JPDA uses a TCP/IP socket to connect to the remote JVM. 
</p>
<ol type="1">
<li>Start the JVM with the following options: 
<pre class="xmp">java -Xdebug -Xrunjdwp:transport=dt_shmem,server=y,address=<em>&lt;port&gt;</em> <em>&lt;class&gt;</em></pre>The
JVM starts up, but suspends execution before it starts the Java application.</li>
<li>Attach the debugger to the remote JVM: 
<pre class="xmp">jdb -connect com.sun.jdi.SocketAttach:hostname=<em>&lt;host&gt;</em>,port=<em>&lt;port&gt;</em></pre></li></ol></p>
<p>
<p>The Java Virtual Machine Debugging Interface
(JVMDI) is not supported in this release. It has been replaced by the Java Virtual
Machine Tool Interface (JVMTI).</p></p>
<p>
<p>For more information about JDB and JPDA and their usage, see these
Web sites:  
</p>
<ul>
<li><a href="http://java.sun.com/products/jpda/" target="_blank">http://java.sun.com/products/jpda/</a></li>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/jpda/" target="_blank">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" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdb.html</a></li></ul></p>
<a name="bit_check"></a>
<h2 id="bit_check"><a href="#ToC_47">Determining whether your application is running on a 32-bit or 64-bit JVM</a></h2>
<div>
<p>Some Java applications must be able to determine whether
they are running on a 32-bit JVM or on a 64-bit JVM. For example, if your application
has a native code library, the library must be compiled separately in 32-
and 64-bit forms for platforms that support both 32- and 64-bit modes of operation. In this case, your
application must load the correct library at runtime, because it is not possible
to mix 32-
and 64-bit code.</p></div>
<p>
<p>The system property <strong>com.ibm.vm.bitmode</strong> allows
applications to determine the mode in which your JVM is running. It returns
the following values:  
</p>
<ul>
<li>32 - the JVM is running in 32-bit mode</li>
<li>64 - the JVM is  running in 64-bit mode</li></ul><p class="indatacontent">You can inspect the <strong>com.ibm.vm.bitmode</strong> property
from within your application code using the call: </p>
<pre class="xmp">System.getProperty("com.ibm.vm.bitmode");</pre></p>
<a name="signals"></a>
<h2 id="signals"><a href="#ToC_48">How the JVM processes signals</a></h2>
<div>
<p>When a signal is raised that is of interest to the JVM, a signal
handler is called. This signal handler determines whether it has been called
for a Java or
non-Java thread.</p></div>
<p>If the signal is for a Java thread, the JVM takes control of the
signal handling. If an application handler for this signal is installed and
you did not specify the <strong>-Xnosigchain</strong> command-line option,
the application handler for this signal is called after the JVM has finished
processing.</p>
<p>If the signal is for a non-Java thread, and the application that installed
the JVM had previously installed its own handler for the signal, control is
given to that handler. Otherwise, if the signal is requested by the JVM or Java application,
the signal is ignored or the default action is taken.</p>
<p>Where a signal is generated externally (for example,
when you enter <strong>CTRL-BREAK</strong>), a new thread is created
for the signal handler. In this case, the JVM signal handler performs its
processing and if an application handler for this signal is installed and
you did not specify the <strong>-Xnosigchain</strong> command-line option,
the application handler for this signal is called.</p>
<p>For exception and error signals, the JVM either:  
</p>
<ul>
<li>Handles the condition and recovers, or</li>
<li>Enters a controlled shutdown sequence where it:  

<ol type="1">
<li>Produces dumps, to describe the JVM state at the point of failure</li>
<li>Calls your application's signal handler for that signal</li>
<li>Calls any application-installed
unexpected-shutdown hook</li>
<li>Performs the necessary JVM cleanup</li></ol></li></ul>For information about
writing a launcher that specifies the above hooks, see: <a href="http://www.ibm.com/developerworks/java/library/i-signalhandling/" target="_blank">http://www.ibm.com/developerworks/java/library/i-signalhandling/</a>. This item was written for Java V1.3.1, but still applies to later
versions.
<p>For interrupt signals, the JVM also enters a controlled shutdown sequence,
but this time it is treated as a normal termination that:
</p>
<ol type="1">
<li>Calls your application's signal handler for that signal</li>
<li>Calls all application shutdown
hooks</li>
<li>Calls any application-installed
exit hook</li>
<li>Performs the necessary JVM cleanup</li></ol>
<p>The shutdown is identical to the shutdown initiated by a call to the Java method <tt class="xph">System.exit()</tt>.</p>
<p>Other signals that are used by the JVM are for internal control purposes
and do not cause it to terminate. The only control signal of interest is SIGBREAK, which causes
a Javadump to be generated.</p>
<a name="sighand"></a>
<h3 id="sighand"><a href="#ToC_49">Signals used by the JVM</a></h3>
<div>
<p>The types of signals are  Interrupts,
and Controls.</p></div>
<p>
<p><a href="#sighand__sig_table">Table 1</a> below shows the signals
that are used by the JVM. The signals are grouped in the table by type or
use, as follows: 
</p>
<dl>
<dt class="bold">Exceptions</dt>
<dd>The operating system synchronously raises an appropriate exception signal
whenever a fatal condition occurs.
</dd>
<dt class="bold">Errors</dt>
<dd>The JVM raises a SIGABRT if it detects a condition
from which it cannot recover.
</dd>
<dt class="bold">Interrupts</dt>
<dd>Interrupt signals are raised asynchronously, from outside a JVM process,
to request shutdown.
</dd>
<dt class="bold">Controls</dt>
<dd>Other signals that are used by the JVM for control purposes.
</dd>
</dl><p class="indatacontent">
</p>
<a name="sighand__sig_table"></a>
<table id="sighand__sig_table" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Table 1. Signals used by the JVM</caption>
<thead valign="bottom">
<tr>
<th id="wq51" width="25%" align="left">Signal Name</th>
<th id="wq52" width="25%" align="left">Signal type</th>
<th id="wq53" width="25%" align="left">Description</th>
<th id="wq54" width="25%" align="left">Disabled by -Xrs</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq51">SIGINT (2)</td>
<td headers="wq52">Interrupt</td>
<td headers="wq53">Interactive attention (CTRL-C). JVM exits normally.</td>
<td align="center" headers="wq54">Yes</td>
</tr>
<tr>
<td headers="wq51">SIGTERM (15)</td>
<td headers="wq52">Interrupt</td>
<td headers="wq53">Termination request. JVM will exit normally.</td>
<td align="center" headers="wq54">Yes</td>
</tr>
<tr>
<td headers="wq51">SIGBREAK</td>
<td headers="wq52">Control</td>
<td headers="wq53">A break signal from a terminal. By default, this
triggers a Javadump.</td>
<td align="center" headers="wq54">Yes</td>
</tr>
</tbody>
</table>
<p>The IBM JVM uses structured
exception handling and
the SetConsoleCtrlHandler() API. These are disabled
with <strong>-Xrs</strong>. <strong>-Xnosigchain</strong> is ignored
on Windows.</p></p>
<p>
<p>Use the <strong>-Xrs</strong> (reduce signal
usage) option to prevent the JVM from handling most signals. For more information,
see <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html" target="_blank">Sun's Java application launcher page</a>.</p></p>
<p>
<p>The signals 2 (SIGINT) and 15
(SIGTERM) on JVM threads causes the JVM to shut down; therefore,
an application signal handler should not attempt to recover from this signal
unless it no longer requires the JVM.</p></p>
<a name="native_signals"></a>
<h3 id="native_signals"><a href="#ToC_50">Linking a native code driver to the signal-chaining library</a></h3>
<div>
<p>The Runtime Environment contains signal-chaining. Signal-chaining
enables the JVM to interoperate more efficiently with native code that installs
its own signal handlers.</p></div>
<p>
<p>Signal-chaining
enables an application to link and load the shared library jsig.dll before
msvcrt.dll. The jsig.dll library ensures that calls to signal() are
intercepted so that their handlers do not replace the JVM's signal handlers.
Instead, these calls save the new signal handlers, or "chain" them behind
the handlers that are installed by the JVM. Later, when any of these signals
are raised and found not to be targeted at the JVM, the preinstalled handlers
are invoked.</p>
<p>The libjsig.dll library also hides
JVM signal handlers from the application. Therefore, calls such as signal(), sigset(),
and sigaction() that are made after the JVM has started
no longer return a reference to the JVM's signal handler, but instead return
any handler that was installed before JVM startup.</p>
<p>The environment variable <strong>JAVA_HOME</strong> should
be set to the location of the SDK, for example,C:\Program Files\IBM\Java50\.</p>
<p>To use jsig.dll, link it with the application
that creates or embeds a JVM.</p></p>
<a name="usejni"></a>
<h2 id="usejni"><a href="#ToC_51">Writing JNI applications</a></h2>
<div>
<p>Valid JNI version numbers that native programs can specify on the
JNI_CreateJavaVM() API call are: JNI_VERSION_1_2(0x00010002) and JNI_VERSION_1_4(0x00010004).</p></div>
<a name="wq58"></a>
<div class="note-noindent" id="wq58">
<span class="notetitle">Restriction:</span> <span class="notebody">Version 1.1 of the Java Native Interface (JNI) is not supported.</span></div>
<p>This version number determines only the level of the JNI native interface
to use. The actual level of the JVM that is created is specified by the JSE
libraries (that is, v5.0).
The JNI interface API <em>does not</em> affect the language specification that
is implemented by the JVM, the class library APIs, or any other area of JVM
behavior.  For more information, see <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jni" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/jni</a>.</p>
<p>If your application needs two JNI libraries, one built for 32-
and the other for 64-bit, use the <strong>com.ibm.vm.bitmode</strong> system
property to determine if you are running with a 32- or 64-bit JVM and choose the appropriate library.</p>
<a name="alloc_large_page"></a>
<h2 id="alloc_large_page"><a href="#ToC_52">Configuring large page memory allocation</a></h2>
<div>
<p>You can enable large page support, on systems that support it,
by starting Java with the <strong>-Xlp</strong> option.</p></div>
<p>
<p>Large page usage is primarily intended to provide performance
improvements to applications that allocate a lot of memory and frequently
access that memory. The large page performance improvements are mainly caused
by the reduced number of misses in the Translation Lookaside Buffer (TLB).
The TLB maps a larger virtual memory range and thus causes this improvement.</p>
<p>For the JVM to use
large pages, your system must have an adequate number of contiguous large
pages available. If large pages cannot be allocated, even when enough pages
are available, possibly the large pages are not contiguous.</p>
<p>Large page allocations will only succeed if the local administrative
policy for the JVM user is configured to allow &quot;Lock pages in memory&quot;.</p></p>
<a name="corba"></a>
<h2 id="corba"><a href="#ToC_53">CORBA support</a></h2>
<div>
<p>The Java Platform, Standard Edition (J2SE)
supports, at a minimum, the specifications that are defined in the compliance
document from Sun. In some cases, the IBM J2SE ORB supports
more recent versions of the specifications.</p></div>
<p>The minimum specifications supported are defined in the Official
Specifications for CORBA support in J2SE: <a href="http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/doc-files/compliance.html" target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/doc-files/compliance.html</a>.</p>
<p>
<a name="corba__corba_giop"></a>
<h3 id="corba__corba_giop">Support for GIOP 1.2</h3>
<p>This SDK supports all versions of GIOP,
as defined by chapters 13 and 15 of the CORBA 2.3.1 specification, OMG document <cite>formal/99-10-07</cite>.</p>
<p><a href="http://www.omg.org/cgi-bin/doc?formal/99-10-07" target="_blank">http://www.omg.org/cgi-bin/doc?formal/99-10-07</a></p>
<p>Bidirectional
GIOP is not supported.</p></p>
<p>
<a name="corba__corba_support_intercepters"></a>
<h3 id="corba__corba_support_intercepters">Support for Portable Interceptors</h3>
<p>This SDK supports Portable Interceptors,
as defined by the OMG in the document <cite>ptc/01-03-04</cite>, which you
can obtain from:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/01-03-04" target="_blank">http://www.omg.org/cgi-bin/doc?ptc/01-03-04</a></p>
<p>Portable
Interceptors are hooks into the ORB that ORB services can use to intercept
the normal flow of execution of the ORB.</p></p>
<p>
<a name="corba__corba_interop_naming"></a>
<h3 id="corba__corba_interop_naming">Support for Interoperable Naming
Service</h3>
<p>This SDK supports
the Interoperable Naming Service, as defined by the OMG in the document <cite>ptc/00-08-07</cite>,
which you can obtain from:</p>
<p><a href="http://www.omg.org/cgi-bin/doc?ptc/00-08-07" target="_blank">http://www.omg.org/cgi-bin/doc?ptc/00-08-07</a></p>
<p>The
default port that is used by the Transient Name Server (the tnameserv command),
when no <strong>ORBInitialPort</strong> parameter is given, has changed
from <em>900</em> to <em>2809</em>, which is the port number that is registered
with the IANA (Internet Assigned Number Authority) for a CORBA Naming Service.
Programs that depend on this default might have to be updated to work with
this version.</p>
<p>The initial context that is returned from the Transient
Name Server is now an org.omg.CosNaming.NamingContextExt.
Existing programs that narrow the reference to a context org.omg.CosNaming.NamingContext still
work, and do not need to be recompiled.</p>
<p>The ORB supports the <strong>-ORBInitRef</strong> and <strong>-ORBDefaultInitRef</strong> parameters
that are defined by the Interoperable Naming Service specification, and the ORB::string_to_object operation
now supports the ObjectURL string formats (corbaloc: and corbaname:)
that are defined by the Interoperable Naming Service specification.</p>
<p>The
OMG specifies a method ORB::register_initial_reference to
register a service with the Interoperable Naming Service. However, this method
is not available in the Sun Java Core API at Version 5.0.
Programs that need to register a service in the current version must invoke
this method on the IBM internal ORB implementation class. For example, to
register a service &quot;MyService&quot;:</p>
<p> </p>
<pre class="xmp">((com.ibm.CORBA.iiop.ORB)orb).register_initial_reference("MyService",
serviceRef);</pre>
<p>Where <tt>orb</tt> is an instance of org.omg.CORBA.ORB,
which is returned from ORB.init(), and <tt>serviceRef</tt> is
a CORBA Object, which is connected to the ORB. This mechanism is an interim
one, and is not compatible with future versions or portable to non-IBM ORBs.</p></p>
<a name="corba_properties"></a>
<h3 id="corba_properties"><a href="#ToC_57">System properties for tracing the ORB</a></h3>
<div>
<p>A runtime debug feature provides improved serviceability. You might
find it useful for problem diagnosis or it might be requested by IBM service personnel.</p></div>
<p>
<a name="wq60"></a>
<h4 id="wq60">Tracing Properties</h4></p>
<dl class="parml">
<dt class="bold"><strong>com.ibm.CORBA.Debug</strong>=<em>true</em></dt>
<dd>Turns on ORB tracing.
</dd>
<dt class="bold"><strong>com.ibm.CORBA.CommTrace</strong>=<em>true</em></dt>
<dd>Adds GIOP messages (sent and received) to the trace.
</dd>
<dt class="bold"><strong>com.ibm.CORBA.Debug.Output</strong>=<em>&lt;file&gt;</em></dt>
<dd>Specify the trace output file. By default, this is of the form orbtrc.DDMMYYYY.HHmm.SS.txt.
</dd>
</dl>
<p>
<a name="wq61"></a>
<h4 id="wq61">Example of ORB tracing</h4>
<p> For example, to trace events
and formatted GIOP messages from the command line, type:</p></p>
<pre class="xmp">java -Dcom.ibm.CORBA.Debug=true
     -Dcom.ibm.CORBA.CommTrace=true <em>&lt;myapp&gt;</em></pre>
<p>
<a name="wq62"></a>
<h4 id="wq62">Limitations</h4>
<p>Do not turn on tracing for normal operation,
because it might cause performance degradation. Even if you have switched
off tracing, FFDC (First Failure Data Capture) is still working, so serious
errors are reported. If a debug output file is generated, examine it to check
on the problem. For example, the server might have stopped without performing
an ORB.shutdown().</p>
<p>The content and format of the
trace output might vary from version to version.</p></p>
<p></p>
<a name="corba_tuning"></a>
<h3 id="corba_tuning"><a href="#ToC_61">System properties for tuning the ORB</a></h3>
<div>
<p>The ORB can be tuned to work well with your specific network. The
properties required to tune the ORB are described here.</p></div>
<p></p>
<dl class="parml">
<dt class="bold"><strong>com.ibm.CORBA.FragmentSize</strong>=<em>&lt;size in bytes&gt;</em></dt>
<dd>Used to control GIOP 1.2 fragmentation. The default size is 1024 bytes.

<p>To disable fragmentation, set the fragment size to 0 bytes:</p>
<pre class="xmp">java -Dcom.ibm.CORBA.FragmentSize=0 <em>&lt;myapp&gt;</em></pre>
</dd>
<dt class="bold"><strong>com.ibm.CORBA.RequestTimeout</strong>=<em>&lt;time in
seconds&gt;</em></dt>
<dd>Sets the maximum time to wait for a CORBA Request. By default the ORB
waits indefinitely. Do not set the timeout too low to avoid connections ending
unnecessarily.
</dd>
<dt class="bold"><strong>com.ibm.CORBA.LocateRequestTimeout</strong>=<em>&lt;time
in seconds&gt;</em></dt>
<dd>Set the maximum time to wait for a CORBA LocateRequest. By default the
ORB waits indefinitely.
</dd>
<dt class="bold"><strong>com.ibm.CORBA.ListenerPort</strong>=<em>&lt;port number&gt;</em></dt>
<dd>Set the port for the ORB to read incoming requests on. If this property
is set, the ORB starts listening as soon as it is initialized. Otherwise,
it starts listening only when required.
</dd>
</dl>
<a name="corba_security"></a>
<h3 id="corba_security"><a href="#ToC_62">Java security permissions for the ORB</a></h3>
<div>
<p>When running with a Java SecurityManager,
invocation of some methods in the CORBA API classes might cause permission
checks to be made, which might result in a SecurityException.
If your program uses any of these methods, ensure that it is granted the necessary
permissions.</p></div>
<p></p>
<a name="corba_security__corbatable"></a>
<table id="corba_security__corbatable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Table 2. Methods affected when running with Java SecurityManager</caption>
<thead valign="bottom">
<tr>
<th id="wq66" width="32%" align="left">Class/Interface</th>
<th id="wq67" width="32%" align="left">Method</th>
<th id="wq68" width="34%" align="left">Required permission</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq66">org.omg.CORBA.ORB</td>
<td headers="wq67">init</td>
<td headers="wq68">java.net.SocketPermission resolve</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA.ORB</td>
<td headers="wq67">connect</td>
<td headers="wq68">java.net.SocketPermission listen</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA.ORB</td>
<td headers="wq67">resolve_initial_references</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. portable.ObjectImpl</td>
<td headers="wq67">_is_a</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. portable.ObjectImpl</td>
<td headers="wq67">_non_existent</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. portable.ObjectImpl</td>
<td headers="wq67">OutputStream _request (String, boolean)</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. portable.ObjectImpl</td>
<td headers="wq67">_get_interface_def</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. Request</td>
<td headers="wq67">invoke</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. Request</td>
<td headers="wq67">send_deferred</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">org.omg.CORBA. Request</td>
<td headers="wq67">send_oneway</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
<tr>
<td headers="wq66">javax.rmi. PortableRemoteObject</td>
<td headers="wq67">narrow</td>
<td headers="wq68">java.net.SocketPermission connect</td>
</tr>
</tbody>
</table>
<a name="corba_classes"></a>
<h3 id="corba_classes"><a href="#ToC_63">ORB implementation classes</a></h3>
<div>
<p>A list of the ORB implementation classes.</p></div>
<p>
<p>The ORB implementation classes in this release are: 
</p>
<ul>
<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>These are the default values, and you are advised not to set these
properties or refer to the implementation classes directly.  For portability,
make references only to the CORBA API classes, and not to the implementation.
These values might be changed in future releases.</p></p>
<a name="rmi-iiop"></a>
<h2 id="rmi-iiop"><a href="#ToC_64">RMI over IIOP</a></h2>
<div>
<p>Java Remote Method Invocation (RMI) provides a simple
mechanism for distributed Java programming. RMI over IIOP (RMI-IIOP)
uses the Common Object Request Broker Architecture (CORBA) standard Internet
Inter-ORB Protocol (IIOP) to extend the base Java RMI to perform communication. This
allows direct interaction with any other CORBA Object Request Brokers (ORBs),
whether they were implemented in Java or another programming language.</p></div>
<p>The following documentation is available:</p>
<ul>
<li>The <a href="http://www.ibm.com/developerworks/java/rmi-iiop" target="_blank">RMI-IIOP Programmer's Guide</a> is an introduction to
writing RMI-IIOP programs.</li>
<li>The demo directory  contains: 

<ul>
<li>A "Hello World" example that can switch between the Java Remote
Method Protocol (JRMP) and IIOP protocols (demo\rmi-iiop\hello)</li>
<li>A "Hello World" example that interacts with a standard Interface Description
Language (IDL) program (demo\rmi-iiop\idl)</li></ul></li>
<li>The <cite>Java Language to IDL Mapping</cite> document is a detailed
technical specification of RMI-IIOP: <a href="http://www.omg.org/cgi-bin/doc?ptc/00-01-06.pdf" target="_blank">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_65">Implementing the Connection Handler Pool for RMI</a></h2>
<div>
<p>Thread pooling for RMI Connection Handlers is not enabled by default.</p></div>
<p>
<p>To enable the connection pooling implemented at the RMI TCPTransport level,
set the option  </p>
<pre class="xmp">-Dsun.rmi.transport.tcp.connectionPool=true</pre>
<p>This
version of the Runtime Environment does not have a setting that you can use
to limit the number of threads in the connection pool.</p></p>
<a name="bigd"></a>
<h2 id="bigd"><a href="#ToC_66">Enhanced BigDecimal</a></h2>
<div>
<p>From Java 5.0, the IBM BigDecimal class
has been adopted by Sun as java.math.BigDecimal. The com.ibm.math.BigDecimal class
is reserved for possible future use by IBM and is currently deprecated. Migrate
existing Java code to use java.math.BigDecimal.</p></div>
<p>The new java.math.BigDecimal uses the
same methods as both the previous java.math.BigDecimal and com.ibm.math.BigDecimal.
Existing code using java.math.BigDecimal continues to work
correctly. The two classes do not serialize.</p>
<p>To migrate existing Java code to use the java.math.BigDecimal class,
change the import statement at the top of your .java file
from: <tt class="xph">import com.ibm.math.*;</tt> to <tt class="xph">import java.math.*;</tt>.</p>
<a name="deploying"></a>
<h1 id="deploying"><a href="#ToC_67">Plug-in, Applet Viewer and
Web Start</a></h1>
<div>
<p>The Java plug-in is used to run Java applications in the browser.
The appletviewer is used to test applications designed
to be run in a browser. Java Web Start is used to deploy desktop Java applications
over a network, and provides a mechanism for keeping them up-to-date.</p></div>
<a name="using_plugin"></a>
<h2 id="using_plugin"><a href="#ToC_68">Using
the Java plug-in</a></h2>
<div>
<p>The Java plug-in is a Web browser plug-in. You use the Java plug-in
to run applets in the browser.</p></div>
<p>You must allow applets to finish loading to prevent your browser from stopping.
For example, if you use the <strong>Back</strong> button and then the <strong>Forward</strong> button
while an applet is loading, the HTML pages might be unable to load.</p>
<p>The Java plug-in is documented by Sun at: <a href="http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/</a>.</p>
<a name="suppbrowse"></a>
<h3 id="suppbrowse"><a href="#ToC_69">Supported browsers</a></h3>
<div>
<p>The Java plug-in supports Internet
Explorer, Netscape, Mozilla, and
Mozilla Firefox.</p></div>
<p></p>
<a name="suppbrowse__plugintable"></a>
<table id="suppbrowse__plugintable" width="100%" summary="" border="1" frame="border" rules="all">
<caption>Table 3. Browsers supported by the Java plug-in</caption>
<thead valign="bottom">
<tr>
<th id="wq72" width="50%" align="left" valign="top">Browser</th>
<th id="wq73" width="50%" align="left" valign="top">Supported versions</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td headers="wq72">Internet Explorer</td>
<td headers="wq73">6.0 SP1, 7.0</td>
</tr>
<tr>
<td headers="wq72">Netscape</td>
<td headers="wq73">7.2</td>
</tr>
<tr>
<td headers="wq72">Mozilla</td>
<td headers="wq73">1.7, 1.8</td>
</tr>
<tr>
<td headers="wq72">Firefox</td>
<td headers="wq73">2.0</td>
</tr>
</tbody>
</table>
<p>Later minor releases of browsers are also supported.</p>
<p>Internet
Explorer 5.01, the default browser on Windows 2000, is not supported.</p>
<a name="installing_plugin_win"></a>
<h3 id="installing_plugin_win"><a href="#ToC_70">Installing the Java plug-in</a></h3>
<div>
<p>Use the Java control panel to install the Java plug-in
for Internet Explorer, Mozilla, and Netscape.</p></div>
<p>Install the IBM SDK for Java before installing the Java plug-in.</p>
<p>To install the Java plug-in:</p>
<ol type="1">
<li>Open the Windows Control Panel.</li>
<li>Double-click IBM Control Panel for Java.</li>
<li>Select the <strong>Advanced</strong> tab.</li>
<li>Select <strong>&lt;APPLET&gt; tag support</strong>.</li>
<li>Select the check boxes for the browsers you want to install the Java plug-in
for. Clear the check box for any browser you want to remove the Java plug-in
from.</li></ol>
<p></p>
<a name="wq78"></a>
<div class="note-noindent" id="wq78">
<span class="notetitle">Restriction:</span> <span class="notebody">On Windows Vista with Federal Desktop Core
Configuration (FDCC), you must run the Java Control Panel in elevated privilege
mode. Browse to the &lt;SDK&gt;\jre\bin directory in Explorer,
right-click on javacpl.exe, and select <strong>Run
as administrator</strong>.</span></div>
<a name="plugin_ssv"></a>
<h3 id="plugin_ssv"><a href="#ToC_71">Secure Static Versioning (SSV) support</a></h3>
<div>
<p>Static versioning allows applets to request a specific JVM version
to be run under. Because this capability also allows applets to exploit old
security vulnerabilities on systems that have been upgraded to a new JVM,
Secure Static Versioning is now used on Internet Explorer.</p></div>
<p>
<p>By default, all applets are run under the latest installed JVM.
To disable SSV, set the following registry key to 0:</p>
<p>HKEY_LOCAL_MACHINE\Software\IBM\Java
Deployment\Policy\EnableSecureStaticVersioning</p>
<p>If
the registry key does not exist, SSV is enabled.</p>
<p>SSV
will not function if third-party browser extensions are disabled in Internet
Explorer. To enable third-party browser extensions:</p></p>
<ol type="1">
<li>Open Internet Explorer.</li>
<li>Click <strong>Tools</strong> -&gt; <strong>Internet Options</strong>.</li>
<li>Click the <strong>Advanced</strong> tab.</li>
<li>Select the <strong>Enable third-party browser extensions</strong> check
box.</li></ol>
<p>If third-party browser extensions are disabled after
SSV has been used, SSV will continue to function.</p>
<p>To provide protection for the Mozilla and Firefox browsers,
the Plug-in for Internet Explorer will automatically remove all Java Plug-ins
from the Mozilla and Firefox Plug-in directories. This happens each time an
applet is run under Internet Explorer.</p>
<p>To
reinstall a Java Plug-in for Mozilla or Firefox, use the Java Control
Panel.</p>
<a name="plugin_dom"></a>
<h3 id="plugin_dom"><a href="#ToC_72">Common Document Object Model (DOM) support</a></h3>
<div>
<p>Because of limitations in particular browsers, you might not be
able to implement all the functions of the org.w3c.dom.html package.</p></div>
<p>
<p>One of the following errors is thrown: 
</p>
<ul>
<li> sun.plugin.dom.exception.InvalidStateException</li>
<li> sun.plugin.dom.exception.NotSupportedException</li></ul></p>
<a name="plugin_dbcs"></a>
<h3 id="plugin_dbcs"><a href="#ToC_73">Using DBCS parameters</a></h3>
<div>
<p>The Java plug-in supports double-byte characters (for example,
Chinese Traditional BIG-5, Korean, and Japanese) as parameters for the tags &lt;APPLET&gt;, &lt;OBJECT&gt;,
and &lt;EMBED&gt;. You must select the correct character encoding
for your HTML document so that the Java plug-in can parse the parameter.</p></div>
<p>
<p>Specify character encoding for your HTML document by using the <tt class="xph">&lt;META&gt;</tt> tag
in the <tt class="xph">&lt;HEAD&gt;</tt> section like this: </p>
<pre class="xmp">&lt;meta http-equiv="Content-Type" content="text/html; charset=big5"&gt;</pre><p class="indatacontent">This example tells the browser to use the Chinese BIG-5 character encoding
to parse the HTML file.</p>
<p>Some older versions of browsers
might not understand this tag correctly. In this case, you can force the browser
to ignore this tag, but you might have to change the encoding manually. To
manually specify which encoding you want to use to parse the HTML file:  
</p>
<dl class="parml">
<dt class="bold">Internet Explorer 5/6</dt>
<dd><strong>View Menu</strong> -&gt; <strong>Encoding</strong>
</dd>
<dt class="bold">Netscape 4</dt>
<dd><strong>View Menu</strong> -&gt; <strong>Character Set</strong>
</dd>
<dt class="bold">Netscape 6</dt>
<dd><strong>View Menu</strong> -&gt; <strong>Character Coding</strong>
</dd>
</dl></p>
<a name="applets"></a>
<h2 id="applets"><a href="#ToC_74">Working with applets</a></h2>
<div>
<p>With the Applet Viewer, you can run one or more applets that are
called by reference in a Web page (HTML file) by using the &lt;APPLET&gt; tag.
The Applet Viewer finds the &lt;APPLET&gt; tags in the HTML
file and runs the applets, in separate windows, as specified by the tags.</p></div>
<p>Because the Applet Viewer is for viewing applets, it cannot display a whole
Web page that contains many HTML tags. It parses only the &lt;APPLET&gt; tags
and no other HTML on the Web page.</p>
<a name="applet_viewer"></a>
<h3 id="applet_viewer"><a href="#ToC_75">Running and debugging applets with the Applet Viewer</a></h3>
<div>
<p>Use the following commands to run and debug an applet with the
Applet Viewer.</p></div>
<p>
<p><strong>Running applets with the Applet Viewer:</strong></p>
<p>From a command prompt, enter:</p></p>
<pre class="xmp">   appletviewer <em>&lt;name&gt;</em></pre>
<p>where <em>&lt;name&gt;</em> is one of the following:</p>
<ul>
<li>The file name of an HTML file that calls an applet.</li>
<li>The URL of a Web page that calls an applet.</li></ul>
<p>For example, to invoke the Applet Viewer on an HTML file that calls
an applet, type at a command prompt:</p>
<pre class="xmp">appletviewer <em>&lt;demo&gt;</em>\GraphLayout\example1.html</pre>
<p> Where <em>&lt;demo&gt;</em> is replaced by the
full path into which you unzipped the demo package.</p>
<p>To invoke the Applet
Viewer on a Web page, type at a command prompt:</p>
<pre class="xmp">appletviewer http://java.sun.com/applets/jdk/1.4/demo/applets/NervousText/example1.html</pre>
<p>The Applet Viewer does not recognize the <strong>charset</strong> option
of the &lt;</p>
<pre class="xmp">META</pre><p class="indatacontent">&gt; tag. If the file that the Applet
Viewer loads is not encoded as the system default, an I/O exception might
occur. To avoid the exception, use the <strong>-encoding</strong> option
when you run appletviewer.  For example:  </p>
<pre class="xmp">appletviewer -encoding JISAutoDetect sample.html</pre>
<a name="applet_debugging"></a>
<h4 id="applet_debugging"></h4>
<p>
<p><strong>Debugging applets with the Applet Viewer:</strong></p>
<p>For
example:</p></p>
<pre class="xmp">cd <em>&lt;demo&gt;</em>\TicTacToe
appletviewer -debug example1.html</pre>
<p>Where <em>&lt;demo&gt;</em> is
replaced by the full path into which you unzipped the demo package.</p>
<p>You can find documentation about how to debug applets using
the Applet Viewer at the Sun Web site: <a href="http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/debugger.html" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/debugger.html</a>.</p>
<a name="clsids"></a>
<h3 id="clsids"><a href="#ToC_77">Unique CLSIDs</a></h3>
<div>
<p>A unique set of CLSIDs have been added to the IBM JVM from Version 5.0 Service Refresh 1.</p></div>
<p> The following are the new CLSIDs:  </p>
<pre class="xmp">1ACECAFE-0015-0000-0000-ABCDEFFEDCBA
1ACECAFE-0015-0000-0000-ABCDEFFEDCBB</pre><p class="indatacontent">You can refer to the above
CLSIDs in the OBJECT Tag for your applets.</p>
<p>In addition, the following existing CLSIDs are also supported for compatibility
purposes: </p>
<pre class="xmp">CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA
CAFEEFAC-0015-0000-0000-ABCDEFFEDCBB</pre>
<a name="using_webstart"></a>
<h2 id="using_webstart"><a href="#ToC_78"> Using
Web Start</a></h2>
<div>
<p>Java Web Start is used for Java application deployment.</p></div>
<p>
<p>With Web Start, you can launch and manage applications
directly from the Web. Applications are cached to minimize installation times.
Applications are automatically upgraded when new versions become available.</p></p>
<p>
<p>Web Start supports these java-vm-args documented at <a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources</a>: 
</p>
<ul>
<li>-verbose</li>
<li>-version</li>
<li>-showversion</li>
<li>-help</li>
<li>-X</li>
<li>-ea</li>
<li>-enableassertions</li>
<li>-da</li>
<li>-disableassertions</li>
<li>-esa</li>
<li>-enablesystemassertions</li>
<li>-dsa</li>
<li>-disablesystemassertions</li>
<li>-Xint</li>
<li>-Xnoclassgc</li>
<li>-Xdebug</li>
<li>-Xfuture</li>
<li>-Xrs</li>
<li>-Xms</li>
<li>-Xmx</li>
<li>-Xss</li></ul></p>
<p>
<p>Web Start also supports <strong>-Xgcpolicy</strong> to set
the garbage collection policy.</p></p>
<p>
<p>For information about the browsers that support Web Start, see <a href="#suppbrowse">Supported browsers</a>.</p></p>
<p>
<p>For more information about Web Start, see: 
</p>
<ul>
<li><a href="http://java.sun.com/products/javawebstart" target="_blank">http://java.sun.com/products/javawebstart</a> and</li></ul><p class="indatacontent"> </p>
<ul>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/index.html</a>.</li></ul><p class="indatacontent"> For more information about deploying applications, see: </p>
<ul>
<li><a href="http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html" target="_blank">http://java.sun.com/j2se/1.5.0/docs/guide/deployment/index.html</a>.</li></ul></p>
<a name="installing_webstart"></a>
<h3 id="installing_webstart"><a href="#ToC_79">Running Web Start</a></h3>
<div>
<p>Web Start can be run from a Web page or the command line. Web Start
applications are stored in the Java Application Cache.</p></div>
<p></p>
<p>
<p>You can invoke Web Start in a number of different ways.</p></p>
<ul>
<li>Select a link on a Web page that refers to a .jnlp file.</li>
<li>At a command prompt,
type: 
<pre class="xmp">javaws <em>&lt;URL&gt;</em></pre>Where <em>&lt;URL&gt;</em> is
the location of a .jnlp file.</li>
<li>If you have used Java Web Start to open the application in
the past, use the Java Application Cache Viewer. At a command prompt, type:
<pre class="xmp">C:\Program Files\IBM\Java50\jre\bin\javaws</pre> 

<p>All Java Web
Start applications are stored in the Java Application Cache. An application is
downloaded only if the latest version is not in the cache.</p></li></ul>
<a name="webstart_ssv"></a>
<h3 id="webstart_ssv"><a href="#ToC_80">WebStart
Secure Static Versioning</a></h3>
<div>
<p>Static versioning allows Web Start applications to request a specific
JVM version on which those applications will run. Because static versioning
also allows applications to exploit old security vulnerabilities on systems
which have been upgraded to a new JVM, Secure Static Versioning (SSV) is now
used by default.</p></div>
<p>With SSV, the user is warned before running any unsigned Web Start application
that requests a specific JVM, if the requested JVM is installed. Signed applications
and applications that request the latest version of the JVM run
as normal.</p>
<p>You can disable SSV by setting the <strong>deployment.javaws.ssv.enabled</strong> property
in the deployment.properties file to false.</p>
<a name="shipping"></a>
<h2 id="shipping"><a href="#ToC_81">Distributing Java applications</a></h2>
<div>
<p>Java applications typically consist of class, resource,
and data files.</p></div>
<p>When you distribute a Java application, your software package
probably consists of the following parts:</p>
<ul>
<li>Your own class, resource, and data files</li>
<li>An installation procedure or program</li></ul>
<p>To run your application,
a user needs the Runtime Environment for Windows.  The  SDK for Windows software contains a Runtime Environment. However, you cannot assume
that your users have the SDK for Windows software installed.</p>
<p>Your SDK for Windows software license does <strong>not</strong> allow
you to redistribute any of the SDK's
files with your application. You must ensure that a licensed
version of the SDK for Windows is installed on the target
machine.</p>
<a name="classdatasharing"></a>
<h1 id="classdatasharing"><a href="#ToC_82">Class data sharing between JVMs</a></h1>
<div>
<p>Class data sharing allows multiple JVMs to share
a single space in memory.</p></div><a id="idx33" name="idx33"></a>
<p>The Java Virtual Machine (JVM) allows you to
share data between JVMs by storing it in a cache in shared memory. Sharing
reduces the overall virtual memory consumption when more than one JVM shares
a cache. Sharing also reduces the startup time for a JVM after the cache has
been created. The shared class cache is independent of any active JVM and
persists beyond the lifetime of the JVM that created the cache.</p>
<p>A shared cache can contain:
</p>
<ul>
<li>Bootstrap classes</li>
<li>Application classes</li>
<li>Metadata that describes the classes</li></ul>
<a name="shc_overview"></a>
<h2 id="shc_overview"><a href="#ToC_83">Overview of class data sharing</a></h2>
<div>
<p>Class data sharing provides a transparent method of reducing memory
footprint and improving JVM start-up time.</p></div>
<p>
<a name="wq92"></a>
<h3 id="wq92">Enabling class data sharing</h3>
<p>Enable class data sharing
by using the <strong>-Xshareclasses</strong> option when starting a JVM.
The JVM connects to an existing cache or creates a new cache if one does not
exist.</p>
<p>All bootstrap and application classes loaded by the JVM are shared
by default. Custom classloaders share classes automatically if they extend
the application classloader; otherwise, they must use the Java Helper
API provided with the JVM to access the cache. See <a href="#adaptingclassloaders">Adapting custom classloaders to share classes</a>.</p></p>
<p>
<a name="wq93"></a>
<h3 id="wq93">Cache access</h3>
<p> Any JVM
connected to a cache can update
the cache. Any number of JVMs can concurrently read from the cache, even while
another JVM is writing to it.</p>
<p>You must take care if runtime bytecode
modification is being used. See <a href="#runtimebytecode">Runtime bytecode modification</a> for
more information.</p></p>
<p>
<a name="wq94"></a>
<h3 id="wq94">Dynamic updating of the cache</h3>
<p>Because the shared
class cache persists beyond the lifetime of any JVM, the cache is updated
dynamically to reflect any modifications that might have been made to JARs
or classes on the file system. The dynamic updating makes the cache transparent
to the application using it.</p></p>
<p>
<a name="wq95"></a>
<h3 id="wq95">Cache security</h3>
<p>Access to the shared class cache
is limited by operating system permissions and Java security permissions. Only a classloader that has registered to share class
data can update the shared class cache.</p>
<p>If a Java SecurityManager is
installed, classloaders, excluding the default bootstrap, application, and
extension classloaders, must be granted permission to share classes by adding SharedClassPermission lines
to the java.policy file. See <a href="#usingsharedclasspermissions">Using SharedClassPermission</a>.
The RuntimePermission createClassLoader restricts
the creation of new classloaders and therefore also restricts access to the
cache.</p></p>
<p>
<a name="wq96"></a>
<h3 id="wq96">Cache lifespan</h3>
<p>Multiple caches can exist on a system
and you specify them by name as a suboption to the <strong>-Xshareclasses</strong> command.
A JVM can connect to only one cache at any one time.</p>
<p>You
may override the default cache size on startup using <strong>-Xscmx&lt;n&gt;&lt;size&gt;</strong>.
This size is then fixed for the lifetime of the cache. Caches exist until
they are explicitly destroyed using a suboption to the <strong>-Xshareclasses</strong> command
or until the system is rebooted.</p></p>
<p>
<a name="wq97"></a>
<h3 id="wq97">Cache utilities</h3>
<p>All cache utilities are suboptions
to the <strong>-Xshareclasses</strong> command. See <a href="#sharedclassesxoptions">Class data sharing command-line options</a> or
use <strong>-Xshareclasses:help</strong> to see a list of available suboptions.</p></p>
<a name="sharedclassesxoptions"></a>
<h2 id="sharedclassesxoptions"><a href="#ToC_90">Class data sharing command-line options</a></h2>
<div>
<p>Class data sharing and the cache management utilities are controlled
using command-line options to the Java launcher.</p></div><a id="idx34" name="idx34"></a><a id="idx35" name="idx35"></a>
<p>
<p>For options that take a <em>&lt;size&gt;</em> parameter,
suffix the number with "k" or "K" to indicate kilobytes, "m" or "M" to indicate
megabytes, or "g" or "G" to indicate gigabytes.</p></p>
<dl class="parml">
<dt class="bold"><strong>-Xscmx</strong><em>&lt;size&gt;</em></dt>
<dd>Specifies cache size. This option applies only if a cache is being created
and no cache of the same name exists.  The default cache size is platform-dependent.
You can find out the size value being used by adding <strong>-verbose:sizes</strong> as
a command-line argument. The minimum cache size is 4 KB. The maximum cache
size is also platform-dependent. (See <a href="#cachesizelimits">Cache size limits</a>.)
</dd>
<dt class="bold"><strong>-Xshareclasses</strong>:<em>&lt;suboption&gt;</em>[,<em>&lt;suboption&gt;</em>...]</dt>
<dd>Enables class data sharing. Can take a number of suboptions, some of which
are cache utilities. Cache utilities perform the required operation on the
specified cache, without starting the VM. You can combine multiple suboptions,
separated by commas, but the cache utilities are mutually exclusive. When
running cache utilities, the message <tt>Could not create the Java virtual
machine</tt> is expected. Cache utilities do not create the virtual machine.

<p>You can use the following suboptions
with the <strong>-Xshareclasses</strong> option: 
</p>
<dl class="parml">
<dt class="bold"><strong>help</strong></dt>
<dd>Lists all the command-line suboptions.
</dd>
<dt class="bold"><strong>name</strong>=<em>&lt;name&gt;</em></dt>
<dd>Connects to a cache of a given name, creating the cache if it does not
already exist. Also used to indicate the cache that is to be modified by cache
utilities; for example, <strong>destroy</strong>. Use the <strong>listAllCaches</strong> utility
to show which named caches are currently available. If you do not specify
a name, the default name &quot;sharedcc_%u&quot; is used. %u in the cache name
inserts the current user name.
</dd>
<dt class="bold"><strong>verbose</strong></dt>
<dd>Enables verbose output, which provides overall status on the shared class
cache and more detailed error messages.
</dd>
<dt class="bold"><strong>verboseIO</strong></dt>
<dd>Gives detailed output on the cache I/O activity, listing information on
classes being stored and found. Each classloader is given a unique ID (the
bootstrap loader is always 0) and the output shows the classloader hierarchy
at work, where classloaders must ask their parents for a class before they
can load it themselves. It is normal to see many failed requests; this behavior
is expected for the classloader hierarchy.
</dd>
<dt class="bold"><strong>verboseHelper</strong></dt>
<dd>Enables verbose output for the Java Helper API. This output shows you how
the Helper API is used by your ClassLoader.
</dd>
<dt class="bold"><strong>silent</strong></dt>
<dd>Turns off all shared classes messages, including error messages. Unrecoverable
error messages, which prevent the JVM from initializing, are displayed.
</dd>
<dt class="bold"><strong>nonfatal</strong></dt>
<dd>Allows the JVM to start even if class data sharing fails.
Normal behavior for the JVM is to refuse to start if class data sharing fails.
If you select <strong>nonfatal</strong> and the shared classes cache fails
to initialize, the JVM starts without class data sharing.
</dd>
<dt class="bold"><strong>none</strong></dt>
<dd>Can be added to the end of a command line to disable class data sharing.
This suboption overrides class sharing arguments found earlier on the command
line.
</dd>
<dt class="bold"><strong>modified=</strong><em>&lt;modified context&gt;</em></dt>
<dd>Used when a JVMTI agent is installed that might modify bytecode at runtime.
If you do not specify this suboption and a bytecode modification agent is
installed, classes are safely shared with an extra performance cost. The <em>&lt;modified
context&gt;</em> is a descriptor chosen by the user; for example, &quot;myModification1&quot;.
This option partitions the cache, so that only JVMs using context myModification1
can share the same classes. For instance, if you run HelloWorld with a modification
context and then run it again with a different modification context, all classes
are stored twice in the cache. See <a href="#runtimebytecode">Runtime bytecode modification</a> for
more information.
</dd>
<dt class="bold"><strong>destroy</strong> (Utility option)</dt>
<dd>Destroys a cache using the name specified in the <strong>name</strong>=<em>&lt;name&gt;</em> suboption.
If the name is not specified, the default cache is destroyed. A cache can
be destroyed only if all VMs using it have shut down, and the user has sufficient
permissions.
</dd>
<dt class="bold"><strong>destroyAll</strong> (Utility option)</dt>
<dd>Tries to destroy all caches available to the user. A cache
can be destroyed only if all VMs using it have shut down, and the user has
sufficient permissions.
</dd>
<dt class="bold"><strong>expire</strong>=<em>&lt;time in minutes&gt;</em></dt>
<dd>Destroys all caches that have been unused for the time specified before
loading shared classes. This option is not a utility option because it does
not cause the JVM to exit.  On NTFS file systems, the
expire option is accurate to the nearest hour.
</dd>
<dt class="bold"><strong>listAllCaches</strong> (Utility option)</dt>
<dd>Lists all the caches on the system, describing if they are
in use and when they were last used.
</dd>
<dt class="bold"><strong>printStats</strong> (Utility option)</dt>
<dd>Displays summary statistics information about the cache
specified in the <strong>name</strong>=<em>&lt;name&gt;</em> suboption.
If the name is not specified, statistics are displayed about the default cache.
The most useful information displayed is how full the cache is and how many
classes it contains. Stale classes are classes that have been updated on the
file system and which the cache has therefore marked "stale". Stale classes
are not purged from the cache and can be reused. See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> for more information.
</dd>
<dt class="bold"><strong>printAllStats</strong> (Utility option)</dt>
<dd>Displays detailed information for the cache specified by
the <strong>name</strong> suboption. Every class is listed in chronological
order, with a reference to the location from which it was loaded.

<p>See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> for more information.</p>
</dd>
</dl>
</dd>
</dl>
<a name="shc_admin"></a>
<h2 id="shc_admin"><a href="#ToC_91">Creating, populating, monitoring, and deleting a cache</a></h2>
<div>
<p>An overview of the lifecycle of a shared class data cache including
examples of the cache management utilities.</p></div><a id="idx36" name="idx36"></a><a id="idx37" name="idx37"></a><a id="idx38" name="idx38"></a><a id="idx39" name="idx39"></a>
<p>To enable class data sharing, add <strong>-Xshareclasses[:name=&lt;name&gt;]</strong> to
your application command line.</p>
<p>The JVM either connects to an existing cache of the given name or creates
a new cache of that name. If a new cache is created, it is populated with
all bootstrap and application classes being loaded until the cache becomes
full. If two or more JVMs are started concurrently, they populate the cache
concurrently.</p>
<p>To check that the cache has been created, run <tt class="xph">java -Xshareclasses:listAllCaches</tt>.
To see how many classes and how much class data is being shared, run <tt class="xph">java
-Xshareclasses:[name=&lt;name&gt;],printStats</tt>. You can run these
utilities after the application JVM has terminated or in another command window.</p>
<p>For more feedback on cache usage while the JVM is running, use the <strong>verbose</strong> suboption.
For example, <tt class="xph">java -Xshareclasses:[name=&lt;name&gt;],verbose</tt>.</p>
<p>To see classes being loaded from the cache or stored in the cache, add <tt class="xph">-Xshareclasses:[name=&lt;name&gt;],verboseIO</tt> to your
application command line.</p>
<p>To delete the cache, run <tt class="xph">java -Xshareclasses:[name=&lt;name&gt;],destroy</tt>.
 You usually delete caches only if they contain many stale classes or if the
cache is full and you want to create a bigger cache.</p>
<p>You should tune the cache size for your specific application, because the
default is unlikely to be the optimum size. To determine the optimum cache
size, specify a large cache, using <strong>-Xscmx</strong>, run the application,
and then use <strong>printStats</strong> to determine how much class data
has been stored. Add a small amount to the value shown in <strong>printStats</strong> for
contingency. Because classes can be loaded at any time during the lifetime
of the JVM, it is best to do this analysis after the application has terminated.
However, a full cache does not have a negative impact on the performance or
capability of any JVMs connected to it, so it is acceptable to decide on a
cache size that is smaller than required.</p>
<p>If a cache becomes full, a message is displayed on the command line of
any JVMs using the <strong>verbose</strong> suboption. All JVMs sharing
the full cache then loads any further classes into their own process memory.
Classes in a full cache can still be shared, but a full cache is read-only
and cannot be updated with new classes.</p>
<a name="shc_performance"></a>
<h2 id="shc_performance"><a href="#ToC_92">Performance and memory consumption</a></h2>
<div>
<p>Class data sharing is particularly useful on systems that use more
than one JVM running similar code; the system benefits from reduced virtual
memory consumption. It is also useful on systems that frequently start up
and shut down JVMs, which benefit from the improvement in startup time.</p></div><a id="idx40" name="idx40"></a><a id="idx41" name="idx41"></a>
<p>The overhead to create and populate a new cache is minimal. The JVM startup
cost in time for a single JVM is typically between 0 and 5% slower compared
with a system not using class data sharing, depending on how many classes
are loaded. JVM startup time improvement with a populated cache is typically
between 10% and 40% faster compared with a system not using class data sharing,
depending on the operating system and the number of classes loaded. Multiple
JVMs running concurrently show greater overall startup time benefits.</p>
<p>Duplicate classes are consolidated in the shared class cache.
For example, class A loaded from myClasses.jar and class
A loaded from myOtherClasses.jar (with identical content)
is stored only once in the cache. The <strong>printAllStats</strong> utility
shows multiple entries for duplicated classes, with each entry pointing to
the same class.</p>
<p>When you run your application with class data sharing, you can use the
operating system tools to see the reduction in virtual memory consumption.</p>
<a name="shc_limitations"></a>
<h2 id="shc_limitations"><a href="#ToC_93">Considerations and limitations of using class data sharing</a></h2>
<div>
<p>Consider these factors when deploying class data sharing in a product
and using class data sharing in a development environment.</p></div><a id="idx42" name="idx42"></a><a id="idx43" name="idx43"></a>
<a name="cachesizelimits"></a>
<h3 id="cachesizelimits"><a href="#ToC_94">Cache size limits</a></h3>
<div>
<p>The maximum theoretical cache size is 2 GB. The size of the cache
you can specify is limited by the amount of available disk space and available
virtual address space.</p></div><a id="idx44" name="idx44"></a>
<p>The cache is limited by the following factors: 
</p>
<ul>
<li>Available disk space. A file is created to store the class data in a directory
called javasharedresources. This directory is created
in the user's profile directory, so by default it will be in C:\Documents
and Settings\&lt;username&gt;\Local Settings\Application Data\javasharedresources\.
The shared file is deleted every time Windows is restarted.</li>
<li>Available virtual address space. Because the virtual address space of
a process is shared between the shared classes cache and the Java heap,
increasing the maximum size of the Java heap reduces the size of the shared
classes cache you can create.</li></ul>
<a name="runtimebytecode"></a>
<h3 id="runtimebytecode"><a href="#ToC_95">Runtime bytecode modification</a></h3>
<div>
<p>Any JVM using a JVM Tool Interface (JVMTI) agent that can modify
bytecode data must use the <strong>modified=</strong><em>&lt;modified_context&gt;</em> suboption
if it wants to share the modified classes with another JVM.</p></div><a id="idx45" name="idx45"></a>
<p>The modified context is a user-specified descriptor that
describes the type of modification being performed. The modified context partitions
the cache so that all JVMs running under the same context share a partition.</p>
<p>This partitioning allows JVMs that are not using modified bytecode to safely
share a cache with those that are using modified bytecode. All JVMs using
a given modified context must modify bytecode in a predictable, repeatable
manner for each class, so that the modified classes stored in the cache have
the expected modifications when they are loaded by another JVM. Any modification
must be predictable because classes loaded from the shared class cache cannot
be modified again by the agent.</p>
<p>If a JVMTI agent is used without a modification context,
classes are still safely shared by the JVM, but with a small impact on performance.
Using a modification context with a JVMTI agent avoids the need for extra
checks and therefore has no impact on performance.  A custom ClassLoader that
extends java.net.URLClassLoader and modifies bytecode at
load time without using JVMTI automatically stores that modified bytecode
in the cache, but the cache does not treat the bytecode as modified. Any other
VM sharing that cache loads the modified classes. You can use the <strong>modified=</strong><em>&lt;modification_context&gt;</em> suboption
in the same way as with JVMTI agents to partition modified bytecode in the
cache. If a custom ClassLoader needs to make unpredictable
load-time modifications to classes, that ClassLoader must
not attempt to use class data sharing.</p>
<p>See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> for more detail on this topic.</p>
<a name="shc_os_limitations"></a>
<h3 id="shc_os_limitations"><a href="#ToC_96">Operating system limitations</a></h3>
<div>
<p>You cannot share
classes between 32-bit and 64-bit JVMs. Temporary disk space must be
available to hold cache information. The operating system enforces cache permissions.</p></div><a id="idx46" name="idx46"></a>
<p>For operating systems that
can run both 32-bit and 64-bit applications, class data sharing is not permitted
between 32-bit and 64-bit JVMs. The <strong>listAllCaches</strong> suboption
lists 32-bit or 64-bit caches, depending on the address mode of the JVM being
used.</p>
<p>The shared class cache requires disk space to store identification information
about the caches that exist on the system. This information
is in the user profile directory.  If
the identification information directory is deleted, the JVM cannot identify
the shared classes on the system and must re-create the cache.</p>
<p> The operating system enforces the permissions for
accessing a shared class cache. If you do not specify a cache name, the user
name is appended to the default name so that multiple users on the same system
create their own caches by default.</p>
<a name="usingsharedclasspermissions"></a>
<h3 id="usingsharedclasspermissions"><a href="#ToC_97">Using SharedClassPermission</a></h3>
<div>
<p>If a SecurityManager is being used with class
data sharing and the running application uses its own class loaders, you must
grant these class loaders shared class permissions before they can share classes.</p></div><a id="idx47" name="idx47"></a>
<p>You add shared class permissions to the java.policy file
using the ClassLoader class name (wildcards are permitted)
and either &quot;read&quot;, &quot;write&quot;, or &quot;read,write&quot; to determine the
access granted. For example: </p>
<pre class="xmp">permission com.ibm.oti.shared.SharedClassPermission
        "com.abc.customclassloaders.*", "read,write";</pre><p class="indatacontent">If a ClassLoader does
not have the correct permissions, it is prevented from sharing classes.  You
cannot change the permissions of the default bootstrap, application, or extension
class loaders.</p>
<a name="adaptingclassloaders"></a>
<h2 id="adaptingclassloaders"><a href="#ToC_98">Adapting custom classloaders to share classes</a></h2>
<div>
<p>Any classloader that extends java.net.URLClassLoader can
share classes without modification. You must adopt classloaders that do not
extend java.net.URLClassLoader to share class data.</p></div><a id="idx48" name="idx48"></a>
<p>You must grant all custom classloaders shared class permissions
if a SecurityManager is being used; see <a href="#usingsharedclasspermissions">Using SharedClassPermission</a>. IBM provides
several Java interfaces for various types of custom classloaders,
which allow the classloaders to find and store classes in the shared class
cache. These classes are in the com.ibm.oti.shared package.</p>
<p>The Javadoc for this package is provided with the SDK in
the docs/apidoc.zip file.</p>
<p>See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>  for more information about how
to use these interfaces.</p>
<a name="jcommchapter"></a>
<h1 id="jcommchapter"><a href="#ToC_99">Using the Java Communications API (JavaComm)</a></h1>
<div>
<p>The Java Communications (API) package (JavaComm) is an optional
package provided for use with the Runtime Environment for Windows.
You install JavaComm independently of the SDK or Runtime Environment.</p></div>
<p>The JavaComm API gives Java applications a platform-independent
way of performing serial and parallel port communications for technologies
such as voice mail, fax, and smartcards.</p>
<p>The Java Communications API supports Electronic Industries
Association (EIA)-232 (RS232) serial ports and Institute of Electrical and
Electronics Engineers (IEEE) 1284 parallel ports and is supported on systems
with the IBM Version 5.0 Runtime Environment.</p>
<p>Using Java Communications API, you can:</p>
<ul>
<li>List ports on a system</li>
<li>Open and claim ownership of ports</li>
<li>Resolve port ownership contention among applications that use Java Communications
API</li>
<li>Perform asynchronous and synchronous I/O port-monitoring using event notification</li>
<li>Receive bean-style events describing state changes on the port</li></ul>
<a name="instcomm"></a>
<h2 id="instcomm"><a href="#ToC_100">Installing Java Communications API from a compressed file</a></h2>
<div>
<p>Make sure that the SDK or Runtime Environment is installed before
you install the Java Communications API.</p></div>
<p>
<p>To
install the Java Communications API from a compressed file:</p></p>
<ol type="1">
<li>Put the Java Communications API compressed file, <a name="instcomm__install-file"></a><span id="instcomm__install-file">ibm-java2-javacomm-50-win-i386.zip</span>,
in the directory where the SDK or Runtime Environment is installed. If you
installed to the default directory, this is C:\Program Files\IBM\Java50\.</li>
<li>Extract the compressed file. The Java Communications
API is extracted into subdirectories within the existing directory.</li></ol>
<a name="javacomm_configure"></a>
<h2 id="javacomm_configure"><a href="#ToC_101">Configuring the Java Communications API</a></h2>
<div>
<p>To use the Java Communications API, you must change
the access mode of serial and parallel ports, and set the <strong>PATH</strong> if
you did not set it when you installed Java.</p></div>
<p>
<p>See <a href="#pathcons">Setting the path</a>.</p></p>
<a name="javacomm_lnx_devices"></a>
<h3 id="javacomm_lnx_devices"><a href="#ToC_102">Specifying devices in the javax.comm.properties file</a></h3>
<div>
<p>Use the javax.comm.properties file to specify
the  drivers that are available to the Java Communications
API and whether they are parallel or serial. Do not change this file without
a very clear understanding of its use.</p></div>
<p>
<p>Port numbers are allocated sequentially to all
devices. For example, if you specify <tt class="xph">/dev/ttyS=PORT_SERIAL</tt> and
the devices <tt class="xph">/dev/ttyS0</tt> and <tt class="xph">/dev/ttyS1</tt> exist,
they will be allocated COM1 and COM2.</p>
<p><span>To
use the USB-serial connectors, uncomment the line <tt class="xph">/dev/ttyUSB=PORT_SERIAL</tt> in
the javax.comm.properties file</span>. If the devices <tt class="xph">/dev/ttyUSB0</tt> and <tt class="xph">/dev/ttyUSB1</tt> exist
and COM1 and COM2 have already been defined, the USB-serial devices are allocated
the next sequential ports, COM3 and COM4.</p></p>
<a name="javacomm_printing"></a>
<h2 id="javacomm_printing"><a href="#ToC_103">Printing limitation with the Java Communications API</a></h2>
<div>
<p>When printing with the Java Communications API, you might have
to select &quot;Form feed&quot;, &quot;Continue&quot;, or a similar option on the printer.</p></div>
<a name="javacomm_win_remove"></a>
<h2 id="javacomm_win_remove"><a href="#ToC_104">Uninstalling Java Communications API</a></h2>
<div>
<p>To uninstall the Java Communications API, delete the following
files from the directory where you installed the Runtime Environment:</p></div>
<p></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>By default, the Runtime Environment  is installed in the C:\Program Files\IBM\Java50\ directory.</p>
<a name="javacomm_apidoc"></a>
<h2 id="javacomm_apidoc"><a href="#ToC_105">The Java Communications API documentation</a></h2>
<div>
<p>You can find API documentation and samples for the Java Communications
API at the Sun Web site.</p></div>
<p>
<p><a href="http://java.sun.com/products/javacomm/" target="_blank">http://java.sun.com/products/javacomm/</a>.</p></p>
<a name="support"></a>
<h1 id="support"><a href="#ToC_106">Service and support for independent software vendors</a></h1>
<div>
<p>Contact points for service:</p></div>
<p> If you are entitled to services for the Program code pursuant to the IBM 
Solutions Developer Program, contact the IBM Solutions Developer Program through
 your normal method of access or on the Web at: <a href="http://www.ibm.com/partnerworld/" target="_blank">http://www.ibm.com/partnerworld/</a>.</p>
<p>If you have purchased a service contract (that is, IBM's Personal Systems
 Support Line or equivalent service by country), the terms and conditions
of that  service contract determine what services, if any, you are entitled
to  receive with respect to the Program.</p>
<a name="accessibility"></a>
<h1 id="accessibility"><a href="#ToC_107">Accessibility</a></h1>
<div>
<p>The user guides that are supplied with this SDK and
the Runtime Environment have been tested
using screen readers.</p></div>
<p>To change the font sizes in the user guides, use the function that is supplied
with your browser, typically found under the <strong>View</strong> menu
option.</p>
<p>For users who require keyboard navigation, a description of useful keystrokes
for Swing applications is in <cite>Swing Key Bindings</cite> at <a href="http://www.ibm.com/developerworks/java/jdk/additional/" target="_blank">http://www.ibm.com/developerworks/java/jdk/additional/</a>.</p>
<a name="access_keyboard"></a>
<h2 id="access_keyboard"><a href="#ToC_108">Keyboard traversal of JComboBox components in Swing</a></h2>
<div>
<p>If you traverse the drop-down list of a JComboBox component with the cursor keys, the button or editable field of the JComboBox does not change value until an item is selected. This is the correct behavior for this release and improves accessibility and usability by ensuring that the keyboard traversal behavior is consistent with mouse traversal behavior.</p></div>
<a name="access_webstart"></a>
<h2 id="access_webstart"><a href="#ToC_109">Web Start accessibility</a></h2>
<div>
<p>From Version 5.0, Java Web Start contains several accessibility
and usability improvements, including better support for screen readers and
improved keyboard navigation.</p></div>
<p>You can use the command line to launch a Java application that is enabled for Web
Start.  To change preference options, you must edit a configuration file, Application Data\IBM\Java\Deployment\deployment.properties in the
user's home directory. Take a backup before you edit this file. Not all of
the preferences that can be set in the Java Application Cache Viewer are available
in the configuration file.</p>
<a name="access_jconsole"></a>
<h2 id="access_jconsole"><a href="#ToC_110">JConsole accessibility</a></h2>
<div>
<p>To enable JConsole to run on Windows with the Windows look
and feel, set the <strong>swing.defaultlaf</strong> system property.</p></div>
<pre class="xmp">JConsole -J-Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel</pre>
<p>This will enable the High Contrast color schemes available in Windows to
be adopted by JConsole.</p>
<a name="win_security"></a>
<h1 id="win_security"><a href="#ToC_111">General note about security</a></h1>
<p>You can obtain JCE unrestricted jurisdiction policy files from  <a href="http://www.ibm.com/developerworks/java/jdk/security/index.html" target="_blank">http://www.ibm.com/developerworks/java/jdk/security/index.html</a>. Documentation about the IBM security packages JCE, JCEFIPS, JSSE2, JSSEFIPS,
JGSS, JAAS and hardware cryptography is also available at this Web site.</p>
<a name="rcf"></a>
<h1 id="rcf"><a href="#ToC_112">Any comments on this user guide?</a></h1>
<div>
<p>If you have any comments about this user guide, contact us through
one of the following channels. Note that these channels are not set up to
answer technical queries, but are for comments about the documentation only.</p></div>
<p>Send your comments:</p>
<ul>
<li>By e-mail to idrcf@hursley.ibm.com.</li>
<li>By fax:  

<ul>
<li>From the UK: 01962 842327</li>
<li>From elsewhere: +44 1962 842327</li></ul></li>
<li>By mail to: 
<div class="lines">IBM United Kingdom Ltd<br />
User Technologies,<br />
Mail Point 095<br />
Hursley Park<br />
Winchester<br />
Hampshire<br />
SO21 2JN<br />
United Kingdom <br />
</div></li></ul>
<p><strong>The fine print.</strong> By choosing to send a message to IBM, you acknowledge
that all information contained in your message, including feedback data, such
as questions, comments, suggestions, or the like, shall be deemed to be non-confidential
and IBM shall
have no obligation of any kind with respect to such information and shall
be free to reproduce, use, disclose, and distribute the information to others
without limitation. Further, IBM shall be free to use any ideas, concepts, know-how
or techniques contained in such information for any purpose whatsoever, including,
but not limited to, developing, manufacturing and marketing products incorporating
such information.</p>
<a name="xoptions"></a>
<h1 id="xoptions"><a href="#ToC_113">Appendix A. Nonstandard options</a></h1>
<div>
<p>The <strong>-X</strong> options listed below are nonstandard
and subject to change without notice.</p></div>
<p>
<p>For options that take a <em>&lt;size&gt;</em> parameter,
suffix the number with "k" or "K" to indicate kilobytes, "m" or "M" to indicate
megabytes, or "g" or "G" to indicate gigabytes.</p>
<p>For options that take
a <em>&lt;percentage&gt;</em> parameter, use a number from 0 to
1. For example, 50% is 0.5.</p></p>
<dl class="parml">
<dt class="bold"><strong>-Xargencoding</strong></dt>
<dd> Allows you to put Unicode escape sequences in the argument list. This
option is set to off by default.
</dd>
<dt class="bold"><strong>-Xbootclasspath</strong>:<em>&lt;directories and zip
or jar files separated by :&gt;</em></dt>
<dd> Sets the search path for bootstrap classes and resources. The default
is to search for bootstrap classes and resources within the internal VM directories
and .jar files.
</dd>
<dt class="bold"><strong>-Xbootclasspath/a</strong>:<em>&lt;directories and zip
or jar files separated by :&gt;</em></dt>
<dd> Appends the specified directories, zip, or jar files to the end of bootstrap
class path. The default is to search for bootstrap classes and resources within
the internal VM directories and .jar files.
</dd>
<dt class="bold"><strong>-Xbootclasspath/p</strong>:<em>&lt;directories and zip
or jar files separated by :&gt;</em></dt>
<dd> Prepends the specified directories, zip, or jar files to the front of
the bootstrap class path. Do not deploy applications that use the <strong>-Xbootclasspath:</strong> or <strong>-Xbootclasspath/p:</strong> option to override a class in the standard API, because such a deployment
would contravene the Java Runtime Environment binary code license.
The default is to search for bootstrap classes and resources within the internal
VM directories and .jar files.
</dd>
<dt class="bold"><a id="xoptions__xcheckjni" name="xoptions__xcheckjni"></a><strong>-Xcheck:jni</strong></dt>
<dd>Performs additional checks for JNI functions. By default, no checking
is performed.
</dd>
<dt class="bold"><a id="xoptions__xchecknabounds" name="xoptions__xchecknabounds"></a><strong>-Xcheck:nabounds</strong></dt>
<dd> Performs additional checks for JNI functions. By default, no checking
is performed.
</dd>
<dt class="bold"><a id="xoptions__classgc" name="xoptions__classgc"></a><strong>-Xclassgc</strong></dt>
<dd> Enables collection of class objects at every garbage collection. See
also <a href="#xoptions__noclassgc"><strong>-Xnoclassgc</strong></a>.
By default, this option is enabled.
</dd>
<dt class="bold"><strong>-Xcodecache</strong><em>&lt;size&gt;</em></dt>
<dd> Sets the unit size of which memory blocks are allocated to store native
code of compiled Java methods. An appropriate size can be chosen for
the application being run. By default, this is selected internally according
to the CPU architecture and the capability of your system.
</dd>
<dt class="bold"><a id="xoptions__compactexplicitgc" name="xoptions__compactexplicitgc"></a><strong>-Xcompactexplicitgc</strong></dt>
<dd>Performs a compaction for every call to <tt class="xph">System.gc()</tt>.
See also <a href="#xoptions__nocompactexplicitgc"><strong>-Xnocompactexplicitgc</strong></a>.
By default, compaction occurs only when triggered internally.
</dd>
<dt class="bold"><a id="xoptions__compactgc" name="xoptions__compactgc"></a><strong>-Xcompactgc</strong></dt>
<dd>Performs a compaction for every garbage collection. See also <a href="#xoptions__nocompactgc"><strong>-Xnocompactgc</strong></a>.
By default, compaction occurs only when triggered internally.
</dd>
<dt class="bold"><strong>-Xconcurrentbackground</strong><em>&lt;number&gt;</em></dt>
<dd>Specifies the number of low priority background  threads attached to assist
the mutator threads in concurrent mark. The default is 1.
</dd>
<dt class="bold"><strong>-Xconcurrentlevel</strong><em>&lt;number&gt;</em></dt>
<dd> Specifies the allocation "tax" rate.  It indicates the ratio between
the amount of heap allocated and the amount of heap marked.  The default is
8.
</dd>
<dt class="bold"><span class="synph"><span class="kwd">-Xconmeter</span><span class="sep">:</span><span class="var">&lt;</span><span class="var">soa</span><span class="delim">|</span><span class="var">loa</span><span class="delim">|</span><span class="var">dynamic</span><span class="var">&gt;</span></span></dt>
<dd>Determines which area's usage, LOA (Large Object Area) or SOA (Small Object
Area),  is metered and hence which allocations are taxed during concurrent
mark. The allocation tax is applied to the selected area. If <strong>-Xconmeter:dynamic</strong> 
is specified, the collector dynamically determines the area to meter based
on which area is exhausted first. By default, the option is set to <strong>-Xconmeter:soa</strong>.
</dd>
<dt class="bold"><a id="xoptions__xdbg" name="xoptions__xdbg"></a><strong>-Xdbg</strong>:<em>&lt;options&gt;</em></dt>
<dd>Loads debugging libraries to support the remote debugging of applications.
See <a href="#debugger">Debugging Java applications</a> for more information. Specifying <a href="#xoptions__runjdwp"><strong>-Xrunjdwp</strong></a> provides the
same support.
</dd>
<dt class="bold"><strong>-Xdbginfo</strong>:<em>&lt;path to symbol file&gt;</em></dt>
<dd>Loads and passes options to the debug information server. By default,
the debug information server is disabled.
</dd>
<dt class="bold"><strong>-Xdebug</strong></dt>
<dd>Starts the JVM with the debugger enabled. By default, the debugger is
disabled.
</dd>
<dt class="bold"><strong>-Xdisableexcessivegc</strong></dt>
<dd>Disables the throwing of an OutOfMemoryError if excessive
time is spent in the GC. By default, this option is off.
</dd>
<dt class="bold"><strong>-Xdisableexplicitgc</strong></dt>
<dd>Signals to the VM that calls to System.gc() should
have no effect. By default, calls to System.gc() trigger
a garbage collection.
</dd>
<dt class="bold"><strong>-Xdisablestringconstantgc</strong></dt>
<dd>Prevents strings in the string intern table from being collected. By default,
this option is disabled.
</dd>
<dt class="bold"><strong>-Xdisablejavadump</strong></dt>
<dd>Turns off Javadump generation on errors and signals. By default, Javadump
generation is enabled.
</dd>
<dt class="bold"><strong>-Xenableexcessivegc</strong></dt>
<dd>If excessive time is spent in the GC, this option returns NULL for an
allocate request and thus causes an OutOfMemoryError to
be thrown. This action occurs only when the heap has been fully expanded and
GC is taking 95% of the available time. This behavior is the default.
</dd>
<dt class="bold"><strong>-Xenableexplicitgc</strong></dt>
<dd>Signals to the VM that calls to System.gc() should
trigger a garbage collection. This is the default.
</dd>
<dt class="bold"><strong>-Xenablestringconstantgc</strong></dt>
<dd>Enables strings from the string intern table to be collected. By default,
this option is enabled.
</dd>
<dt class="bold"><strong>-Xfuture</strong></dt>
<dd>Turns on strict class-file format checks. Use this flag when you are developing
new code because stricter checks will become the default in future releases.
By default, strict format checks are disabled.
</dd>
<dt class="bold"><span class="synph"><span class="kwd">-Xgcpolicy</span><span class="sep">:</span><span class="var">&lt;</span><span class="var">optthruput</span><span class="delim">|</span><span class="var">optavgpause</span><span class="delim">|</span><span class="var">gencon</span><span class="var">&gt;</span></span></dt>
<dd>Controls the behavior of the Garbage Collector. See <a href="#garbage_options">Garbage collection options</a> for
more information.
</dd>
<dt class="bold"><strong>-Xgcthreads</strong><em>&lt;number of threads&gt;</em></dt>
<dd> Sets the number of helper threads that are used for parallel operations
during garbage collection. By default, the number of threads is set to the
number of physical CPUs present -1, with a minimum of 1.
</dd>
<dt class="bold"><strong>-Xgcworkpackets</strong><em>&lt;number&gt;</em></dt>
<dd> Specifies the total number of work packets available in the global collector.
If not specified, the collector allocates a number of packets based on the
maximum heap size.
</dd>
<dt class="bold"><strong>-Xint</strong></dt>
<dd>Makes the JVM use only the Interpreter, disabling the Just-In-Time (JIT)
compiler. By default, the JIT compiler is enabled.
</dd>
<dt class="bold"><strong>-Xiss</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the initial Java thread stack size. 2 KB by default.
Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><a id="xoptions__xjit" name="xoptions__xjit"></a><span class="synph"><span class="kwd">-Xjit</span><span class="sep">[</span><span class="delim">:</span><span class="var">&lt;suboption&gt;</span><span class="delim">,</span><span class="var">&lt;suboption&gt;</span><span class="sep">...</span><span class="sep">]</span></span></dt>
<dd>Enables the JIT. For details of the sub-options, see the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a>. See also <a href="#xoptions__xnojit"><strong>-Xnojit</strong></a>.
By default, the JIT is enabled.
</dd>
<dt class="bold"><a id="xoptions__xlinenumbers" name="xoptions__xlinenumbers"></a><strong>-Xlinenumbers</strong></dt>
<dd>Displays line numbers in stack traces, for debugging. See also <a href="#xoptions__xnolinenumbers"><strong>-Xnolinenumbers</strong></a>. By default, line numbers are on.
</dd>
<dt class="bold"><a id="xoptions__loa" name="xoptions__loa"></a><strong>-Xloa</strong></dt>
<dd>Allocates a large object area (LOA). Objects will be allocated in this
LOA rather than the SOA. By default, the LOA is enabled for all GC policies
except for subpool, where the LOA is not available. See also <a href="#xoptions__noloa"><strong>-Xnoloa</strong></a>.
</dd>
<dt class="bold"><strong>-Xloainitial</strong><em>&lt;percentage&gt;</em></dt>
<dd><em>&lt;percentage&gt;</em> is between 0 and 0.95,  which specifies
the initial percentage of the current tenure space allocated to the large
object area (LOA). The default is 0.05 or 5%.
</dd>
<dt class="bold"><strong>-Xloamaximum</strong><em>&lt;percentage&gt;</em></dt>
<dd><em>&lt;percentage&gt;</em> is between 0 and 0.95,  which specifies
the maximum percentage of the current tenure space allocated to the large
object area (LOA). The default is 0.5 or 50%.
</dd>
<dt class="bold"><a id="xoptions__xlp" name="xoptions__xlp"></a><strong>-Xlp</strong> (Windows 2003)</dt>
<dd>Requests the JVM to allocate the Java heap with large pages. If large pages
are not available, the JVM will not start, displaying the error message <tt class="xph">GC:
system configuration does not support option --&gt; '-Xlp'</tt>. Large
pages are supported by systems running Windows 2003, where the operating system
has been set up to use large pages. By default, large pages are not used.
See <a href="#alloc_large_page">Configuring large page memory allocation</a>.
</dd>
<dt class="bold"><strong>-Xmaxe</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the maximum amount by which the garbage collector expands the heap.
Typically, the garbage collector expands the heap when the amount of free
space falls below 30% (or the amount specified using <strong>-Xminf</strong>),
by the amount required to restore the free space to 30%. The <strong>-Xmaxe</strong> option
limits the expansion to the specified value; for example <tt class="xph">-Xmaxe10M</tt> limits
the expansion to 10 MB. By default, there is no maximum expansion size.
</dd>
<dt class="bold"><strong>-Xmaxf</strong><em>&lt;percentage&gt;</em></dt>
<dd>Specifies the maximum percentage of heap that must be free after a garbage
collection.  If the free space exceeds this amount, the JVM attempts to shrink
the heap. The default value is 0.6 (60%).
</dd>
<dt class="bold"><strong>-Xmca</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the expansion step for the memory allocated to store the RAM portion
of loaded classes. Each time more memory is required to store classes in RAM,
the allocated memory is increased by this amount. By default, the expansion
step is 32 KB. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmco</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the expansion step for the memory allocated to store the ROM portion
of loaded classes. Each time more memory is required to store classes in ROM,
the allocated memory is increased by this amount. By default, the expansion
step is 128 KB. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmine</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the minimum amount by which the Garbage Collector expands the heap.
Typically, the garbage collector expands the heap by the amount required to
restore the free space to 30% (or the amount specified using <strong>-Xminf</strong>).
The <strong>-Xmine</strong> option sets the expansion to be at least the
specified value; for example, <tt class="xph">-Xmine50M</tt> sets the expansion
size to a minimum of 50 MB. By default, the minimum expansion size is 1 MB.
</dd>
<dt class="bold"><strong>-Xminf</strong><em>&lt;percentage&gt;</em></dt>
<dd>Specifies the minimum percentage of heap that should be free after a garbage
collection.  If the free space falls below this amount, the JVM attempts to
expand the heap. By default, the minimum value is 0.3 (30%).
</dd>
<dt class="bold"><strong>-Xmn</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the initial and maximum size of the new area to the specified value
when using <strong>-Xgcpolicy:gencon</strong>. Setting <strong>-Xmn</strong> is
equivalent to setting <strong>-Xmns</strong> and <strong>-Xmnx</strong>.
 <span>If you set either <strong>-Xmns</strong> or <strong>-Xmnx</strong>,
you cannot set <strong>-Xmn</strong>. If you attempt to set <strong>-Xmn</strong> with
either <strong>-Xmns</strong> or <strong>-Xmnx</strong>, the VM will
not start, returning an error.</span> By default, <strong>-Xmn</strong> is
selected internally according to your system's capability. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmns</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the initial size of the new area to the specified value when using <strong>-Xgcpolicy:gencon</strong>.
By default, this option is selected internally according to your system's
capability. <span>This option will return an error if you try to
use it with <strong>-Xmn</strong>.</span> Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmnx</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the maximum size of the new area to the specified value when using <strong>-Xgcpolicy:gencon</strong>.
By default, this option is selected internally according to your system's
capability. <span>This option will return an error if you try to
use it with <strong>-Xmn</strong>.</span> Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option to output the value that the VM is using.
</dd>
<dt class="bold"><a id="xoptions__xmo" name="xoptions__xmo"></a><strong>-Xmo</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the initial and maximum size of the old (tenured) heap to the specified
value when using <strong>-Xgcpolicy:gencon</strong>. Equivalent to setting
both <strong>-Xmos</strong> and <strong>-Xmox</strong>. <span>If
you set either <strong>-Xmos</strong> or <strong>-Xmox</strong>, you
cannot set <strong>-Xmo</strong>. If you attempt to set <strong>-Xmo</strong> with
either <strong>-Xmos</strong> or <strong>-Xmox</strong>, the VM will
not start, returning an error.</span> By default, <strong>-Xmo</strong> is
selected internally according to your system's capability. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmoi</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the amount the Java heap is incremented when using <strong>-Xgcpolicy:gencon</strong>.
If set to zero, no expansion is allowed. By default, the increment size is
calculated on the expansion size, <strong>-Xmine</strong> and <strong>-Xminf</strong>.
</dd>
<dt class="bold"><strong>-Xmos</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the initial size of the old (tenure) heap to the specified value
when using <strong>-Xgcpolicy:gencon</strong>. By default, this option
is selected internally according to your system's capability. <span>This
option will return an error if you try to use it with <strong>-Xmo</strong>.</span> Use
the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmox</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the maximum size of the old (tenure) heap to the specified value
when using <strong>-Xgcpolicy:gencon</strong>. By default, this option
is selected internally according to your system's capability. <span>This
option will return an error if you try to use it with <strong>-Xmo</strong>.</span> Use
the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmr</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the size of the Garbage Collection "remembered set" when using <strong>-Xgcpolicy:gencon</strong>.
This is a list of objects in the old (tenured) heap that have references to
objects in the new area heap. By default, this option is set to 16 kilobytes.
Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmrx</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the remembered maximum size setting.
</dd>
<dt class="bold"><a id="xoptions__xms" name="xoptions__xms"></a><strong>-Xms</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the initial Java heap size.  You can also use <a href="#xoptions__xmo"><strong>-Xmo</strong></a>. The default is set internally
according to your system's capability. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmso</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the C stack size for forked Java threads. By default, this option is
set to 32 KB on 32-bit platforms and 256 KB on 64-bit platforms. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xmx</strong><em>&lt;size&gt;</em></dt>
<dd>Sets maximum Java heap size. By default, this
option is set internally according to your system's capability. Use the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><a id="xoptions__noclassgc" name="xoptions__noclassgc"></a><strong>-Xnoclassgc</strong></dt>
<dd>Disables class garbage collection. This option switches off garbage collection
of storage associated with Java classes that are no longer being used
by the JVM. See also <a href="#xoptions__classgc"><strong>-Xclassgc</strong></a>.
By default, class garbage collection is performed.
</dd>
<dt class="bold"><a id="xoptions__nocompactexplicitgc" name="xoptions__nocompactexplicitgc"></a><strong>-Xnocompactexplicitgc</strong></dt>
<dd>Disables compaction on a call to <tt class="xph">System.gc()</tt>. See also <a href="#xoptions__compactexplicitgc"><strong>-Xcompactexplicitgc</strong></a>.
By default, compaction is enabled on calls to <tt class="xph">System.gc()</tt>.
</dd>
<dt class="bold"><a id="xoptions__nocompactgc" name="xoptions__nocompactgc"></a><strong>-Xnocompactgc</strong></dt>
<dd>Disables compaction for the Garbage Collector. See also <a href="#xoptions__compactgc"><strong>-Xcompactgc</strong></a>.
By default, compaction is enabled.
</dd>
<dt class="bold"><a id="xoptions__xnojit" name="xoptions__xnojit"></a><strong>-Xnojit</strong></dt>
<dd>Disables the JIT compiler. See also <a href="#xoptions__xjit"><strong>-Xjit</strong></a>.
By default, the JIT compiler is enabled.
</dd>
<dt class="bold"><a id="xoptions__xnolinenumbers" name="xoptions__xnolinenumbers"></a><strong>-Xnolinenumbers</strong></dt>
<dd>Disables the line numbers for debugging. See also <a href="#xoptions__xlinenumbers"><strong>-Xlinenumbers</strong></a>.
By default, line number are on.
</dd>
<dt class="bold"><a id="xoptions__noloa" name="xoptions__noloa"></a><strong>-Xnoloa</strong></dt>
<dd>Prevents allocation of a large object area (LOA). All objects will be
allocated in the SOA. By default, the LOA is enabled for all GC policies except
for subpool, where the LOA is not available. See also <a href="#xoptions__loa"><strong>-Xloa</strong></a>.
</dd>
<dt class="bold"><a id="xoptions__nopartialcompactgc" name="xoptions__nopartialcompactgc"></a><strong>-Xnopartialcompactgc</strong></dt>
<dd>Disables incremental compaction. See also <a href="#xoptions__partialcompactgc"><strong>-Xpartialcompactgc</strong></a>.
</dd>
<dt class="bold"><a id="xoptions__nosigcatch" name="xoptions__nosigcatch"></a><strong>-Xnosigcatch</strong></dt>
<dd>Disables JVM signal handling code. See also <a href="#xoptions__sigcatch"><strong>-Xsigcatch</strong></a>.
By default, signal handling is enabled.
</dd>
<dt class="bold"><a id="xoptions__nosigchain" name="xoptions__nosigchain"></a><strong>-Xnosigchain</strong></dt>
<dd>Disables signal handler chaining. See also <a href="#xoptions__sigchain"><strong>-Xsigchain</strong></a>.
By default, the signal handler chaining is enabled.
</dd>
<dt class="bold"><strong>-Xoptionsfile</strong>=<em>&lt;file&gt;</em></dt>
<dd>Specifies a file that contains JVM options and defines. By default, no
option file is used.
</dd>
<dt class="bold"><strong>-Xoss</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the Java stack size and C stack size for any thread. This
option is provided for compatibility and is equivalent to setting both <strong>-Xss</strong> and <strong>-Xmso</strong> to
the specified value.
</dd>
<dt class="bold"><a id="xoptions__partialcompactgc" name="xoptions__partialcompactgc"></a><strong>-Xpartialcompactgc</strong></dt>
<dd>Enables partial compaction. By default, this option is not set, so all
compactions are full. See also <a href="#xoptions__nopartialcompactgc"><strong>-Xnopartialcompactgc</strong></a>.
</dd>
<dt class="bold"><strong>-Xquickstart</strong></dt>
<dd>Improves startup time by delaying JIT compilation and optimizations. By
default, quickstart is disabled and there is no delay in JIT compilation.
</dd>
<dt class="bold"><strong>-Xrdbginfo</strong>:<em>&lt;host&gt;</em>:<em>&lt;port&gt;</em></dt>
<dd>Loads and passes options to the remote debug information server. By default,
the remote debug information server is disabled.
</dd>
<dt class="bold"><strong>-Xrs</strong></dt>
<dd>Reduces the use of operating system signals. By default, the VM makes
full use of operating system signals, see <a href="#sighand">Signals used by the JVM</a>.
</dd>
<dt class="bold"><strong>-Xrun</strong><em>&lt;library name&gt;</em>[:<em>&lt;options&gt;</em>]</dt>
<dd>Loads helper libraries. To load multiple libraries, specify it more than
once on the command line. Examples of these libraries are: 

<dl class="parml">
<dt class="bold"><strong>-Xrunhprof</strong>[:help] | [:<em>&lt;option&gt;</em>=<em>&lt;value&gt;</em>,
...]</dt>
<dd>Performs heap, CPU, or monitor profiling. For more information,
see the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics
Guide</a>.
</dd>
<dt class="bold"><a id="xoptions__runjdwp" name="xoptions__runjdwp"></a><strong>-Xrunjdwp</strong>[:help] | [:&lt;<em>option</em>&gt;=&lt; <em>value</em>&gt;,
...]</dt>
<dd>Loads debugging libraries to support the remote debugging of applications.
See <a href="#xoptions__xdbg"><strong>-Xdbg</strong></a> for more information.
</dd>
<dt class="bold"><a name="xoptions__xrunjnichk"></a><strong id="xoptions__xrunjnichk">-Xrunjnichk</strong>[:help] | [:&lt;<em>option</em>&gt;=&lt;<em>value</em>&gt;,
...]</dt>
<dd>Deprecated, use <strong>-Xcheck:jni</strong>.
</dd>
</dl>
</dd>
<dt class="bold"><strong>-Xscmx</strong><em>&lt;size&gt;</em></dt>
<dd>For details of <strong>-Xscmx</strong>, see <a href="#sharedclassesxoptions">Class data sharing command-line options</a>.
</dd>
<dt class="bold"><strong>-Xshareclasses</strong>:<em>&lt;options&gt;</em></dt>
<dd>For details of the <strong>-Xshareclasses</strong> options, see <a href="#sharedclassesxoptions">Class data sharing command-line options</a>.
</dd>
<dt class="bold"><a id="xoptions__sigcatch" name="xoptions__sigcatch"></a><strong>-Xsigcatch</strong></dt>
<dd>Enables VM signal handling code. See also <a href="#xoptions__nosigcatch"><strong>-Xnosigcatch</strong></a>.
By default, signal handling is enabled.
</dd>
<dt class="bold"><a id="xoptions__sigchain" name="xoptions__sigchain"></a><strong>-Xsigchain</strong></dt>
<dd> Enables signal handler chaining. See also <a href="#xoptions__nosigchain"><strong>-Xnosigchain</strong></a>.
By default, signal handler chaining is enabled.
</dd>
<dt class="bold"><strong>-Xsoftrefthreshold</strong><em>&lt;number&gt;</em></dt>
<dd>Sets the number of GCs after which  a soft reference
will be cleared if  its referent has not been marked.  The default is 3, meaning
that on the third GC where the referent is not marked the soft reference will
be cleared.
</dd>
<dt class="bold"><strong>-Xss</strong><em>&lt;size&gt;</em></dt>
<dd>Sets the maximum Java stack size for any thread. By
default, this option is set to 256 KB. Use
the <a href="#standard_options__verbose"><strong>-verbose:sizes</strong></a> option
to output the value that the VM is using.
</dd>
<dt class="bold"><strong>-Xthr</strong>:<em>&lt;options&gt;</em></dt>
<dd>Sets the threading options.
</dd>
<dt class="bold"><a id="xoptions__xverbosegclog" name="xoptions__xverbosegclog"></a><strong>-Xverbosegclog</strong>:<em>&lt;path to file&gt;</em>[<em>X</em>,<em>Y</em>]</dt>
<dd>
<p>Causes verbose garbage collection (GC) output to be written to the
specified file. If the file exists, it is overwritten. Otherwise, if an existing
file cannot be opened or a new file cannot be created, the output is redirected
to stderr. If you specify the arguments X and Y (both are integers) the verbose
GC output is redirected to X number of files, each containing Y number of
gc cycles worth of verbose GC output. These files have the form <em>filename1,
filename2</em>, and so on. By default, no verbose GC logging occurs.</p>

<p>See the <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">Diagnostics Guide</a> for more information about verbose
GC output.</p>
</dd>
<dt class="bold"><strong>-Xverify</strong></dt>
<dd>Enables strict class checking for every class that is loaded. By default,
strict class checking is disabled.
</dd>
<dt class="bold"><strong>-Xverify:none</strong></dt>
<dd>Disables strict class checking. By default, strict class checking is disabled.
</dd>
</dl>
<a name="limitations"></a>
<h1 id="limitations"><a href="#ToC_114">Appendix B. Known limitations</a></h1>
<div>
<p>Known limitations on the SDK and
Runtime Environment for Windows.</p></div>
<p>
<p>You can find more help with problem diagnosis in
the <cite>Diagnostics Guide</cite> at <a href="http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html" target="_blank">http://www.ibm.com/developerworks/java/jdk/diagnosis/index.html</a>.</p></p>
<p>
<a name="wq107"></a>
<h2 id="wq107">XSLT
namespace and Netbeans 5.0 problems</h2>
<p>If the input to your transformation is a DOM that you have created programmatically,
such as in the example below, the XSLT interpreter processor has problems
with implicit namespaces that might cause incorrect namespace declarations
or the omission of namespace declarations from the resulting document.  An
example Java fragment follows:  </p>
<pre class="xmp"> // Example of an explicit namespace - an attribute node will be created in the DOM for xmlns='ht tp://my.org/project'    
  String data = "&lt;projectxmins='http://my.org/project/&gt;";    
  Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(n ew StringReader(data)));     

 // Example of an implicit namespace - no attribute node is created for the implicit namespace xm lns='http://your.org/project    
  Element typeElem = doc.createElementNS("http://your.org/project", "type");    
  doc.getDocumentElement().appendChild(typeElem); </pre><p class="indatacontent"> To work around
this limitation you can use the XSLT compiler processor, XSLTC. You can specify
the compiler processor by using the <strong>-XSLTC</strong> option with
the <strong>Process</strong> command or by setting the <strong>javax.xml.transform.TransformerFactory</strong> service
provider to <strong>org.apache.xalan.xsltc.trax.TransformerFactoryImpl.</strong></p>
<p>Netbeans
5.0 does not run under the JVM with default settings. To enable Netbeans to
run, set the <strong>javax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl</strong> property
in jre/lib/jaxp.properties.</p></p>
<p>
<a name="wq108"></a>
<h2 id="wq108">-verbose with more than one suboption where
one suboption is jni</h2>
<p>If
you specify more than one suboption with <strong>-verbose</strong> and
one of the suboptions is <strong>jni</strong>, you receive an error message.</p>
<p>An
example of this follows: </p>
<pre class="xmp">java -verbose:jni,class hello.class
JVMJ9VM015W Initialization error for library j9vrb23(3): unrecognised option for -verbose&lt;opt&gt;:
Could not create the Java virtual machine.                    </pre>
<p>To
work around this limitation, you must create multiple invocations of <strong>-verbose</strong> on
the Java command line for multiple suboptions. For example, enter <strong>-verbose:gc,class
-verbose:jni</strong> rather than <strong>-verbose:gc,class,jni</strong>.</p></p>
<p>
<a name="wq109"></a>
<h2 id="wq109">Font problems in supported
locales</h2>
<p>The IBM 32-bit SDK for Windows,
v5.0 supports
the following locales: 
</p>
<ul>
<li>Bengali (bn_IN)</li>
<li>Malayalam (ml_IN)</li>
<li>Oriya (or_IN)</li></ul><p class="indatacontent">However the fonts from these locales might not work on AWT components.</p></p>
<p>
<a name="wq110"></a>
<h2 id="wq110">Use of sockets with IPv6</h2>
<p>The IBM 32-bit SDK for Windows,
v5.0 supports IPv6. However,
because the current IPv6 support in Windows is not dual-stack, the SDK emulates
dual-stack behavior on an IPv6 enabled system. Your Java application
might use up to twice as many sockets because of the nature of the emulation.
To disable this emulation, disable IPv6 support in the SDK by setting the
system property <strong>java.net.preferIPv4Stack</strong> to <tt class="xph">true</tt>.</p></p>
<p>
<a name="wq111"></a>
<h2 id="wq111">JConsole monitoring
tool Local tab</h2>
<p>In
IBM's JConsole tool, the <strong>Local</strong> tab, which allows you
to connect to other Virtual Machines on the same system, is not available.
Also, the corresponding command-line <strong>pid</strong> option is not
supported. Instead, use the <strong>Remote</strong> tab in JConsole
to connect to the Virtual Machine that you want to monitor. Alternatively,
use the <strong>connection</strong> command-line option, specifying a
host of <tt class="xph">localhost</tt> and a port number. When you launch the
application that you want to monitor, set these command-line options:
</p>
<dl class="parml">
<dt class="bold"><strong>-Dcom.sun.management.jmxremote.port</strong>=<em>&lt;value&gt;</em></dt>
<dd>Specifies the port the management agent should listen on.
</dd>
<dt class="bold"><strong>-Dcom.sun.management.jmxremote.authenticate=false</strong></dt>
<dd>Disables authentication unless you have created a username file.
</dd>
<dt class="bold"><strong>-Dcom.sun.management.jmxremote.ssl=false</strong></dt>
<dd>Disables SSL encryption.
</dd>
</dl></p>
<p>
<a name="wq112"></a>
<h2 id="wq112">JConsole
monitoring tool when the JIT is disabled</h2>
<p>IBM's
JConsole tool has the following limitations when the JIT is disabled:
</p>
<ul>
<li>The <strong>Summary</strong> tab is not available.</li>
<li>The <strong>VM</strong> tab is not available.</li>
<li>The chart accessed from the <strong>Memory</strong> tab is not updated.</li>
<li>The chart accessed from the <strong>Threads</strong> tab is not
updated.</li>
<li>You cannot determine if the <strong>Perform GC</strong> button accessed
from the <strong>Memory</strong> tab has an effect.</li></ul></p>
<p>
<a name="wq113"></a>
<h2 id="wq113">Incorrect stack traces when loading new classes after an Exception is
caught</h2>
<p>If new classes are loaded after an Exception has
been caught, the stack trace contained within the Exception might
become incorrect. The stack trace becomes incorrect if classes in the stack
trace are unloaded, and new classes are loaded into their memory segments.</p></p>
<p><font color="RED"><span id="changed">|</span>
<span id="changed">|</span><a name="wq114"></a>
<span id="changed">|</span><h2 id="wq114">Web
<span id="changed">|</span>Start and Java 1.3 applications</h2>
<span id="changed">|</span><p>The IBM 32-bit SDK for Windows,
<span id="changed">|</span>v5.0 Web
<span id="changed">|</span>Start does not support launching Java 1.3 applications.</p></font></p>
<p>
<a name="wq115"></a>
<h2 id="wq115">Input Method Editor (IME)</h2>
<p>When
working with an Input Method Editor (IME), you are advised that character
composition should be completed and the candidate selected before using the
workspace for any other operation.</p>
<p>When a user types text in an AWT
TextArea while using an Input Method Editor (IME), and then resizes the application's
window <em>before</em> committing the text, the text is committed automatically.</p></p>
<p>
<a name="wq116"></a>
<h2 id="wq116">Slow DSA key pair generation</h2>
<p>Creating
DSA key pairs of unusual lengths can take a significant amount of time on
slow machines. Do not interpret the delay as a hang because the process will
complete if sufficient time is allowed. The DSA key generation algorithm has
been optimized to generate standard key lengths (for instance, 512, 1024)
more quickly than others.</p></p>
<p>
<a name="wq117"></a>
<h2 id="wq117">Personal firewalls</h2>
<p>Personal
firewalls can cause problems for the Windows NIO code, causing particular
operations to fail. For example, the method call Selector.open() can
throw a &quot;java.io.IOException: Unable to establish loopback
connection&quot; with a cause of &quot;java.net.ConnectException:
Connection refused: connect&quot;.  The exception is caused by the operating
system connecting on a port that is being blocked by the firewall. The JVM
will retry the connect operation, asking the operating system  to choose a
different port number. If it still cannot connect after several retries, a ConnectException is
thrown.</p>
<p>If you see this exception, you can set the system property <strong>java.nio.debug=pipe</strong> to
see which port numbers are being blocked.</p></p>
<p>
<a name="wq118"></a>
<h2 id="wq118">File handle exhaustion</h2>
<p>On Windows 2000 and XP,
the default value of the number of files that you can have simultaneously
opened is too low and will cause problems to applications that are I/O intensive.
To fix this limitation, edit the file <em>&lt;windows&gt;</em>\system32\CONFIG.NT and
set the following values:</p></p>
<pre class="xmp">files=200
buffers=60</pre>
<p>where <em>&lt;windows&gt;</em> is the directory
where Windows is
installed.</p>
<p>
<a name="wq119"></a>
<h2 id="wq119">DirectDraw and mouse pointer
problems</h2>
<p>On Windows 2000, with a 32-bit color depth,
the DirectDraw mechanism of the JVM does not repaint the region under the
mouse pointer. The effect is that gray or black squares appear on menus after
the mouse has been there. The workround is either to switch off direct draw
(<strong>-Dsun.java2d.noddraw</strong>), or to change your screen color
resolution to some other value, such as 256 color.</p></p>
<p>
<a name="wq120"></a>
<h2 id="wq120">NIO connection
problems</h2>
<p>The NIO SocketChannel finishConnect() method
can return <tt class="xph">true</tt> (the channel is connected) or <tt class="xph">false</tt> (the
connection process is not yet complete), or can throw an exception. On Windows 2000,
when using non-blocking connections, <tt class="xph">false</tt> might be returned
even after a previous Java select() call has
implied that a channel is ready for processing.</p></p>
<p>
<a name="wq121"></a>
<h2 id="wq121">Stack range
of the main thread</h2>
<p>You cannot alter the stack range of the Java main
thread (also known as the primordial thread) at run time. The main thread
has a fixed size of 256 KB, determined as the optimum value for performance
reasons. You can use the <strong>-Xss</strong> option to modify the stack
range only on threads other than the main one. Do not use the main thread
for heavily recursive calculations because the main thread is more prone to
stack overflow than other threads.</p></p>
<p>
<a name="wq122"></a>
<h2 id="wq122">DBCS characters</h2>
<p>If you are typing
DBCS characters in a JTextArea, JTextField, or JFileChooser, switching from
some Chinese IMEs (in particular, Chinese Internal Code and Zhengma) to Intelligent
ABC IME might cause a core dump to be produced.</p></p>
<p>
<a name="wq123"></a>
<h2 id="wq123">Czech language installation</h2>
<p>For
Czech users, note that the language selection panel of InstallShield offers
one translated entry in an install that is otherwise untranslated. This limitation
is caused by InstallShield. The string is picked up from the operating system
based on the codepage. Because Polish (for which the install is translated)
and Czech both have codepage 1250, InstallShield attempts to retrieve a language
list from the system for both languages, resulting in this string in the language
list.</p></p>
<p>
<a name="wq124"></a>
<h2 id="wq124">Traditional Chinese and the more command</h2>
<p>If
you use Traditional Chinese, do not pipe the output from your Java application
directly into the more command.  Instead, direct the output
to a temporary file and view the file separately.</p></p>
<p>
<a name="wq125"></a>
<h2 id="wq125">Accent corruption for Catalan
users</h2>
<p>For Catalan users, the Lucida Console font should be used
to avoid corruption of accented capital letters. This affects users of Windows 2000
only.</p></p>
<p>
<a name="wq126"></a>
<h2 id="wq126">NullPointerException with the GTK Look
and Feel</h2>
<p><strong>DBCS environments only</strong></p>
<p>If your application
fails with a NullPointerException using the GTK Look and
Feel, unset the <strong>GNOME_DESKTOP_SESSION_ID</strong> environment
variable.</p></p>
<a name="notices"></a>
<h1 id="notices"><a href="#ToC_135">Notices</a></h1>
<div>
<p>This information was developed for products and services offered
in the U.S.A.   IBM may not offer the products, services, or features discussed
in this document in other countries. Consult your local IBM representative
for information on the products and services currently available in your area.</p></div>
<p>Any reference to an IBM product, program, or service is not intended to
state or imply that only that IBM product, program, or service may be used.
Any functionally equivalent product, program, or service that does not infringe
any IBM intellectual property right may be used instead. However, it is the
user's responsibility to evaluate and verify the operation of any non-IBM
product, program, or service.</p>
<p>IBM may have patents or pending patent applications covering subject matter
in this document. The furnishing of this document does not give you any license
to these patents. You can send license inquiries, in writing, to:</p>
<ul class="simple">
<li>IBM Director of Licensing</li>
<li>IBM Corporation</li>
<li>North Castle Drive, Armonk</li>
<li>NY 10504-1758 U.S.A.</li></ul>
<p>For license inquiries regarding double-byte (DBCS) information, contact
the IBM Intellectual Property Department in your country or send inquiries,
in writing, to:</p>
<ul class="simple">
<li>IBM World Trade Asia Corporation Licensing</li>
<li>2-31 Roppongi 3-chome, Minato-ku</li>
<li>Tokyo 106-0032, Japan</li></ul>
<p>The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:</p>
<p>INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION &quot;AS
IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY
OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of
express or implied warranties in certain transactions, therefore, this statement
may not apply to you.</p>
<p>This information could include technical inaccuracies or typographical
errors. Changes are periodically made to the information herein; these changes
will be incorporated in new editions of the information. IBM may make improvements
and/or changes in the product(s) and/or the program(s) described in this information
at any time without notice.</p>
<p>Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those
Web sites. The materials at those Web sites are not part of the materials
for this IBM product and use of those Web sites is at your own risk.</p>
<p>IBM may use or distribute any of the information you supply in any way
it believes appropriate without incurring any obligation to you.</p>
<p>Licensees of this program who wish to have information about it for the
purpose of enabling (i) the exchange of information between independently
created programs and other programs (including this one) and (ii) the mutual
use of the information which has been exchanged, should contact:</p>
<ul class="simple">
<li>JIMMAIL@uk.ibm.com</li>
<li>[Hursley Java Technology Center (JTC) contact]</li></ul>
<p>Such information may be available, subject to appropriate terms and conditions,
including in some cases, payment of a fee.</p>
<p>The licensed program described in this document and all licensed material
available for it are provided by IBM under terms of the IBM Customer Agreement,
IBM International Program License Agreement or any equivalent agreement between
us.</p>
<p>Any performance data contained herein was determined in a controlled environment.
Therefore, the results obtained in other operating environments may vary significantly.
Some measurements may have been made on development-level systems and there
is no guarantee that these measurements will be the same on generally available
systems. Furthermore, some measurement may have been estimated through extrapolation.
Actual results may vary. Users of this document should verify the applicable
data for their specific environment.</p>
<p>Information concerning non-IBM products was obtained from the suppliers
of those products, their published announcements or other publicly available
sources. IBM has not tested those products and cannot confirm
the accuracy of performance, compatibility or any other claims related to
non-IBM products. Questions on the capabilities of non-IBM products should
be addressed to the suppliers of those products.</p>
<p>All statements regarding IBM's future direction or intent are subject to
change or withdrawal without notice, and represent goals and objectives only.</p>
<a name="trademarks"></a>
<h2 id="trademarks"><a href="#ToC_136">Trademarks</a></h2>
<p>IBM,   AIX,  developerWorks, eServer, iSeries, MVS, POWER4,  POWER5+, 
PowerPC, pSeries, System i, System p, System z, WebSphere, System z9, z/OS,
and zSeries are trademarks or registered trademarks of International Business
Machines Corporation in the United States, or other countries, or both.</p>
<p>Intel is a trademark of Intel Corporation in the United States, other countries,
or both.</p>
<p>Java and all Java-based trademarks and logos are trademarks or registered
trademarks of  Sun Microsystems, Inc. in the United States, other countries,
or both.</p>
<p>Microsoft, Windows and the Windows logo are trademarks of Microsoft Corporation
in the United States, other countries, or both.</p>
<p>Linux is a trademark of Linus Torvalds in the United States,
other countries, or both.</p>
<p>Other company, product, or service names may be trademarks or service marks
of others.</p>
<a id="Bot_Of_Page" name="Bot_Of_Page"></a>
</body>
</html>
