# IBM Runtime Environment for Linux platforms，Java 2 Technology Edition，V1.4.2

# 用户指南

# 版权信息

注意：在使用本资料及其支持的产品之前，请务必阅读声明中的一般信息。

本版本的《用户指南》适用于以下平台（当它们可用时）：

- IBM 32-bit Runtime Environment for Linux on Intel(TM) architecture，Java 2 Technology Edition，V1.4.2
- IBM 64-bit Runtime Environment for Linux on Intel architecture，Java 2 Technology Edition，V1.4.2
- IBM 32-bit Runtime Environment for Linux on iSeries(TM) and pSeries(R)，Java 2 Technology Edition，V1.4.2
- IBM 64-bit Runtime Environment for Linux on iSeries and pSeries，Java 2 Technology Edition，V1.4.2
- IBM 31-bit Runtime Environment for Linux on zSeries(R)，Java 2 Technology Edition，V1.4.2
- IBM 64-bit Runtime Environment for Linux on zSeries，Java 2 Technology Edition，V1.4.2

及所有后续发行版和修订版，直到在新版本中另有声明为止。

(c) Copyright Sun Microsystems, Inc. 1997, 2003, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.

(c) Copyright International Business Machines Corporation, 1999, 2004. All rights reserved.

U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

# 前言

本《用户指南》描述了用于所有 Linux 平台的 IBM(R) Runtime Environment。特定于平台的信息明确地标记如此。确保您正在阅读与您平台的相关材料。特别是，Web Start 和插件是特定于 32-bit SDK for Linux on Intel architecture 的。

IBM 运行时环境包含 Java 虚拟机（JVM）、核心 Sun Microsystems Java 类和支持文件。Runtime Environment 并未包含所有在 SDK 软件包中找到的类。

本《用户指南》提供有关 Runtime Environment 的一般信息和有关 Runtime Environment 的 IBM 实现相比较 Sun 实现而言所有不同的特定信息。请阅读本《用户指南》及以下 Sun Web 站点上的更多详尽文档：http://java.sun.com。

IBM JVM Diagnostics Guide 提供了有关 IBM JVM 的更多详细信息。

要获取已对其测试过 SDK for Linux 的分发列表，请参阅：http://www-106.ibm.com/developerworks/java/jdk/linux/tested.html。

注意，Runtime Environment for Linux 是 SDK 的一个子集，因此您只能运行 Java 应用程序。如果安装了 SDK，则表示已包括 Runtime Environment。

术语“Runtime Environment”和“Java Virtual Machine”在本《用户指南》中是可互换使用的。

在查看 HTML 或彩色打印的副本时，对此版本 1.4.2《用户指南》的技术更改（除了诸如将“1.4.1”更新到“1.4.2”这样较小或明显的更改）用红色表示，且在更改的左边标有垂直条。

# 目录

版权信息
前言
概述
| |
约定
版本兼容性
| |
Linux PPC64 用户信息
随 Runtime Environment for Linux 包含的文件
许可证协议
just-in-time（JIT）编译器
Java 本机接口和本地方法接口（Native Method Interface）
| |
在 Red Hat Enterprise Linux（RHEL）3 上安装
配置 Runtime Environment for Linux
卸载 Runtime Environment for Linux
卸载可安装的 Red Hat Package Manager（RPM）软件包
卸载已压缩的 Tape Archive（TAR）软件包
| |
已恢复的 JDBC/ODBC 网桥
启动 Java 应用程序
命令摘要
选项
标准选项
非标准选项
Java 命令全局化
使用类路径
| |
配置大页内存分配
使用 bootclasspath
指定垃圾收集策略
暂停时间
减少暂停时间
具有很满的堆的环境
有关垃圾收集的进一步信息
JVM 如何处理信号
JVM 所使用的信号
将本机代码驱动程序链接到信号链接库
| |
实现 RMI 的连接处理程序池
获取 IBM build 和版本号
（仅对于 32 位的 Linux IA）使用 Java Plug-in
为 Netscape 6 和 Mozilla 安装和配置 Java 插件
为 Netscape 4 安装和配置 Java Plug-in
使用附带 gcc3.2.x 已编译的 Mozilla 浏览器的 Java Plug-in
使用 DBCS 参数
（仅适用于 Linux IA 32 位）使用 Web Start
安装 Web Start
使用浮动堆栈
在 DBCS 语言中切换输入法
在用户系统上安装应用程序
已知局限
适用于除已指出平台之外所有 Linux 平台的局限
32 位 Linux IA 的局限
32 位 和 64 位 Linux PPC 的局限
32 位 Linux PPC 的局限
64 位 Linux zSeries 的局限
32 位和 64 位 Linux zSeries 的局限
对本《用户指南》有何意见？
声明
商标

# 概述

Runtime Environment for Linux 包含创建 Java Runtime Environment 和运行 Java 程序所需类的子集。它还包含 Java Virtual Machine、Java 类和支持文件。Runtime Environment for Linux 仅包含在 SDK 中找到的类的子集。

| | |

## 约定

|

在本《用户指南》中，SDK 的缺省安装目录指的是 /opt/IBMJava2-142/。下面列出的平台有以下缺省安装目录；参阅 /opt/IBMJava2-142/ 时请使用对于您的平台适当的目录：

|

|
- 32 位 Linux IA：/opt/IBMJava2-142/
|
- 64 位 Linux IA：/opt/IBMJava2-142/
|
- 32 位 Linux PPC：/opt/IBMJava2-ppc-142/
|
- 64 位 Linux PPC：/opt/IBMJava2-ppc64-142/
|
- 31 位 Linux zSeries：/opt/IBMJava2-s390-142/
|
- 64 位 Linux zSeries：/opt/IBMJava2-s390x-142/

## 版本兼容性

通常，在版本 1.1.8、1.2.2 或 1.3.1 的 SDK for Linux 中运行的任何 applet 和应用程序将在此版本中运行正常。依靠 Sun 的 Java 1.4.2 API 的 applet 仅能在支持 Java 1.4.2 API 的浏览器上工作。

不保证 1.4.2 编译的类可以在 1.4.0 以前的 Runtime Environment 发行版上工作。

| | |

### Linux PPC64 用户信息

|

Runtime Environment V1.4.2 不受 SLES 8 支持。如果您想要在 SLES 8 上运行 SDK，请使用 SDK V1.4.1 SR1。

## 随 Runtime Environment for Linux 包含的文件

Runtime Environment for Linux 包含需要在运行时支持程序的不可调试的 .so 文件和类文件。Runtime Environment for Linux 不包含任何开发工具（例如：appletviewer 或 javac）或仅与开发系统有关的类。

此外，还提供了 Java Communications 应用程序编程接口（API）软件包以与 Runtime Environment for Linux 一起使用。（64 位 Linux IA 以及 31 位和 64 位 Linux zSeries 除外）。

## 许可证协议

LICENSE_xx.html 文件包含 Runtime Environment for Linux 软件的许可证协议。（xx 是语言的缩写。）

要查看或打印许可证协议，请在 Web 浏览器中打开文件。

## just-in-time（JIT）编译器

在 Java 应用程序和 applet 运行期间，Just-in-time（JIT）编译器（libjitc.so）为在 Java 应用程序和 applet 中频繁使用的字节码序列动态生成机器代码。

Runtime Environment for Linux 包含 JIT（libjitc.so），它在缺省情况下是启用的。可以禁用 JIT 以帮助隔离 Java 应用程序、applet 或编译器本身发生的问题。

要禁用 JIT，在运行应用程序的窗口的外壳程序提示下输入：

        export JAVA_COMPILER=NONE

要启用 JIT，在外壳程序提示符下输入：

        export JAVA_COMPILER=jitc

要验证是否启用了 JIT，请在外壳程序提示下输入：

        java -version

如果正在使用 JIT，将显示包含以下内容的消息：

    (JIT enabled: jitc)

如果 JIT 不在使用，则显示一条包含以下内容的消息：

    (JIT disabled)

## Java 本机接口和本地方法接口（Native Method Interface）

Runtime Environment 中包含了 Java 本机接口（JNI）。关于使用 JNI 的信息，请参阅 Sun Web 站点：http://java.sun.com。

在本发行版中，IBM 不支持本地方法接口（Native Method Interface）。请不要在应用程序中使用此接口。

| | |

# 在 Red Hat Enterprise Linux（RHEL）3 上安装

|

Runtime Environment 依靠共享库 /usr/lib/libstdc++-libc6.2-2.so.3。缺省情况下，此库未安装在 RedHat Enterprise Linux（HEL）3.0 上。

|

包含此库的 rpm 是 `compat-libstdc++-7.3-2.96.122.i386.rpm`。要安装此库，请在 shell 提示符下输入：

|

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

|

要在 RHEL 3 的安装过程中包含此库：

|

|
1. 到达软件包缺省值屏幕时，选择定制要安装的软件包集选项。
|
2. 在软件包组选择屏幕上，在开发选项下选择旧软件开发。

# 配置 Runtime Environment for Linux

在安装 Runtime Environment for Linux 之后，请编辑外壳程序登录脚本并将此目录添加到 PATH 语句中：

/opt/IBMJava2-142/jre/bin

如果在不同的目录下安装了 Runtime Environment for Linux，将 /opt/IBMJava2-142/ 替换为 Runtime Environment 的安装目录。

注:
（仅对于 32 位 Linux IA 中文用户）因为 RedHat Advanced Server 上的字体编码不一致，当您为一个以中文为缺省语言的环境安装时，最好先以英文为缺省语言安装，在安装完成后再将其更改为中文。否则，您可能发现无法显示中文字体。

# 卸载 Runtime Environment for Linux

除去 Runtime Environment 的方式取决于您是否已经安装了可安装的 Red Hat Package Manager（RPM）软件包或已压缩的 Tape Archive（TAR）软件包。请参阅卸载可安装的 Red Hat Package Manager（RPM）软件包或卸载已压缩的 Tape Archive（TAR）软件包获取指导。

## 卸载可安装的 Red Hat Package Manager（RPM）软件包

如果已安装可安装的 RPM 软件包，要卸载 Runtime Environment for Linux：

1. 在外壳程序脚本下，输入：

   -         rpm -e IBMJava2-JRE-1.4.2

   - 对于 32 位的 Linux PPC：

         rpm -e IBMJava2-JRE-ppc-1.4.2

   - 对于 64 位的 Linux PPC：

         rpm -e IBMJava2-JRE-ppc64-1.4.2

   作为选择，您也可以使用图形工具，如 kpackage 或 yast2
2. 从 PATH 语句中除去安装了 Runtime Environment 的目录。
3. （仅对于 32 位的 Linux IA）如果已安装了 Java Plug-in，请从 Web 浏览器目录除去 Java Plug-in 文件。

## 卸载已压缩的 Tape Archive（TAR）软件包

如果安装了已压缩的 TAR 软件包，要卸载 Runtime Environment for Linux：

1. 从安装了 Runtime Environment 的目录中除去 Runtime Environment 文件。
2. 从 PATH 语句中除去安装了 Runtime Environment 的目录。
3. （仅对于 32 位的 Linux IA）如果已安装了 Java Plug-in，请从 Web 浏览器目录除去 Java Plug-in 文件。

| | |

# 已恢复的 JDBC/ODBC 网桥

|

已为 V1.4.2 恢复 JDBC/ODBC 网桥（之前已从 IBM SDK V1.4.0 中除去）。

# 启动 Java 应用程序

java 工具可启动 Java 应用程序。

JVM 在以下三个位置集中搜索启动类和其它使用的类：引导程序类路径、已安装的扩展和用户类路径。在类名或 JAR 文件名后的参数传递到主函数。

除了 javaw 没有关联的控制台窗口之外，javaw 命令与 java 相同。请在不需要出现命令提示窗口时使用 javaw。如果启动失败，javaw 启动程序将显示一个带有错误信息的对话框。

## 命令摘要

java 和 javaw 命令具有以下语法：

    java [ options ] class [ arguments ... ]
    java [ options ] -jar file.jar [ arguments ... ]
    javaw [ options ] class [ arguments ... ]
    javaw [ options ] -jar file.jar [ arguments ... ]

括号内的项是可选的。

options
  命令行选项。
class
  要调用的类名。
file.jar
  要调用的 jar 文件的名称。只能与 -jar 一起使用。
argument
  传递到主函数的参数。

如果指定 -jar 选项，则命名的 JAR 文件包含应用程序的类和资源文件，启动类由主类清单头指示。

## 选项

启动程序具有一系列标准选项，这些选项在当前的 Runtime Environment 中受支持，在今后的发行版也将受到支持。此外，还有一系列非标准选项。

### 标准选项

- -D<property_name>=<value>
  - 设置系统特性。
- -assert
  - 打印有关与断言相关的选项的帮助。
- -cp 或 -classpath <用 : 分隔的目录和 zip 或 jar 文件>
  - 为应用程序类和资源设置搜索路径。如果不使用 -classpath 和 -cp ，也不设置 CLASSPATH，则缺省情况下，用户的类路径是当前目录（.）。另见使用类路径。
- -help 或 -?
  - 打印使用消息。
- -showversion
  - 打印产品版本并继续。
- -verbose:[class | gc | jni]
  - 启用详细输出。
- -version
  - 打印产品版本。
- -X
  - 打印关于非标准选项的帮助。

### 非标准选项

下面列出的 -X 选项是可用选项的一个子集。它们是非标准选项，将随时更改，而不另行通知。

- -Xargencoding
  - 对 java 命令允许使用此选项以使用 Unicode 转义序列来表示不在语言环境字符集中的字符。Unicode 转义序列采用 \u#### 格式，其中 # 是十六进制数字。
- -Xbootclasspath：<用 ; 分隔的目录和 zip 或 jar 文件>
  - 为引导程序类和资源设置搜索路径。还有其它设置 bootclasspath 的方法。请参阅使用 bootclasspath。
- -Xbootclasspath/a：<用 ; 分隔的目录和 zip 或 jar 文件>
  - 附加到引导程序类路径的末尾。
- -Xbootclasspath/p：<用 ; 分隔的目录和 zip 或 jar 文件>
  - 添加到引导程序类路径的前面。请参阅使用 bootclasspath。
- -Xcheck:jni
  - 对 JNL 函数执行附加检查。
- -Xcheck:nabounds
  - 对 JNI 数组运算执行附加检查。
- -Xdebug
  - 启动已启用调试器的 JVM。
- -Xdisableexplicitgc
  - 将对 System.gc() 的调用更改为 no-ops。
- -Xdisablejavadump
  - 为异常过程终止禁用 Java 转储程序。当禁用 Java 转储时运行系统过程终止转储。当在 Java 代码中发生问题时，Java 转储是很有用的。如果问题出在系统组件中，则获取正常的系统转储可能更为有用。
- -Xgcpolicy:{optthruput | optavgpause }
  - 指定垃圾收集设置。缺省设置为 optthruput。要获取更多信息，请参阅指定垃圾收集策略。
- |-Xlp |
  |
  - 请求 JVM 用大小以兆字节为单位的大页分配 Java 堆（从中分配 Java 对象的堆）。如果大页不可用，则用大小通常为 4KB 的 Linux 标准页分配 Java 堆。JVM 使用 shmget() 将大页分配给堆。大页由正在运行 Linux V2.6 或更高版本的内核的系统支持。
- -Xms<大小>
  - 设置初始 Java 堆大小。
- -Xmx<大小>
  - 设置 Java 堆最大大小。
- -Xnoclassgc
  - 禁用类垃圾收集。
- -Xoss<大小>
  - 为任何线程设置 Java 堆栈的最大大小。
- -Xquickstart
  - 加快应用程序的启动时间。如果您不指定此选项，方法的初始编译会以高优化完成（也就是说，JIT 不会重编译“最新”方法因为这些方法最初是以高优化编译的）。
- -Xrs
  - 减少使用操作系统信号。
- -Xrunlibrary_name[:options]
  - 装入帮助函数库。要装入多个库，请在命令行上一次指定多个库。例如，这些库可以是：
    - -Xrunhprof[:help] | [:<option>=<value>, ...]
      - 执行堆、CPU 或监视器简述。
    - -Xrunjdwp[:help] | [:<option>=<value>, ...]
      - 装入调试库以支持远程调试应用程序。
- -Xss<大小>
  - 为所有线程设置最大本机堆栈大小。关于更多信息，请参阅使用浮动堆栈。
- -Xverbosegclog:<文件路径><文件名>[X, Y]
  - 将 verboseGC 输出写到指定的文件中。如果该文件已存在，则覆盖该文件。否则，如果现有的文件打不开或无法创建新文件，则将输出重定向到 stderr。如果您指定参数 X 和 Y（两个参数都是整数），则 verboseGC 输出将被重定向到 Y 个文件，每个文件都包含 X 个值得 verboseGC 输出的 gc 循环。这些文件的格式有：filename1、filename2 等等。
    注:
    已经除去环境变量 IBM_JVM_ST_VERBOSEGC_LOG。
- -Xverify
  - 启用最严格的检查，预计未来的缺省值。

## Java 命令全局化

java 命令和其它 Java 启动程序命令（例如，javaw）允许类名被指定为在当前语言环境字符集中的 Unicode 字符。

您可以通过使用 Java 转义序列在类名和参数中指定任何 Unicode 字符。要完成此操作，必须指定 -Xargencoding。要指定 Unicode 字符，请以 `\u####` 格式使用转义序列，其中 # 是十六进制数字（0-9，A-F）。

要指定类名和命令参数是 UTF8 或 ISO8859_1 编码，请使用 -Xargencoding:utf8 和 Xargencoding:latin。

在 Runtime Environment 中，如果使用非英语语言环境，则 java 和 javaw 命令给出已翻译过的输出消息。这些消息不同于版本 1.3.1 中的消息，并且运行 Java 的语言环境不同，这些消息也是不同的。详细的错误描述和 java 返回的其它调试信息都是以英文显示的。在初始化期间返回的调试信息显示在方括号中。

## 使用类路径

在 Runtime Environment 中，您可以将类名指定为包含完整路径和 .class 扩展名的完整文件名。在先前版本的 SDK 中，只可以指定相对于 CLASSPATH 的类，不允许包含 .class 扩展名。使用完整文件名就可以从桌面或文件启动程序启动 Java 应用程序。如果指定带路径和扩展名的 .class 文件，则指定的路径将添加到 CLASSPATH。例如，命令 `java ~/myapp/thisapp.class` 等同于指定 `java -classpath ~/myapp thisapp`。

| | |

## 配置大页内存分配

|

使用大页主要意在为分配许多内存并频繁访问这些内存的应用程序提高性能。 |大页性能提高主要由转换解析缓冲区（TLB）中减少的未命中数引起。此提高是由 TLB 映射大页虚拟内存范围引起的。

|

要配置大页内存分配，请首先确保正在运行的内核支持大页。检查文件 /proc/meminfo 包含以下行：

|

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

请注意这些字段的值是取决于系统的。 |如果内核不支持大页，那么您必须编译一个支持大页的新内核。

|

可以分配给大页的内存量由 `HugePages_Free * Hugepagesize` 的产品提供。系统管理员应该在系统中配置大页数来满足 Java 的堆需求。通过编辑文件 /proc/sys/vm/nr_hugepages，系统管理员可以配置大页数。

|

有时，当系统有适当数量的可用大页时，对用于大页内存分配的 shmget() 的调用会失败。发生此故障的原因是巨大的页面不连续。要防止此故障，系统管理员必须在系统引导时指定 `hugepages=<n>` 选项（而不是以后通过 /proc 指定）。

|

使用 shmmax 的 shmget() 分配大页内存。要修改 shmmax 的值，请编辑文件 /proc/sys/kernel/shmmax。

|

请注意，仅当由 root 用户运行 shmget() 时它才成功。要使用大页，您可以 root 用户身份运行 Java，也可设置 Java 可执行文件的 suid 位。

## 使用 bootclasspath

通过使用在启动 Java 应用程序中描述的 -D 选项，您可以设置系统属性 ibm.jvm.bootclasspath。此属性的值用作附加的搜索路径，插入在 -Xbootclasspath/p: 定义的任何值与引导类路径之间。引导类路径是缺省值，或是使用 -Xbootclasspath: 选项定义的值。

请勿部署使用 -Xbootclasspath: 或 -Xbootclasspath/p: 选项覆盖 core.jar、graphics.jar、server.jar、security.jar、xml.jar、tools.jar 或 charsets.jar 中的类的应用程序，因为此类部署会同 Java 2 Runtime Environment 二进制代码许可证相抵触。

## 指定垃圾收集策略

-Xgcpolicy JVM 运行时选项指定垃圾收集策略。

-Xgcpolicy 的值为 optthruput（缺省值）或 optavgpause。该选项控制垃圾收集器的行为，在应用程序和整个系统的吞吐量与由于垃圾收集引起的暂停时间之间进行权衡。

选项的格式及其值是：

> -Xgcpolicy:optthruput

> -Xgcpolicy:optavgpause

### 暂停时间

当堆中的可用空间无法立即满足应用程序创建对象的尝试时，垃圾收集器就负责标识未引用的对象（垃圾）、删除它们并使堆返回到可以快速满足立即和后继分配请求的状态。这样的垃圾收集循环在应用程序代码执行中引起了偶发的意外暂停。因为应用程序的大小和复杂程度不断增长且堆也相应地不断扩大，所以此垃圾收集暂停时间的大小和有效性方面也有增长趋向。缺省垃圾收集值 optthruput 将很高的吞吐量传递到应用程序，但它是以这些偶发的暂停为代价的，这些暂停可能为几毫秒也可能长达好几秒，这取决于堆的大小和垃圾的数量。

### 减少暂停时间

optavgpause 选项大大地减少了这些垃圾收集暂停占用的时间，也限制了一段垃圾收集暂停时间内增加堆大小带来的影响。此选项特别与那些有大的堆的配置相关。通过执行一些与常规程序执行并发的垃圾收集活动来减少暂停时间。随着暂停时间的减少，应用程序吞吐量可能会减少一些，这种减少因应用程序而异。

### 具有很满的堆的环境

如果 Java 堆快满了，并且几乎没有要回收的垃圾，请求新对象可能不会被很快地满足，因为没有立即可用的空间了。如果在容量接近于满时操作堆，无论使用上述的哪个选项，应用程序性能都可能会受损；另外，如果继续请求更多的堆空间，则应用程序会接收到“内存不足”异常，如果未捕获和处理异常的话，这将导致 JVM 终止。JVM 将在此点产生两个诊断文件：一个 Heapdump 和一个 Javadump。Diagnostics Guide for Java 1.4.2 提供了关于这两个文件的详细信息，它们可以用来确定造成 Java 堆高占用的原因。Diagnostics Guide 在 developerWorks 上： http://www-106.ibm.com/developerworks/java/jdk/diagnosis/。在这些情况下，建议您使用 -Xmx 选项增加堆大小或减少使用中的应用程序对象的数目。

### 有关垃圾收集的进一步信息

关于垃圾收集的更多详细信息，请参阅：

http://www.ibm.com/developerworks/ibm/library/i-garbage1/

http://www.ibm.com/developerworks/ibm/library/i-garbage2/

http://www.ibm.com/developerworks/ibm/library/i-garbage3/

# JVM 如何处理信号

当出现一个 JVM 所关注的信号时，将调用一个信号处理程序。该信号处理程序判断它是被 Java 还是非 Java 线程调用。如果信号是用于 Java 线程的，则 JVM 将接管对信号处理的控制。如果信号是非 Java 线程的，并且安装 JVM 的应用程序以前安装过自己的信号处理程序，则控制权将交给该处理程序。否则，将忽略此信号（无论这是不是信号的缺省操作）。

对于异常及错误信号，JVM 将执行下列两种操作之一：

- 处理该情形并恢复（当异常是由您的应用程序代码引起）
- 输入受控关闭序列，其中 JVM 将：
  1. 为该信号调用应用程序的信号处理程序
  2. 输出 Javadump，以描述故障点上的 JVM 状态
  3. 调用任何安装的应用程序异常终止 hook
  4. 执行必要的清除，以提供干净的关闭

关于如何编写指定以上挂钩的启动程序的信息，请参阅 http://www-106.ibm.com/developerworks/java/library/i-signalhandling/。此项是为 Java V1.3.1 而写，但也适用于更高版本。

对于中断信号，JVM 还输入一个受控的关闭序列，但是这次它将被视为符合以下条件的正常终止：

- 为该信号调用应用程序的信号处理程序
- 运行所有的应用程序关闭 hook
- 调用任何安装的应用程序退出 hook
- 执行必要的 JVM 清除

此关闭与由一个对 Java 方法 `System.exit()` 的调用所启动的关闭相同。

JVM 所使用的其它信号是用于内部控制用途的，并且不会导致该控制终止。唯一关注的控制信号是 SIGQUIT，它会导致生成 Javadump。

## JVM 所使用的信号

下面的表 1 显示了 JVM 所使用的信号。 信号已在表中按类型或使用情况分组，如下所示：

- 异常：无论何时出现致命情形，操作系统都会同步会发出一个相应的异常信号。
- 错误：如果检测到不能从中恢复的情形，JVM 会发出 SIGABRT。
- 中断：中断信号从 JVM 进程外异步发出以请求关闭。
- 控制：JVM 为控制目的而使用的其它信号。

表 1. JVM 所使用的信号
信号名称 | 信号类型 | 描述 | 是否被 -Xrs 禁用
--- | --- | --- | ---
SIGSEGV | 异常 | 访问内存不正确（写到不可访问的内存） | 否
SIGILL | 异常 | 非法指令（尝试调用未知的机器指令） | 否
SIGFPE | 异常 | 浮点异常（除数为零） | 否
SIGBUS | 异常 | 总线错误（尝试寻找不存在的内存位置的地址） | 是
SIGSYS | 异常 | 发出错误的系统调用 | 是
SIGXCPU | 异常 | 超出 CPU 时间限制（您运行的时间已经太长） | 是
SIGXFSZ | 异常 | 超出文件大小限制 | 是
SIGABRT | 错误 | 异常终止。无论何时检测到 JVM 错误，JVM 都发出该信号。 | 是
SIGINT | 中断 | 交互式注意信号（CTRL-C）。JVM 正常退出。 | 是
SIGTERM | 中断 | 终止请求。JVM 将正常退出。 | 是
SIGHUP | 中断 | 挂起。JVM 正常退出。 | 是
SIGUSR1 | 控制 | 用户定义。由一些 JVM 用于内部控制用途。 | 否
SIGUSR2 | 控制 | 用户定义。由一些 JVM 用于内部控制用途。 | 否
SIGQUIT | 控制 | 发给终端的退出信号。JVM 以此来获取 Javadump。 | 是
SIGTRAP | 控制 | 用于 dbx 或 ptrace 内部使用。由一些 JVM 用于内部控制用途。 | 是
SIGPIPE | 控制 | 对未被正在读取的管道的写入。JVM 忽略此情形。 | 否

使用 -Xrs（减少信号使用）选项来防止 JVM 处理大多数的信号。要获取更多的信息，请参阅 Sun 的 Java 应用启动程序页面，地址是 http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html。

信号 `1（SIGHUP）`、`2（SIGINT）`、`4（SIGILL）`、`6（SIGABRT）`、`7（SIGEMT）`、`8（SIGFPE）`、`10（SIGBUS）`、`11（SIGSEGV）`、`12（SIGSYS）`、`15（SIGTERM）`和 `24（SIGXCPU）`会导致 JVM 关闭；因此，应用程序信号处理程序不应该尝试从这些信号中进行恢复，除非该处理程序不再需要 JVM 服务。

## 将本机代码驱动程序链接到信号链接库

Runtime Environment 包含一个信号链接工具。信号链接使 JVM 能够更有效的同安装有自己信号处理程序的本机代码进行相互操作。

信号链接工具使应用程序能够在系统库之前链接并装入共享库 libjsig.so。libjsig.so 库确保拦截诸如 `signal()`、`sigset()` 以及 `sigaction()` 之类的调用，这样它们的处理程序将不会替换 JVM 的信号处理程序。反之，这些调用将保存新的信号处理程序，或者将它们“链接”到 JVM 安装的处理程序之后。然后，当这些信号中的任何信号出现且发现不是针对 JVM 时，预先安装的处理程序将被调用。

要使用 libjsig.so，需进行以下操作：

- 将其与创建或嵌入 JVM 的应用程序链接：

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

  或
- 使用 LD_PRELOAD 环境变量：

      export LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<java_application>（bash 和 ksh）
      setenv LD_PRELOAD=$JAVA_HOME/bin/libjsig.so;
      		<java_application>（csh）

  （假定已设置 `JAVA_HOME`；否则，使用 /opt/IBMJava2-142/jre。）

如果您安装使用 `sigaction()` 的信号处理程序，则在 JVM 使用此信号时，某些 sa_flag 不会被发现。它们是：

- SA_NOCLDSTOP — 总不设置该标志。
- SA_NOCLDWAIT — 总不设置该标志。
- SA_RESTART — 该标志总是被设置。
- SA_ONSTACK － 总是为 Linux IA 和 zSeries 设置（仅对于 SIGSEGV），并且不是为 Linux PPC 设置的。

libjsig.so 库也会隐藏来自应用程序的 JVM 信号处理程序。因此，JVM 启动后所进行的调用（如 `signal()`、`sigset()` 和 `sigaction()`）不再返回对 JVM 的信号处理程序的引用，但是取而代之的是返回任何 JVM 启动前所安装的处理程序。

| | |

# 实现 RMI 的连接处理程序池

|

缺省情况下，不启用 RMI 连接处理程序的线程池。

|

要启用在 RMI TCPTransport 级别实现的连接池，请设置选项

|

    -Dsun.rmi.transport.tcp.connectionPool=true（或任意非空值）

|

此版本的 Runtime Environment 不具有可以用来限制连接池中线程数的任何设置。

# 获取 IBM build 和版本号

要获取 IBM build 和版本号，在外壳程序提示下输入：

`java -version`

# （仅对于 32 位的 Linux IA）使用 Java Plug-in

Java Plug-in 是一个 Web 浏览器插件。如果使用 Java Plug-in，则可以绕过 Web 浏览器的缺省 JVM，并改为使用 Runtime Environment 在浏览器中运行 applet 或 bean。

Java Plug-in 由 Sun 记录在以下站点：http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/。

在此发行版的 SDK 中，Java Plug-in 不支持打印。

当分发提供 Java Plug-in 时，Java Plug-in 在 Netscape 4、Netscape 6、和 Mozilla 上受支持。

## 为 Netscape 6 和 Mozilla 安装和配置 Java 插件

要为 Netscape 6 或 Mozilla 安装和配置 Java Plug-in，请创建一个从库文件 /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so 至浏览器插件目录（/brower-install-path/plugins）的符号链接。

要使所有用户都可以使用 Java Plug-in：

1. 以 root 身份登录。
2. 将一个至库文件 /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so 的符号链接放置到 Mozilla 或 Netscape 插件目录（通常是 /usr/local/mozilla/plugins/（或 netscape），虽然在某些分发上可能有所不同）。

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

注:
libjavaplugin_oji.so 应当被符号链接，而不是复制，否则它将无法找到 JVM 的位置。

## 为 Netscape 4 安装和配置 Java Plug-in

要为 Netscape 4 安装和配置 Java Plug-in，请建立一个从库文件 /opt/IBMJava2-142/jre/bin/javaplugin.so 至浏览器插件目录（/brower-install-path/plugins）的符号链接。

要使当前的用户可以使用 Java Plug-in：

1. 在 $HOME/.netscape 目录下创建名为 plugins 的目录（如果当前不存在此目录）。
2. 创建一个从库文件 /opt/IBMJava2-142/jre/bin/javaplugin.so 至 /$HOME/.netscape/plugins 的符号链接。

要使所有用户都可以使用 Java Plug-in：

1. 以 root 身份登录。
2. 放置一个至库文件 /opt/IBMJava2-142/jre/bin/javaplugin.so 的符号链接到插件目录（通常是 /usr/local/netscape/plugins/，虽然在某些分发上可能有所不同）。

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

注:
javaplugin.so 应当被符号链接而不是复制；否则它将无法找到 JVM 的位置。

## 使用附带 gcc3.2.x 已编译的 Mozilla 浏览器的 Java Plug-in

如果您正在使用与 gcc3.2.x 已编译的 Mozilla 浏览器（SLES8、Suse8.1）一起提供的分发，那么您必须使用与 IBM SDK for Linux V1.4.2 一起提供的 gcc3 已编译的插件库：libjavaplugin_ojigcc3.so 和 libjavaplugin_jnigcc3.so。 要使用这些库，请创建至 <mozilla_installation_dir>/plugins 目录下的 libjavaplugin_ojigcc3.so 的符号链接：

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

## 使用 DBCS 参数

Java Plug-in 支持双字节字符（例如繁体中文 BIG-5、韩国语、日语）作为 `<APPLET>`、`<OBJECT>` 和 `<EMBED>` 标记的参数。必须为 HTML 文档选择正确的字符编码，以便 Java Plug-in 可以分析此参数。通过在 `<HEAD>` 部分中使用 `<META>` 标记，可以为 HTML 文档指定字符编码，如下所示：

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

此示例告诉浏览器使用中文 BIG-5 字符编码来分析 HTML 文件。所有参数都正确地传递到 Java Plug-in。但是，某些较早的浏览器版本可能无法正确理解此标记。在这种情况下，可以强制浏览器忽略此标记，但您可能不得不手工更改编码。

您可以指定希望使用哪个编码来分析 HTML 文件：

- Netscape 4：“查看”菜单 -> 字符集
- Mozilla：“查看”菜单 -> 字符编码

# （仅适用于 Linux IA 32 位）使用 Web Start

Java Web Start 是一种部署基于 Java 技术的应用程序的方法。它连接计算机和因特网，并允许用户直接从 Web 启动和管理应用程序。Java Web Start 提供单击激活应用程序的功能，确保您总是在运行最新的版本，免去了安装和升级过程。通常情况下，通过 Web 分发软件要求先在 Web 上找到安装程序、下载安装程序、定位安装程序并执行安装程序。在执行安装程序后，将提示您提供安装目录和安装选项，例如，完全安装、典型安装或最小化安装。这可能是一个耗时而复杂的任务，必须对软件的每个新版本重复执行此任务。

相反，部署 Web 的应用程序（例如，基于 HTML 的电子邮件客户机和日历）可直接安装和使用。Web 浏览器使此过程可自动执行。不需要执行任何复杂的下载、设置和配置步骤，就可保证您运行的是最新的版本。Java Web Start 为全功能的应用程序提供相同的好处。

关于 Web Start 的更多信息，请参阅：http://java.sun.com/products/javawebstart，要获取更多文档，请参阅：http://java.sun.com/j2se/1.4.2/docs/guide/jws/index.html。

## 安装 Web Start

Web Start 安装脚本是与 JRE for Java V1.4.2 一起安装的。

此脚本被称为 /opt/IBMJava2-142/jre/bin/webstart_install_sdk.sh。要使用 Web Start， 请运行脚本。将当前工作目录设置为您希望安装 Web Start 的位置。安装过程在当前工作目录中创建名为 javaws 的子目录。

安装过程还更新 Mozilla 和其它浏览器使用的 MIME 类型。

您可以通过三种方式调用 Web Start：

1. 在 Web 页面上选择一个引用 .jnlp 文件的链接。
2. 从上面创建的 javaws 目录启动 javaws，从而启动可从中选择应用程序的 Web Start 对话框。
3. 在外壳程序脚本中，请输入 `javaws <URL>`，其中，`<URL>` 是 .jnlp 文件的位置。

所有这些操作会导致 Web Start 启动选定的应用程序。如果这是第一次使用，则应用程序被下载。以后再调用的话，则检查原始 Web 站点以查看是否有可用的更新。在启动应用程序之前，Web Start 下载这些更新。

如果 jnlp 出错（例如，无效的标记名），则 Web Start 不显示错误消息而异常终止。

# 使用浮动堆栈

在非浮动的堆栈 Linux 系统上，无论为 -Xss 设置了什么，都为每个线程提供最小大小为 256 KB 的本机堆栈。在浮动堆栈 Linux 系统上，执行 -Xss 值。因此，如 果您正从非浮动的堆栈 Linux 系统迁移，则必须确保所有的 -Xss 值都足够大，并且不依赖最小值 256 KB。

（仅针对 32 位的 Linux IA）特定 Linux 分发（例如 Red Hat）已启用称为“浮动堆栈”的 GLIBC 功能。由于 Linux 内核限制，如果内核级别小于 2.4.10，则 JVM 不会在启用浮动堆栈的 SMP 硬件上运行。在此环境中，在 JVM 或任何启动 JVM 的应用程序启动之前，必须禁用浮动堆栈。 在 Red Hat 上，使用此命令通过导出环境变量来禁用浮动堆栈：

    export LD_ASSUME_KERNEL=2.2.5

# 在 DBCS 语言中切换输入法

在双字节字符集（DBCS）系统上，如果希望切换输入法，则应当使用 java.util.prefs.Preferences 类代替 IBMJAVA_INPUTMETHOD_SWITCHKEY 和 IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS 环境变量。详细信息，请参阅 Sun 的 Input Method Framework Specification。

# 在用户系统上安装应用程序

在开发产品并准备发行后，您需要在用户系统上安装产品，配置用户系统来支持您的软件并配置 Runtime Environment。

如果使用 Runtime Environment for Linux，则必须确保安装过程没有覆盖现有的安装（除非现有的 Runtime Environment for Linux 是旧版本）。

要重新分发 Runtime Environment for Linux，您可以在自己的系统上安装它，然后将所需的 Runtime Environment 文件复制到安装集。如果选择此方法，则必须包含所有与 Runtime Environment for Linux 一起提供的文件。只有在包含所有文件的前提下才能重新分发 Runtime Environment for Linux 软件。实际上，当发行应用程序时，它将包含自已的 Runtime Environment for Linux 副本。

关于必须重新分发的文件的特定信息，请参阅本产品自带的许可证协议。

# 已知局限

以下部分说明了 Runtime Environment for Linux 的已知局限。

## 适用于除已指出平台之外所有 Linux 平台的局限

- 如果正在运行 K Desktop Environment（KDE），则可能无法使用带双字节字符集（DBCS）的系统剪贴板在 Linux 应用程序和 Java 应用程序之间复制信息。
- SDK 将 Java 线程作为本机线程实现，这导致每个线程成为一个独立的 Linux 进程。如果 Java 线程的数目超过允许的最大进程数，程序可能会获取一条错误消息（SIGSEGV 错误），或者系统可能会挂起。

  可用的最大线程数由以下各项的最小值确定：

  - 在 /etc/security/limits.conf 中的用户进程设置（ulimit -u）
  - 定义在 /proc/sys/kernel/threads_max 中的限制
  - 在 libpthreads.so 中定义的 PTHREAD_THREADS_MAX 限制（更改需要重新编译 glibc）

  然而，在到达最大线程数之前，您可能已耗尽了虚拟存储器。

- 如果用 Ctrl-C 终止一个 Java 应用程序，则几个进程可能会处于孤儿状态。
- 尝试显示使用 Swing 创建的对话框可能使那些对话框延迟几秒钟才会显示在窗口中。
- 包括 ALT 键的 KeyEvent 结果在 Linux 中使用不同的窗口管理器时会有所不同。它们也不同于其它操作系统的结果。在 Enlightenment 窗口管理器中，Alt+A 和 Shift+Alt+A 产生不同的修饰符，而 Ctrl+Alt+A 根本就不产生键事件。然而，使用 WindowMaker 窗口管理器时，Ctrl+Alt+A 将产生键事件。
- 在 Linux X Window 系统上，键映射被设置为：64 0xffe9（Alt_L）0xffe7（Meta_L）和 113 0xffea（Alt_R）0xffe8（Meta_R）。可以在外壳程序提示下输入以下命令进行检查：

      xmodmap -pk

  这就是 SDK 认为 Meta 与 Alt 键一起被按下的原因。您可以通过在外壳程序提示下输入以下命令除去 Meta_x 映射作为回避措施：

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

  注:
  此变通方法可能影响其它运行于相同显示模式下的 X-Window 应用程序（如果这些程序使用被除去的 Meta-key 的话）。
- 在较慢的机器上创建特殊长度的 DSA 密钥对可能会占用相当长的一段时间。不要将此延迟解释为暂挂，因为有足够时间，此处理将可完成。DSA 密钥生成算法已经进行了优化，以便比其它算法更快地生成标准的密钥长度（例如，512、1024）。
- 本机程序不能创建 1.1 JVM。不可能调用 call JNI_CreateJavaVM() 并将 JNI_VERSION_1_1(0x00010001) 版本传递给它。可以传递的版本如下：
  - JNI_VERSION_1_2(0x00010002)
  - JNI_VERSION_1_4(0x00010004)

  每种条件下创建的 JVM 是由这些库（即，1.2.2、1.3.x、1.4.x）所指定的那个 JVM，而不是 JNI 接口所暗示的那个 JVM。接口 API 不影响由 JVM、类库 API 或 JVM 行为的任何其它区域所执行的语言规范。接口 API 只指定本机代码可如何调用所需行为。

- 对于仅使用繁体中文的用户，当使用 LinYi ZhuYin、YiTian ZhuYin 和 Bosham IME 输入 TCH 字符时，功能键 Enter、Space、Backspace 和 ESC 不能像预期那样工作。Enter 键插入一新行，ESC 键用于取消预先编辑字符串或候选窗口，Space 条插入一个空格。当使用 LinYi ZhuYin、YiTian ZhuYin 和 Bosham IME 输入繁体中文字符时，在按下提交键后候选窗口应消失，而在按下 Backspace 键时此窗口不应该出现。
- 如果用许多并发线程运行，则您可能会得到一个警告消息：`java.lang.OutOfMemoryError`。这指示您的机器的系统资源已耗尽，这些消息可能是由以下原因造成的：
  1. 无法创建新的线程，是因为：
     - 创建的进程数超出了用户限制。
     - 没有足够的系统资源可用来创建新的线程。在这种情况下，根据应用程序正在运行的内容，您可能还会看到其它 Java 异常。
  2. 内核内存要么将耗尽，要么将被分段。您可能会在 /var/log/messages 中看到“内存不足”内核消息，这些消息已杀死进程标识。
  尝试调整系统，以增加相应的系统资源。
- 在安装过程中，如果已经安装了 Red Hat 发布的此产品的先前版本，Red Hat 软件包管理器（RPM）将报告此 IBM 软件包比 Red Hat 已经发布的产品的任何版本都老。这种情况是由于 Red Hat 在 RPM 软件包中添加了一个“序列号”而引起的，这个序列号覆盖了软件包中产品的版本模式，缺省情况下，RPM 拒绝安装看上去比已经安装的版本更老的软件包。rpm 命令的 --oldpackage 选项使您能够安装新的 IBM 软件包。
- 在 SDK V1.4.2 中，因为更改了 Java 监视器的 IBM JVM 实现，在 SLES 8 上的对称多处理器（ SMP）上运行的应用程序将更好地执行。因为大多数应用程序会有收益或者性能无更改，新的算法现在是缺省行为。如果，另一方面，新的缺省设置降低了 JVM 的性能，您可以通过设置环境变量来恢复旧的算法：`export IBM_JVM_MONITOR_OLD=<any value>`。

  要获取更多信息，请参阅 Diagnostics Guide for V1.4.2。

- 在 Linux 机器上运行 java awt/swing 应用程序并将显示导出至另一机器时，如果装在 X 客户机上的字体集不同于装在 X 服务器上的字体集，您可能会遇到问题（会显示一些对话框）。此问题尤其对于中文语言环境中的 SLES8 是值得注意的，在该环境下，服务器版本的缺省安装安装 arphic 字体，但是客户机的缺省安装不会这么做。要避免此问题，请在两个机器上安装同样的字体。
- |如果您的系统语言环境使用的是 UTF-8 编码，一些 SDK 工具可能抛出一个 sun.io.MalformedInputException。要查明您的系统是否使用 UTF-8 编码，请检查特定于语言环境的环境变量（例如 LANG 或 LC_ALL），注意它们是否以“.UTF-8”后缀结尾。如果获得此 sun.io.MalformedInputException，请将不在 7 位 ASCII 范围（0x00 － 0x7f）和未表示为 Java Unicode 字符文字的字符更改为 Java Unicode 字符文字（例如：“\u0080”）。您可以通过从特定于语言环境的环境变量除去“.UTF-8”后缀来解决此问题；例如，如果您的机器缺省的语言环境为“en_US.UTF-8”，则设置 LANG 为“en_US”。 | |
  注:
  |
  RedHat 的一些分发（包括 Redhat9 和 RHEL3），在缺省情况下使用 UTF-8 编码。
  |
  |
- |如果您正在一个交叉平台环境下使用 AMI 和 xcin（例如，您尝试导出 32 位与 64 位系统之间或大尾数法与小尾数法系统之间的显示），可能会出现一些问题。如果您有此类问题，请与您的 Linux 经销商联系。 |
  |
- |在 Redhat Enterprise Linux 3.0 上，中文字符（除了中文 GB18030 语言环境下的 GB2312 字符）可能无法在 AWT 文本组件上显示。 |
  |

## 32 位 Linux IA 的局限

- 在 SDK 的此发行版中，Java Plug-in 不支持打印。
- SLES 8 for Korean 可能不显示韩国语字符。要解决此问题，请安装“baekmuk-ttf”rpm 软件包并运行 `SUSEconfig`：

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

- 对于阿拉伯语文本用户，当使用带有 Matrox 视频卡和已启用加速的 Linux 时，在使用 drawString 来显示大字体时可以看到字符失真。此问题由那些卡的驱动程序引起。建议的变通方法是禁用设备的加速。

## 32 位 和 64 位 Linux PPC 的局限

- 如果 Java 代码使用 JNI 调用，且任何特定调用都具有八个以上的浮点或双精度型参数，则 C 代码必须用 GNU C 编译器（GCC）的 gcc-2.95.3 自由软件基金会（FSF）级别编译。
- 如果正在运行 XFree86 V3.x，可能会接收到 SIGSEGV 错误。要避免此问题，建议您使用 XFree86 V4.x。
- 如果将日期设置为 1970 年以前的日期，则在试图启动 Java 时会导致异常错误。要避免此问题，将机器手工设置为当前日期。

## 32 位 Linux PPC 的局限

- PowerPC 的 SLES 8.0 安装 CD 不包含能正确显示中文的适当的 Java TrueType 中文字体。在 United Linux 1.0 上安装 ttf-hanyi-20021016-0.noarch.rpm 软件包以改进中文字体显示。

## 64 位 Linux zSeries 的局限

以下局限适用于 64 位 Linux zSeries 上的中文用户、繁体中文用户和韩国语用户：

- V1.4.2 未测试中文和繁体中文输入方法服务器（xcin）。
- 对于仅使用简体中文的用户，一些中文字符可能不会显示。要避免此问题，请将以下 TrueType 字体下载至您的 64 位 zSeries 系统上的 SLES8：
  - ttf-hanyi-20021016-0
  字体可从 SUSE Web 站点获得：http://www.suse.com/index_us.html。
- 对于仅使用繁体中文的用户，一些中文字符可能不会显示。要避免此问题，请将以下 TrueType 字体下载至作为图形客户机工作的 SLES8：
  - ttf-arphic-bkai00mp-20001125-103
  - ttf-arphic-gbsn00lp-20001125-103
  - ttf-arphic-gkai00mp-20001125-103
  - ttf-arphic-bsmi00lp-20001125-103
  - ttf-arphic-20001125-323
  字体可以从 SUSE Web 站点获得：http://www.suse.com/index_us.html。

## 32 位和 64 位 Linux zSeries 的局限

- 如果您在没有声卡的机器上使用音频，则在 Java 试图播放声音时可能收到一个错误消息，声明内存不足。消息显示在控制台中，但不影响 Java 应用程序。
- 尽管当前发布的 Linux 内核提供了对因特网协议 V6（IP6）的支持，在使用过程中仍可能会遇到问题。此发行版中包括了 Java 对 IP6 的支持，但建议您在 Java 命令中使用 -Djava.net.preferIPv4Stack=true 选项关闭此支持。如果安装了完全支持 IP6 的内核，则不需要此选项。

# 对本《用户指南》有何意见？

如果您对本《用户指南》的有效性或其它方面有任何意见，我们很乐意通过以下渠道之一听取您的意见。请注意这些渠道不回答技术查询，仅接受有关此文档的意见。用以下方式发送您的意见：

- 电子邮件：ctscrcf@cn.ibm.com
- 传真：
  - 中国：021-63857881
  - 其它国家或地区：（86-21）63857881
- 邮寄：
  IBM 中国公司上海分公司，汉化部
  中国上海市淮海中路 333 号瑞安广场 10 楼
  邮政编码：200021

极小的字体。 选择将消息发送给 IBM，就承认您的消息中包含的所有信息（包括诸如问题、意见、建议或相似信息的反馈数据）被认为是非机密的，IBM 对诸如此类信息不承担任何义务，并可以自由地复制、使用、公开这些信息并将其不加限制地分发给其他人。而且，IBM 可以自由地使用这些信息中包含的想法、概念、专有技术或技术，其用途包括但不限于开发、生产和销售包含这些信息的产品。

# 声明

本信息是为在美国提供的产品和服务编写的。IBM 可能在其他国家或地区不提供本文档中讨论的产品、服务或功能特性。有关您当前所在区域的产品和服务的信息，请向您当地的 IBM 代理咨询。任何对 IBM 产品、程序或服务的引用并非意在明示或暗示只能使用 IBM 的产品、程序或服务。只要不侵犯 IBM 的知识产 权，任何同等功能的产品、程序或服务，都可以代替 IBM 产品、程序或服务。但是，评估和验证任何非 IBM 产品、程序或服务，则由用户自行负责。

IBM 公司可能已拥有或正在申请与本文档内容有关的各项专利。提供本文档并未授予用户使用这些专利的任何许可。您可以用书面方式将许可查询寄往：

- IBM Director of Licensing
  IBM Corporation
  North Castle Drive, Armonk
  NY 10504-1758 U.S.A.

有关双字节（DBCS）信息的许可查询，请与您所在国家或地区的 IBM 知识产权部门联系，或用书面方式将查询寄往：

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

本条款不适用英国或任何这样的条款与当地法律不一致的国家或地区：

International Business Machines Corporation“按现状”提供本出版物，不附有任何种类的（无论是明示的还是暗含的）保证，包括但不限于暗含的有关非侵权、适销和适用于某种特定用途的保证。某些国家或地区在某些交易中不允许免除明示或暗含的保证。因此本条款可能不适用于您。

本信息中可能包含技术方面不够准确的地方或印刷错误。此处的信息将定期更改；这些更改将编入本资料的新版本中。IBM 可以随时对本资料中描述的产品和／或程序进行改进和／或更改，而不另行通知。

本信息中对非 IBM Web 站点的任何引用都只是为了方便起见才提供的，不以任何方式充当对那些 Web 站点的保证。该 Web 站点中的资料不是 IBM 产品资料的一部分，使用那些 Web 站点带来的风险将由您自行承担。

IBM 可以按它认为适当的任何方式使用或分发您所提供的任何信息而无须对您承担任何责任。

本程序的被许可方如果要了解有关程序的信息以达到如下目的：(i) 允许在独立创建的程序和其他程序（包括本程序）之间进行信息交换，以及 (ii) 允许对已经交换的信息进行相互使用，请与下列地址联系：

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

只要遵守适当的条件和条款，包括某些情形下的一定数量的付费，都可获得这方面的信息。

本资料中描述的许可程序及其所有可用的许可资料均由 IBM 依据 IBM 客户协议、IBM 国际程序许可协议或任何同等协议中的条款提供。

此处包含的任何性能数据都是在受控环境中测得的。因此，在其他操作环境中获得的数据可能会有明显的不同。有些测量可能是在开发集的系统上进行的，因此不保证与一般可用系统上进行的测量结果相同。此外，有些测量是通过推算而估计的，实际结果可能会有差异。本文档的用户应当验证其特定环境的适用数据。

涉及非 IBM 产品的信息可从这些产品的供应商、其出版说明或其他可公开获得的资料中获取。IBM 没有对这些产品进行测试，也无法确认其性能的精确性、兼容性或任何其他关于非 IBM 产品的声明。有关非 IBM 产品性能的问题应当向这些产品的供应商提出。

## 商标

IBM 是 International Business Machines Corporation 在美国和／或其他国家的商标或注册商标。

IBM、iSeries、pSeries 和 zSeries 是 International Business Machines Corporation 在美国和／或其他国家或地区的商标或注册商标。

Java 和所有基于 Java 的商标和徽标是 Sun Microsystems, Inc. 在美国和／或其他国家或地区的商标或注册商标。

Intel、Intel Inside（徽标）、MMX 和 Pentium 是 Intel Corporation 在美国和／或其他国家或地区的商标。

其他公司、产品或服务名称可能是其他公司的商标或服务标记。

本产品包括由 Apache Software Foundation http://www.apache.org/ 开发的软件。