Date: 2004-06-07

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

# 使用手冊

# 版權資訊

附註：在使用本資訊及其支援的產品之前， 請務必閱讀注意事項下的一般資訊。

本「使用手冊」修訂版適用於下列通過測試的平台：

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

以及所有後續版次與修正，直到新修訂版中另有指示為止。

(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 和外掛程式是 Intel 架構上的 32-bit SDK for Linux 特有的程式。

IBM Runtime Environment 中包含 Java Virtual Machine (JVM)、核心 Sun Microsystems Java 類別及支援檔案。在 Runtime Environment 中，並未包含全部在 SDK 套件中可以找到的類別。

本「使用手冊」中提供有關 Runtime Environment 的一般資訊，以及 Runtime Environment 的 IBM 實作與 Sun 實作之差異的相關特定資訊。請同時參閱本「使用手冊」以及 Sun 網站上內容更廣泛的文件：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" 兩個術語。

本 1.4.2 版「使用手冊」的 HTML 版本或彩色印行本時，其技術上的變更（非次要或明顯之變更，如將 "1.4.1" 更新為 "1.4.2"）均以紅字標明，且在變更處左側也會加上垂直線。

# 目錄

版權資訊
前言
概觀
| |
慣例
版本相容性
| |
Linux PPC64 使用者資訊
Runtime Environment for Linux 所包含的檔案
授權合約
Just-In-Time (JIT) 編譯器
Java 原生介面和原生方法介面
| |
在 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 建置和版本號碼
（限 Linux IA 32 位元）使用 Java 外掛程式
安裝並配置適用於 Netscape 6 和 Mozilla 的 Java 外掛程式
安裝並配置適用於 Netscape 4 的 Java 外掛程式
搭配 Java 外掛程式使用 gcc3.2.x 編譯的 Mozilla 瀏覽器
使用 DBCS 參數
（限 Linux IA 32 位元） 使用 Web Start
安裝 Web Start
使用浮動堆疊
切換 DBCS 語言中的輸入方法
在使用者系統中安裝應用程式
已知限制
適用於所有 Linux 平台的限制（除非另有指示）
Linux IA 32 位元限制
Linux PPC 32 位元與 64 位元限制
Linux PPC 32 位元限制
Linux zSeries 64 位元限制
Linux zSeries 32 位元與 64 位元限制
對於本「使用手冊」是否有任何意見？
注意事項
商標

# 概觀

Runtime Environment for Linux 含有建立 Java Runtime Environment 及執行 Java 程式所需要的類別子集。 其中也包含 Java Virtual Machine、Java 類別及支援的檔案。Runtime Environment for Linux 僅包含 SDK 中的類別子集。

| | |

## 慣例

|

本「使用手冊」全文當中，SDK 預設安裝目錄是指 /opt/IBMJava2-142/。下列平台都有如下所示的預設安裝目錄； |當您看到 /opt/IBMJava2-142/ 時，請使用適合您平台的目錄： |

|

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

## 版本相容性

一般而言，SDK for Linux 1.1.8、1.2.2 或 1.3.1 版中執行的任何 Applet 或應用程式， 應該都可以在本版中正常運作。依存於 Sun Java 1.4.2 API 的 Applet 僅能在支援 Java 1.4.2 API 的瀏覽器執行。

不保證 Runtime Environment 1.4.2 版編譯的類別能夠在 1.4.0 之前的版次上使用。

| | |

### Linux PPC64 使用者資訊

|

SLES 8 不支援 Runtime Environment 1.4.2 版。 |如果您要在 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 搭配使用。 （Linux IA 64 位元與 Linux zSeries 31 位元和 64 位元除外）。

## 授權合約

LICENSE_xx.html 檔含有 Runtime Environment for Linux 軟體的授權合約。（xx 是語言的縮寫。）

如果要檢視或列印授權合約，請使用 Web 瀏覽器開啟檔案。

## Just-In-Time (JIT) 編譯器

The just-in-time (JIT) 編譯器 (libjitc.so) 會在 Java 應用程式或 Applet 執行時，以動態方式產生常用之位元組碼序列的機器碼。

Runtime Environment for Linux 包括 預設會啟用的 JIT 編譯器 (libjitc.so)。 您可以停用 JIT，以便從 Java 應用程式、Applet 或編譯器本身當中，將問題分離出來。

如果要停用 JIT，請在您要執行應用程式的視窗中的 Shell 提示下鍵入下列指令：

    export JAVA_COMPILER=NONE

如果要啟用 JIT，請在 Shell 提示下輸入：

    export JAVA_COMPILER=jitc

若要驗證否是已啟用 JIT，請在 Shell 提示下輸入：

    java -version

如果 JIT 已在使用中，便會顯示一則包含下列內容的訊息：

    (JIT enabled: jitc)

如果 JIT 不在使用中，便會顯示一則包含下列內容的訊息：

    (JIT disabled)

## Java 原生介面和原生方法介面

「Java 原生介面 (JNI)」已隨附於 Runtime Environment 中。 關於使用 JNI 的資訊，請參閱 Sun 網站：http://java.sun.com。

在這個版次中，IBM 不支援「原生方法介面」。 請勿在應用程式使用這個介面。

| | |

# 在 Red Hat Enterprise Linux (RHEL) 3 上安裝

|

Runtime Environment 取決於共用程式庫 /usr/lib/libstdc++-libc6.2-2.so.3。 |依預設，RedHat Enterprise Linux (RHEL) 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 之後，請編輯 Shell Login Script 並將此目錄加入 PATH 陳述式：

/opt/IBMJava2-142/jre/bin

如果您將 Runtime Environment for Linux 安裝在 另一個目錄，請將 /opt/IBMJava2-142/ 取代為安裝 Runtime Environment 的目錄。

註:
（僅限 Linux IA 32 位元中文版使用者） 由於 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. 在 Shell Script，鍵入下列指令：

   -         rpm -e IBMJava2-JRE-1.4.2

   - 若為 Linux PPC 32 位元，請鍵入：

         rpm -e IBMJava2-JRE-ppc-1.4.2

   - 若為 Linux PPC 64 位元，請鍵入：

         rpm -e IBMJava2-JRE-ppc64-1.4.2

   另外，也可以使用像 kpackage 或 yast2 這類的圖形式工具
2. 從 PATH 陳述式移除您安裝 Runtime Environment 的目錄。
3. （僅限 Linux IA 32 位元） 如果已安裝 Java 外掛程式，請從 Web 瀏覽器目錄中移除 Java 外掛程式檔案。

## 解除安裝壓縮的 Tape Archive (TAR) 套件

如果已安裝壓縮的 TAR 套件，而要解除安裝 Runtime Environment for Linux 時：

1. 從您安裝 Runtime Environment 的目錄中移除 Runtime Environment 檔案。
2. 從 PATH 陳述式移除您安裝 Runtime Environment 的目錄。
3. （僅限 Linux IA 32 位元）如果已安裝 Java 外掛程式，請從 Web 瀏覽器目錄中移除 Java 外掛程式檔案。

| | |

# 復原 JDBC/ODBC 橋接功能

|

IBM SDK 1.4.2 版已復原之前在 1.4.0 版移除的 JDBC/ODBC 橋接功能。

# 啟動 Java 應用程式

Java 工具可啟動 Java 應用程式。

JVM 會在下列三組位置中搜尋啟動類別和已經使用的其他類別：bootstrap 類別路徑、已安裝的延伸項目，以及使用者類別路徑。類別名稱或 JAR 檔案名稱後面的引數會被傳遞給 main 函數。

javaw 指令同等於 java，不同之處是 javaw 沒有相關聯的主控台視窗。若您不想要出現指令提示視窗，請使用 javaw。javaw 啟動程式啟動失敗時會顯示一個包含錯誤資訊的對話框。

## 指令摘要

java 與 javaw 指令的語法如下：

    java [ 選項 ] 類別 [ 引數 ... ]
    java [ 選項 ] -jar 檔案.jar [ 引數 ... ]
    javaw [ 選項 ] 類別 [ 引數 ... ]
    javaw [ 選項 ] -jar 檔案.jar [ 引數 ... ]

顯示在方括弧內的項目是選用性的。

options
  指令行選項。
class
  所要呼叫的類別名稱。
file.jar
  所要呼叫之 jar 檔案的名稱。它只能配合 -jar 使用。
argument
  傳遞到 main 函數中的引數。

若指定了 -jar 選項，則指名的 JAR 檔案要包含應用程式的類別和資源檔，且以 Main-Class manifest 標題來表示啟動類別。

## 選項

啟動器具有一組現行執行時期環境可支援且未來版次中也會支援的標準選項。此外，還有一組非標準選項。

### 標準選項

- -D<property_name=<value>
  - 設定系統內容。
- -assert
  - 列印 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 檔>
  - 設定 bootstrap 類別和資源的搜尋路徑。尚有其他方法可以設定 bootclasspath。請參閱使用 bootclasspath。
- -Xbootclasspath/a: <以 ";" 間隔的目錄和 zip 或 jar 檔案>
  - 附加到 bootstrap 類別路徑的尾端。
- -Xbootclasspath/p: <以 ";" 間隔的目錄和 zip 或 jar 檔>
  - 置於 bootstrap 類別路徑的開頭。請參閱使用 bootclasspath。
- -Xcheck:jni
  - 執行 JNI 函數的額外檢查。
- -Xcheck:nabounds
  - 執行 JNI 陣列作業的額外檢查。
- -Xdebug
  - 啟動 JVM 並啟用除錯器。
- -Xdisableexplicitgc
  - 將 System.gc() 的呼叫變更為無作業 (no-op)。
- -Xdisablejavadump
  - 對於異常程序終止停用 Java 傾出機能。當停用 Java 傾出時，就會執行系統程序終止傾出。當 Java 程式碼內發生問題時，Java 傾出很有用。若問題是出在系統元件，則使用正常系統傾出可能比較有用。
- -Xgcpolicy:{optthruput | optavgpause}
  - 指定記憶體回收設定。預設值是 optthruput。如需詳細資訊，請參閱指定記憶體回收原則。
- |-Xlp |
  |
  - 要求 JVM 以 MB 為單位的大頁面來配置 Java 資料堆（用來配置 Java 物件的資料堆）。 |如果無法使用大頁面，則以 Linux 標準頁面（大小通常為 4 KB）來配置 Java 資料堆。 |JVM 使用 shmget() 來為資料堆配置大頁面。執行 Linux Kernel V2.6 或更新版本的系統支援大頁面。
- -Xms<size>
  - 設定起始 Java 資料堆大小。
- -Xmx<size>
  - 設定最大 Java 資料堆大小。
- -Xnoclassgc
  - 停用類別記憶體回收。
- -Xoss<size>
  - 設定任一執行緒最大的 Java 堆疊大小。
- -Xquickstart
  - 改進應用程式的啟動時間。如果您未指定此選項，則會以高度最佳化來完成方法的起始編譯 （亦即，JIT 不重新編譯 "hot" 方法，因為方法最初是以高度最佳化來編譯）。
- -Xrs
  - 減少作業系統信號的使用。
- -Xrunlibrary_name[:options]
  - 載入說明程式程式庫。如需載入多個程式庫，請在指令行上多次指定此選項。此類程式庫的範例如下：
    - -Xrunhprof[:help] | [:<option=<value, ...]
      - 執行資料堆、CPU 或監視器剪影。
    - -Xrunjdwp[:help] | [:<option=<value, ...]
      - 載入除錯程式庫，以便支援應用程式的遠端除錯功能。
- -Xss<size>
  - 設定任何執行緒最大的原生堆疊大小。
- -Xverbosegclog:<path to file><filename>[X, Y]
  - 使 verboseGC 輸出寫入指定的檔案。如果檔案存在，則予以改寫。如果無法開啟現有的檔案或無法建立新檔案， 則輸出會重新導向至 stderr。如果您指定引數 X 和 Y（兩者皆為整數），則 verboseGC 輸出會重新導向 至 Y 個檔案，每一個檔案包含 X 個 gc 循環的 verboseGC 輸出。這些檔案的格式為 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`。

| | |

## 配置大頁面記憶體配置

|

大頁面主要是針對配置了大量記憶體且經常會對其存取的應用程式來改善其使用效能。 |大頁面之所以能夠改善效能，主要是因為「分頁對照表 (Translation Lookaside Buffer, 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 執行）。

|

shmget() 使用 shmmax 配置大頁面記憶體。若要修改 shmmax 的值，請編輯檔案 /proc/sys/kernel/shmmax。

|

請注意：shmget() 只有以 root 身份執行才會成功。若要使用大頁面，您可以使用 root 身份執行 Java，或設定 |Java 執行檔的 suid 位元。

## 使用 bootclasspath

您可以使用啟動 Java 應用程式中說明的 -D 選項來設定系統內容 ibm.jvm.bootclasspath。這個內容值是用來作為額外的搜尋路徑，插入到 -Xbootclasspath/p: 所定義的任何值和 bootstrap 類別路徑之間。bootstrap 類別路徑是預設值，或是使用 -Xbootclasspath: 選項所定義的值。

請勿部署使用 -Xbootclasspath: 或 -Xbootclasspath/p: 選項的應用程式，來置換 core.jar、 graphics.jar、server.jar、security.jar、xml.jar、tools.jar 或 charsets.jar 中的類別， 因為這樣的部署已經違反 Java 2 Runtime Environment 二位元碼授權規定。

## 指定記憶體回收原則

記憶體回收原則由 -Xgcpolicy JVM Runtime 選項指定。

-Xgcpolicy 採用下列值：optthruput（預設 值）或 optavgpause。該選項會控制記憶體回收器的行為，在應用程式和整體系統的產能以及因記憶體回收所造成的暫停時間之間找出平衡點。

該選項及其值的格式為：

> -Xgcpolicy:optthruput

> -Xgcpolicy:optavgpause

### 暫停時間

當應用程式嘗試建立一個物件，但資料堆中的可用空間無法立即滿足要求時，記憶體回收器便會負責來識別未參照的物件（可回收的記憶體）、刪除它們，並讓資料堆返回到可以快速滿足即時及後續配置要求的狀態。這類的記憶體回收循環，在應用程式碼執行時會造成偶發性非預期的暫停。當應用程式的大小及複雜度增加時，資料堆隨之變大。此記憶體回收暫停時間的大小及有效位數也會有增加的趨勢。預設的記憶體回收值 optthruput，會對應用程式提供非常高的產能，但是所需的這些偶發性暫停成本，視資料堆的大小及可回收的記憶體的數量而定，其長度會從幾毫秒到數秒不等。

### 減少暫停時間

optavgpause 選項會大幅縮短記憶體回收暫停所花的時間，也會減輕資料堆大小增加對記憶體回收暫停時間所造成的影響。這個選項對於具備大型資料堆的配置尤其重要。與正常執行的程式同時執行一些記憶體回收活動會減少暫停時間。但隨著暫停時間減少， 您可能會發現應用程式產能也會跟著減少，程度視應用程式而有所不同。

### 資料堆近乎飽和的環境

如果 Java 資料堆變得近乎飽和，並且只收回非常少量的可回收的記憶體時，對於新物件的要求便可能無法立即滿足，因為並沒有立即可用的空間。 如果資料堆在操作時其容量接近飽和，則不論使用的是上述的何種選項，應用程式的效能可能會變糟；而且，如果持續要求更多的資料堆空間，應用程式便會收到「記憶體不足」的異常狀況，如果無法掌握及處理這個異常狀況，便會造成 JVM 的終止。 此時，JVM 會產生兩個診斷檔案：Heapdump 和 Javadump。這些在 Diagnostics Guide for Java 1.4.2 一書當 中有詳細介紹，可用來判斷發生大量 Java 資料堆的原因。 您可以在 developerWorks 網站上找到這個 Diagnostics Guide，網址為： 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 執行緒來進行呼叫。如果信號是針對 JVM 執行緒，JVM 就會控制信號處理作業。如果信號是針對非 Java 執行緒，且安裝 JVM 的應用程式之前已安裝它自己的信號處理， 則控制會傳給該處理程式。否則，系統會忽略該信號（無論如何，這都不是信號的預設動作）。

針對異常狀況和錯誤信號，JVM 會：

- 處理該狀況並回復（如果此異常狀況係由您的應用程式碼所造成），或者
- 輸入受控制的關機順序，在此狀況下，它會：
  1. 呼叫您應用程式的信號處理程式來處理該信號
  2. 輸出 Javadump，以說明失敗當時 JVM 的狀態
  3. 呼叫任何應用程式安裝的終止 hook
  4. 執行必要的清除作業以進行完整關機

有關如何撰寫啟動程式來指定上述 hook 的資訊，請參閱： http://www-106.ibm.com/developerworks/java/library/i-signalhandling/。 此項目是針對 Java 1.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 and ksh)

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

  （假設 `JAVA_HOME` 已設定；否則，請使用 /opt/IBMJava2-142/jre。）

如果您安裝的信號處理程式使用 `sigaction()`，則 JVM 在使用信號時不會注意到部 份的 sa_flags。包括：

- 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 建置和版本號碼

若要取得 IBM 建置和版本號碼，請在 Shell 提示下輸入：

`java -version`

# （限 Linux IA 32 位元）使用 Java 外掛程式

Java 外掛程式是一個 Web 瀏覽器外掛程式。如果您使用 Java 外掛程式，您可以忽略 Web 瀏覽器的預設 JVM，改用 Runtime Environment 在瀏覽器中執行 Applet 或 Bean。

Sun 在下列網址提供有關 Java 外掛程式的文件資料： http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/.

在 SDK 的這個版次中，Java 外掛程式不支援列印功能。

您的發行版所提供的 Netscape 4、Netscape 6 及 Mozilla 皆支援 Java 外掛程式。

## 安裝並配置適用於 Netscape 6 和 Mozilla 的 Java 外掛程式

若要安裝並配置適用於 Netscape 6 或 Mozilla 的 Java 外掛程式，請採用符號式鏈結的方式， 將程式庫檔案 /opt/IBMJava2-142/jre/bin/libjavaplugin_oji.so 鏈結到您瀏覽器的外掛程式目錄 (/brower-install-path/plugins)。

如果要將 Java 外掛程式提供給所有使用者：

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 外掛程式

若要安裝並配置適用於 Netscape 4 的 Java 外掛程式，請採用符號式鏈結的方式， 將程式庫檔案 /opt/IBMJava2-142/jre/bin/javaplugin.so 鏈結到您瀏覽器的外掛程式目錄中 (/brower-install-path/plugins)。

若要讓現行使用者可以使用 Java 外掛程式，請執行下列動作：

1. 如果在 $HOME/.netscape 目錄下還沒有 plugins 這個目錄，請建立此目錄。
2. 請採用符號式鏈結的方式，從程式庫檔案 /opt/IBMJava2-142/jre/bin/javaplugin.so 來鏈結到 /$HOME/.netscape/plugins。

如果要將 Java 外掛程式提供給所有使用者：

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 的位置。

## 搭配 Java 外掛程式使用 gcc3.2.x 編譯的 Mozilla 瀏覽器

如果您使用與 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 外掛程式支援以雙位元組字元（如繁體中文 BIG-5、韓文、日文等）作為 `<APPLET>`、`<OBJECT>` 和 `<EMBED>` 等標籤的參數。您必須選取您的 HTML 文件所適用的正確字元編碼，Java 外掛程式才能剖析參數。 請使用 `<HEAD>` 區段中的 `<META>` 標記指定您的 HTML 文件的字元編碼，如下例所示：

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

上例告訴瀏覽器要使用中文 BIG-5 字元編碼來剖析 HTML 檔案。所有的參數都會正確傳送到 Java 外掛程式。但是，某些舊版瀏覽器可能無法正確暸解這個標示。 在此情況下，您可以強制瀏覽器忽略這個標示，不過可能需要以手動方式變更編碼。

您可以指定您想用來剖析 HTML 檔案的編碼：

- Netscape 4：「檢視」功能表 -> 「字元集」
- Mozilla：「檢視」功能表 ->「字元編碼」

# （限 Linux IA 32 位元） 使用 Web Start

Java Web Start 是一種可用來部署以 Java 技術為基礎之應用程式的工具。 它可連接電腦與 Internet，並可讓使用者直接從 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 安裝 Script 會隨同 JRE for Java V1.4.2 一併安裝。

這個 Script 名為 /opt/IBMJava2-142/jre/bin/webstart_install_sdk.sh。 若要使用 Web Start，請執行此 Script。請將現行工作目錄設成您想安裝 Web Start 的位置。安裝程序會在現行工作目錄中建立一個名為 javaws 的子目錄。

安裝程序也會更新 Mozilla 和其他瀏覽器所使用的 MIME 類型。

您有三種方式可以呼叫 Web Start：

1. 在網頁上選取參照到 .jnlp 檔案的鏈結。
2. 從前述步驟中建立的 javaws 目錄啟動 javaws ，以啟動可從中選取應用程式的 Web Start 對話框。
3. 在 Shell Script 中，輸入 `javaws <URL>`，其中 `<URL>` 是 .jnlp 檔的位置。

所有動作都會使 Web Start 啟動選取的應用程式。如果這是您第一次要使用該應用程式，則會下載它。 Web Start 會在後續的呼叫中檢查原始網站是否已提供任何的更新，並在啟動應用程式之前下載這些更新內容。

如果 jnlp 中有錯誤發生（例如，標示名稱無效），Web Start 會異常中止，但不會顯示錯誤訊息。

# 使用浮動堆疊

在非浮動堆疊的 Linux 系統上，不管 -Xss 的設定為何， 系統一律針對每一個執行緒提供 256 KB 的最小原始堆疊大小。 在浮動堆疊 Linux 系統上，則是採用 -Xss 值。 因此，如果從非浮動堆疊 Linux 系統移轉， 您必須確定 -Xss 值夠大，而不是仰賴 256 這個最小值。

〈限 Linux IA 32 位元〉 特定的 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 的輸入法組織架構規格。

# 在使用者系統中安裝應用程式

開發好產品且準備要傳送之後，您必須將產品安裝到使用者系統中、配置使用者系統來支援您的軟體，以及配置 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 建立的對話框可能會延遲幾秒之後才會顯示在視窗。
- 在 Linux 中使用不同的視窗管理程式時，使用 ALT 鍵的按鍵事件結果會有所不同。 它們和其他作業系統的結果也會不同。 在 Enlightenment 視窗管理程式中，Alt+A 和 Shift+Alt+A 會產生不同的修飾元，Ctrl+Alt+A 完全不會產生按鍵事件。 不過，使用 WindowMaker 視窗管理程式時，Ctrl+Alt+A 會產生一個按鍵事件。
- 在 Linux X Window System 中，按鍵對照設為：64 0xffe9 (Alt_L) 0xffe7 (Meta_L) 以及 113 0xffea (Alt_R) 0xffe8 (Meta_R)。 您可以在 Shell 提示下鍵入下列指令來檢查：

      xmodmap -pk

  這就是為何 SDK 將 Meta + Alt 視為同時按下的理由。 您可以在 Shell 提示中輸入下列指令來移除 Meta_x 映射，作為解決方案：

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

  註:
  這個解決方案可能影響在相同顯示畫面執行的其他 X-Window 應用程式（如果這些應用程式使用已移除的 Meta 鍵的話）。
- 如果在很慢的機器上建立長度不尋常的 DSA 鍵值對，可能會花上很長的時間。這類延遲不應解釋成當機， 因為如果時間充裕的話，該程序會完成。DSA 鍵的產生演算法已經過最佳化，因此可以比其他產品更快產生標準的鍵長度（例如：512、1024）。
- 原生程式無法建立 1.1 JVM。要呼叫 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）， 而不是指 JNI 介面所包含的 JVM。 介面 API 並不影響 JVM 實作的語言規格、類別庫 API 或 JVM 行為的其他範圍。介面 API 僅指定原生程式碼呼叫必要行為的方式。

- 僅針對繁體中文使用者，使用零壹注音、倚天注音和嘸蝦米 IME 輸入繁體中文字元時，按 Enter、空白鍵、倒退鍵和 ESC 這些功能鍵時會出現非預期的結果。Enter 鍵會插入換行，ESC 鍵是用來取消預先編輯字串或候選視窗，空白鍵會插入空格。在按確定鍵之後候選視窗應該會消失，在使用零壹注音、倚天注音和嘸蝦米 IME 輸入繁體中文字元時，如果按 Backspace 鍵的話，應該不會出現該視窗。
- 如果您執行太多並行執行緒，可能會收到警告訊息：`java.lang.OutOfMemoryError`。 這表示您機器的系統資源不足，並且因為下列原因而產生訊息：
  1. 無法建立新執行緒，原因是：
     - 所建立的處理程序數目超出使用者數限制。
     - 系統資源不足，無法建立新執行緒。在此情況下，可能也會出現其他 Java 異常狀況，視您目前執行的應用程式而定。
  2. 核心記憶體不足或為片段。您可在 /var/log/messages 中看到具有被刪除之程序 ID 的對應的「記憶體不足」核心訊息。
  請嘗試調整系統以增加對應的系統資源。
- 在安裝期間，如果您已安裝由 Red Hat 分送之本產品的舊版本，Red Hat Package Manager (RPM) 會報告 IBM 套裝軟體比 Red Hat 分送之產品的任何版本都來得舊。會發生這種狀況的原因是，Red Hat 將「序號」加入 RPM 套件中，這會改寫套件中產品的版本化架構，而依預設，RPM 會拒絕比已安裝版本還要舊的套件。 rpm 指令的 --oldpackage 選項可讓您安裝此一新的 IBM 套裝軟體。
- 在 SDK 1.4.2 版中，在 SLES 8 的對稱式多重處理器機器 (SMP) 上執行的 應用程式，若配合變更後的 Java 監視器之 IBM JVM 實作，其執行效果更佳。由於大部份應用程式都對效能有益或至少不影響 效能，所以新演算法現在是預設操作方式。另一方面，如果新預設值造成 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 文字元件中顯示任何中文字元。 |
  |

## Linux IA 32 位元限制

- 在 SDK 的這個版次中，Java 外掛程式不支援列印。
- SLES 8 for Korean 可能無法顯示韓文字元。 若要修正此問題，請安裝 "baekmuk-ttf" rpm 套件並執行 `SUSEconfig`：

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

- 若為 Arabic 文字使用者，在搭配 Matrox 影像卡使用 Linux 且啟用加速功能的情況下，如果使用 drawString 來顯示大字型，可能會發生字元變形。 此問題原因出在影像卡的驅動程式。建議的解決方案是停用裝置加速功能。

## Linux PPC 32 位元與 64 位元限制

- 如果您的 Java 程式碼使用 JNI 呼叫，且任何特定呼叫都有超出八個 float 或 double 參數， 則您必須用 gcc-2.95.3 Free Software Foundation (FSF) 層次的 GNU C 編譯器 (GCC) 來編譯您的 C 程式碼。
- 如果您在執行 XFree86 第 3.x 版，您可能會收到 SIGSEGV 錯誤。 如果要避免這個問題，建議您使用 XFree86 第 4.x 版。
- 如果日期是設成 1970 之前的日期，那麼在嘗試啟動 Java 時會發生異常錯誤。 如果要解決這個問題，請以手動方式，將您的機器設為現行日期：

## Linux PPC 32 位元限制

- PowerPC SLES 8.0 安裝光碟未提供適當的 TrueType 中文字型，所以 Java 無法正確顯示中文。 請安裝 United Linux 1.0 的 ttf-hanyi-20021016-0.noarch.rpm 套件，以改善中文字型的顯示。

## Linux zSeries 64 位元限制

下列限制只適用於中國、台灣和韓國的 Linux zSeries 64 位元使用者：

- 中國和台灣的輸入方法伺服器 (xcin) 尚未通過 1.4.2 版的測試。
- 僅限簡體中文使用者，部分中文字元可能會無法顯示。為避免發生此問題，請將下列 TrueType 字型下載到 您 zSeries 64 位元系統的 SLES8 上：
  - ttf-hanyi-20021016-0
  您可以從 SUSE 網站取得此字型，網址是：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 網站取得這些字型，網址是：http://www.suse.com/index_us.html。

## Linux zSeries 32 位元與 64 位元限制

- 如果您在沒有音效卡的機器上使用音效，當 Java 嘗試播放聲音時，可能會出現記憶體不足的錯誤訊息。此訊息顯示在主控台，但它不影響 Java 應用程式。
- 雖然目前發行的 Linux Kernel 提供了「網際網路通信協定」第 6 版 (IP6) 的支援， 當您使用它時，還是有可能發生問題。此一版次包含 Java 對 IP6 的支援， 但還是建議您利用 Java 指令的 -Djava.net.preferIPv4Stack=true 選項關閉此支援。 如果您安裝了完整支援 IP6 的 kernel，您就不需要這個選項。

# 對於本「使用手冊」是否有任何意見？

如果您對於本「使用手冊」的效用或其他方面有任何的批評指教，歡迎您使用下列其中一種管道將您的意見提供給我們參考。 請注意，這些管道的設立並不是為了要回答技術上的疑問，而只是為了要取得有關文件的意見。請使用下列方法來傳送您的意見：

- 使用電子郵件：idrcf@hursley.ibm.com。
- 使用傳真：
  - 從英國：01962 842327
  - 從其他地區：<國碼>44 1962 842327
- 使用郵寄方式：
  IBM United Kingdom Ltd
  User Technologies,
  Mail Point 095
  Hursley Park
  Winchester
  Hampshire
  SO21 2JN United Kingdom

細則。 選擇傳送訊息給 IBM 即代表您同意訊息中包含的所有資訊，包括回應資料，如問題、意見、建議，或類似資料，均得視為非機密資訊，而且，關於此類資訊，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

下列段落若與該國之法律條款抵觸，即視為不適用：

IBM 僅以現狀提供本書，而不提供任何明示或默示之保證（包括但 不限於可商用性或符合特定效用的保證）。有些地區在某些固定的交易上並不接受明示或默示保證的放棄聲明，因此此項 聲明不見得適用於您。

本資訊中可能會有技術上或排版印刷上的訛誤。因此，IBM 會定期修訂； 並將修訂後的內容納入新版中。同時，IBM 得隨時改進及（或）變動本資訊中所 提及的產品及（或）程式。

本資訊中任何對非 IBM 網站的敘述僅供參考，IBM 對該網站並不提供保證。該網站上的資料，並非本 IBM 產品所用資料的一部分，如因使用該網站 而造成損害，其責任由 貴客戶自行負責。

IBM 得以各種適當的方式使用或散佈由 貴客戶提供的任何資訊，而無需對您負責。

本程式之獲授權者若希望取得相關資料， 以便使用下列資訊者可洽詢 IBM。其下列資訊指的是： (1) 獨立建立的程式與其他程式（包括此程式）之間更換資訊的方式； (2) 相互使用已交換之資訊方法。 若有任何問題請聯絡：

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

上述資料得遵循適當條款而取得，在某些情況下必須付費方得使用。

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/ 所開發之軟體。