附註:在使用本資訊及其支援的產品之前,請務必閱讀注意事項下的一般資訊。
本使用手冊修訂版適用於 IBM 31 位元 Runtime Environment for Linux on zSeries,Java 2 Technology Edition 1.4.1 版, 以及所有後續版次與修正,直到新的修訂版中另有指示為止。
(c) Copyright Sun Microsystems, Inc. 1997, 2002, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.
(c) Copyright International Business Machines Corporation, 1999, 2003. All rights reserved.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
IBM(R) 31 位元 Runtime Environment for Linux on zSeries(R),Java(TM) 2 Technology Edition 1.4.1 版 包含 Java Virtual Machine (JVM)、 Sun Microsystems Java 核心類別及支援檔案。Runtime Environment 不包含 SDK 套件中的所有類別。
本「使用手冊」提供 Runtime Environment 的一般資訊,以及 IBM 與 Sun 在 Runtime Environment 實作差異上的特定資訊。 請搭配 Sun 網站上更豐富的文件來閱讀本「使用手冊」,網址是: http://java.sun.com。
關於已測試 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.1 版使用手冊的 HTML 版本或彩色印行本時,其技術變更(非次要或明顯之變更,如將 "1.4.0" 更新為 "1.4.1")均會以紅字標明,且在變更處左側也會加上垂直線。
配置 Runtime Environment for Linux
解除安裝 Runtime Environment for Linux
Runtime Environment for Linux 包含建立 Java Runtime 環境和執行 Java 程式所需的類別子集。 也包含 Java Virtual Machine、Java 類別及支援檔案。 Runtime Environment for Linux 只包含 SDK 中的一部份類別。
|能夠在 SDK for Linux 的 |1.1.8、1.2.2 或 1.3.1 版中執行的任何 Applet 或應用程式,應該都可以在此版本中正確執行。 |依附於 Sun Java 1.4.1 API 的 Applet 只能在支援 |Java 1.4.1 API 的瀏覽器上運作。
以 1.4.1 編譯的類別不保證可以在 1.4.0 以前的 Runtime Environment 版次中運作。
Runtime Environment for Linux 包含不可除錯的 .so 檔案和在 Runtime 支援程式所需要的類別檔。 Runtime Environment for Linux 不包含任何開發工具,例如 appletviewer 或 javac,或專屬於某個開發系統的類別。
LICENSE_xx.html 檔案包含 Runtime Environment for Linux 軟體的授權合約。(xx 是語言的縮寫。)
若要檢視或列印授權合約,請在 Web 瀏覽器中開啟檔案。
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)
IBM 在這個版次中不支援「原生方法介面」。請勿在您的應用程式中使用此介面。
Runtime Environment 內含「Java 原生介面 (JNI)」。 如需使用 JNI 的相關資訊,請參閱 Sun 網站:http://java.sun.com。
安裝 Runtime Environment for Linux 之後,請編輯您的 Shell 登入 Script,將此目錄新增至您的 PATH 陳述式中:
/opt/IBMJava2-s390-141/jre/bin
若您將 Runtime Environment for Linux 安裝在 /opt/IBMJava2-s390-141/ 以外的目錄,請將 /opt/IBMJava2-s390-141/ 取代成您安裝 Runtime Environment for Linux 的目錄。
您移除 Runtime Environment for Linux 的程序視您安裝的是可安裝
Red Hat Package Manager (RPM) 套件或壓縮的 Tape Archive
(TAR) 套件而定。相關指示,請參閱解除安裝可安裝 Red
Hat Package Manager (RPM) 套件或解除安裝壓縮的
Tape Archive (TAR) 套件。
若您要在已安裝可安裝的 RPM 套件之後解除安裝 Runtime Environment for Linux:
rpm -e IBMJava2-JRE-1.4.1
另外,您也可以使用圖形式工具,
例如 kpackage 或 yast2
若您要在已安裝壓縮的 TAR 套件之後解除安裝 Runtime Environment for Linux:
java 工具可以啟動 Java 應用程式。
JVM 會在下列三個地方搜尋啟動類別及其他用到的類別: bootstrap 類別路徑、已安裝的延伸項目及使用者類別路徑。 類別名稱或 JAR 檔案名稱後面的引數會傳遞給 main 函數。
javaw 指令同等於 java,不同之處是 javaw 沒有相關聯的主控台視窗。 若您不想要顯示指令提示視窗,請使用 javaw。 javaw 啟動程式會顯示一個含有錯誤資訊的對話框。
java 和 javaw 指令具有下列語法:
java [ options ] class [ arguments ... ] java [ options ] -jar file.jar [ arguments ... ] javaw [ options ] class [ arguments ... ] javaw [ options ] -jar file.jar [ arguments ... ]
方括弧([])內的項目為選用項目。
若指定 -jar 選項,則指名的 JAR 檔案要包含應用程式的類別和資源檔, 且以 Main-Class 處理標題來表示啟動類別。
此啟動程式有一組標準選項為目前的 Runtime 環境所支援, 在未來的版次中也將支援。此外,還有一組非標準的選項。
-D<property_name>=<值>
-assert
-cp 或 -classpath <以 間隔的目錄和 zip 或 jar 檔案:>
-help 或 -?
-showversion
-verbose[:class | gc | jni]
-version
-X
下面列示的 -X 選項是可用選項的子集。 它們不是標準選項,可能隨時變動,且不另行通知。
-Xargencoding
-Xbootclasspath:<以 ; 間隔的目錄和 zip 或 jar 檔案>
-Xbootclasspath/a:<以 ; 間隔的目錄和 zip 或 jar 檔案>
|-Xbootclasspath/p:<以 ; 間隔的目錄和 zip 或 jar 檔案>
|
-Xcheck:jni
-Xcheck:nabounds
-Xdebug
|-Xdisableexplicitgc
|
-Xdisablejavadump
|-Xgcpolicy:{optthruput
|| optavgpause}
|
-Xms<大小>
-Xmx<大小>
-Xnoclassgc
-Xoss<大小>
-Xquickstart
-Xrs
-Xrunlibrary_name[:options]
-Xss<大小>
|-Xverbosegclog:<檔案路徑><檔案名稱>[X, Y]
|
|
-Xverify
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 c:\myapp\thisapp.class 相當於指定
java -classpath c:\myapp thisapp。 |當發生 JVM 所要處理的信號時,就會呼叫信號處理程式。
|此信號處理程式會針對 Java 或非 Java 執行緒來進行呼叫。
|如果信號是要發送到 Java 執行緒,則 JVM 會接手信號處理。
|如果信號是要發送到非 Java 執行緒,且安裝 JVM 的應用程式先前已安裝自己的信號處理程式,
|則控制權會移轉給此處理程式。否則,系統會忽略信號
|(不論這是否為信號的預設動作)。
|對於異常狀況和錯誤信號,JVM 的動作如下:
|對於岔斷信號,JVM 也會進入控制的關機程序,
|但這一次視為正常終止,此時它會: |此關機作業和呼叫 Java
|方法 System.exit() 所起始的關機作業完全相同。
|JVM 所使用的其他信號係供內部控制使用,不會導致它終止。
|唯一相關的控制信號是 SIGQUIT,
|其會產生 Java 記憶體傾印。
|下列表 1顯示 JVM 使用的信號。
|表格中的信號依類型或用途分類如下: |請使用 -Xrs (減少使用信號) 選項來防止
|JVM 使用太多信號。如需詳細資訊,請參閱 Sun 的 Java 應用程式啟動程式網頁,
|網址是: http://java.sun.com/j2se/1.4.1/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 的服務。
|IBM 31 位元 Runtime Environment for Linux on zSeries,Java 2 Technology Edition 1.4.1 版 JVM 包含一個新的信號鏈結機能。信號鏈結可讓
|JVM 信號鏈結可讓
|JVM 與已安裝自己的信號處理程式的原生程式碼的交互作業變得更有效率。
|信號鏈結機能可讓應用程式在 libc/libthread/libpthread 之前先鏈結和載入共用的程式庫
|libjsig.so。jsig.dll 程式庫可以確保一定截取到
|signal()、sigset() 及 sigaction() 等呼叫,不讓它們的處理程式取代 JVM 的信號處理程式。
|這些呼叫會改成儲存新的信號處理程式,或在 JVM 已安裝的處理程式後「鏈結」起來。
|稍後,一旦發出這些信號且發現不是針對 JVM 所發出的,則呼叫預先安裝的處理程式。
|若要使用 libjsig.so: |或
|若您安裝的信號處理程式用到 sigaction(),則 JVM 使用該信號時不會注意到某些 sa_flags。
|包括: |libjsig.so 程式庫也會隱藏 JVM 信號處理程式,讓應用程式察覺不到。
|因此,在 JVM 啟動之後執行的 signal()、sigset() 及 sigaction() 等呼叫不再傳回 JVM 信號處理程式的參照,
|而改以傳回 JVM 啟動之前已安裝的任何處理程式。|JVM 如何處理信號
|
|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 使用此信號來執行 Java 記憶體傾印。
是
SIGTRAP
控制
由 dbx 或 ptrace 作為內部使用。由部份 JVM 作為內部控制用途。
是
SIGPIPE
控制
寫入管道,尚未讀取。JVM 忽略此信號。
否
|鏈結原生的程式碼驅動程式與信號鏈結程式庫
|gcc -L <directory of libjvm.so> -ljsig -ljvm java_application.c
|export LD_PRELOAD=<libjsig.so dir>/libjsig.so; java_application (ksh)
|
|setenv LD_PRELOAD <libjsig.so dir>/libjsig.so; java_application (csh)
|
您可以利用 啟動 Java 應用程式 中說明的 -D 選項,來設定系統內容 ibm.jvm.bootclasspath。 這個內容的值會用來作為額外的搜尋路徑,該路徑會插入 -Xbootclasspath/p: 所定義的任何值與 bootstrap 類別路徑之間。 bootstrap 類別路徑是預設值,或是使用 -Xbootclasspath: 選項所定義的值。
-Xgcpolicy JVM Runtime 選項可指定記憶體收集原則。
-Xgcpolicy 使用兩個值:optthruput (預設值) 和 optavgpause。 此選項會控制記憶體回收器行為,在應用程式和整體系統的處理量與因記憶體收集所造成的暫停時間之間找出平衡點。
選項及其值的格式為:
-Xgcpolicy:optthruput
和
-Xgcpolicy:optavgpause
當資料堆的可用空間無法立即滿足應用程式建立物件的嘗試時,記憶體回收器就負責識別未被參照的物件 (記憶體)、刪除這些物件, 以及讓資料堆回到可快速滿足立即與後續配置要求的一種狀態。 這種記憶體收集循環偶而會造成應用程式碼執行時意外地暫停。 因為應用程式的大小和複雜性會增加,且資料堆也相對地變大, 造成此記憶體收集的暫停時間愈來愈久也更明顯。 預設的記憶體收集值 optthruput 可傳遞很高的處理量給應用程式, 但犧牲的就是這些偶而的暫停現象,從暫停幾毫秒到幾秒鐘都有可能, 視資料堆和記憶體數量而定。
optavgpause 選項除了限制資料堆大小遞增對記憶體收集暫停時間長度的影響, 還可以大量地減少這些記憶體收集暫停的時間。 此選項對於有大量資料堆的配置尤其重要。 暫停時間之所以可減少是因為系統會在正常程式執行的同時亦執行部份記憶體收集活動。 但隨著暫停時間減少,您可能會發現應用程式處理量也會跟著減少,程度視應用程式而有所不同。
若 Java 資料堆接近飽合,且只收回非常少的記憶體, 則可能無法立即滿足新物件的呼叫要求,因為沒有立即可用的空間。 若資料堆在接近飽合容量的情況下操作, 不論是否使用上述選項,應用程式效能可能還是會降低; 而且,若持續要求更多資料堆空間,應用程式會收到 OutofMemory 異常狀況,萬一未能掌握並處理異常狀況,則將導致 JVM 終止。 在這些狀況下,建議您使用 -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/
|如需在 Java 應用程式中處理記憶體漏失的相關資訊,請參閱:http://www.ibm.com/developerworks/library/j-leaks/index.html。
若要取得 IBM 建置和版本號碼,請在 Shell 提示下輸入:
java -version
在沒有浮點堆疊的 Linux 系統上,不管 -Xss 的設定為何,系統一律針對每一個執行緒提供 256 KB 的最小原始堆疊大小。 在浮點堆疊 Linux 系統上,-Xss 值會生效。 因此,若您是從沒有浮點堆疊的 Linux 系統移轉, 則必須確定任何 -Xss 值都夠大, 並且不要依賴 256 KB 這個最小值。
在雙位元組字集 (DBCS) 系統上,若您要切換輸入法, 您應該使用 java.util.prefs.Preferences 類別,而非 IBMJAVA_INPUTMETHOD_SWITCHKEY 和 IBMJAVA_INPUTMETHOD_SWITCHKEY_MODIFIERS 環境變數。詳細資訊,請參閱 Sun 的輸入法組織架構規格。
Sun 網站 http://java.sun.com 上有一個 "Hello World" 範例供您下載。此範例示範如何建立可在 Runtime Environment 上執行的簡單 Java 應用程式。
在開發完成您的產品並且準備出貨時,您需要在使用者的系統上安裝您的產品、 配置使用者的系統來支援您的軟體,以及配置 Runtime 環境。
若您使用 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 副本。
關於必須重新分送之檔案的特定資訊,請參閱本產品隨附的授權合約。
下列各節說明 SDK for Linux 的已知限制。
|
|
|
|
可用的最大執行緒數目視下列何者最小而定:
不過,在達到最大執行緒數之前,虛擬儲存體可能會不足。
public interface interface java.lang.Runnable extends java.lang.Object...
xmodmap -pk這就是為何 SDK 將 Meta + Alt 視為同時按下的理由。解決之道是在 Shell 提示上鍵入下列指令來移除 Meta_x 對映:
xmodmap -e "keysym Alt_L = Alt_L" -e "keysym Alt_R = Alt_R"
Sun 臭蟲號碼 | 簡短的限制說明 |
---|---|
4696508 | 選擇器未如指定地同步化 |
|
|每一個情況中建立的 JVM 是由程式庫來指定 |(亦即,1.2.2、1.3.x、1.4.x),並非由 JNI 介面所隱含指定。 |介面 API 不影響 JVM 實作的語言規格、類別庫 API 或其他任何區域的 JVM 行為。 |介面 API 僅指定原生的程式碼如何呼叫必要的行為。
下列限制僅發生在繁體中文的使用者。
本資訊乃是針對在美國提供的產品及服務而撰寫。IBM 可能不會在其他國家或地區提供本文件討論的產品、服務或功能。要知道在您所在之區是否可用到這些產品與服務時, 請向當地的 IBM 服務代表查詢。本書在提及 IBM 的產品、程式或服務時,不表示或暗示只能使用 IBM 的產品、程式或服務。只要未侵犯 IBM 的智慧財產權,任何功能相當的產品、程式或服務都可以取 代 IBM 的產品、程式或服務。不過,其他非 IBM 產品、程式或服務在運作上的評價 與驗證,其責任屬於使用者。
在這文件中包含著 IBM 所擁有之專利或暫准專利。使用者不享有本文件內容之專利權。您可以用書面方式來查詢授權,來函請寄到:
若要查詢有關二位元組 (DBCS) 資訊的特許權限事宜, 請聯絡您國家或地區的 IBM 智慧財產部門,或者用書面方式寄到:
下列段落若與該國之法律條款抵觸,即視為不適用:
IBM 僅以現狀提供本書,而不提供任何明示或默示之保證(包括但 不限於可商用性或符合特定效用的保證)。有些地區在某些固定的交易上並不接受明示或默示保證的放棄聲明,因此此項 聲明不見得適用於您。
本資訊中可能會有技術上或排版印刷上的訛誤。因此,IBM 會定期修訂; 並將修訂後的內容納入新版中。同時,IBM 得隨時改進及(或)變動本資訊中所 提及的產品及(或)程式。
本資訊中任何對非 IBM 網站的敘述僅供參考,IBM 對該網站並不提供保證。該網站上的資料,並非本 IBM 產品所用資料的一部分,如因使用該網站 而造成損害,其責任由 貴客戶自行負責。
IBM 得以各種適當的方式使用或散佈由 貴客戶提供的任何資訊,而無需對您負責。
本程式之獲授權者若希望取得相關資料, 以便使用下列資訊者可洽詢 IBM。其下列資訊指的是: (1) 獨立建立的程式與其他程式(包括此程式)之間更換資訊的方式; (2) 相互使用已交換之資訊方法。 若有任何問題請聯絡:
上述資料得遵循適當條款而取得,在某些情況下必須付費方得使用。
IBM 基於雙方之「IBM 客戶合約」、「國際程式授權合約」或任何同等合約之條款,提供本文件中所述之授權程式與其所有適用的授權資料。
任何此處涵蓋的執行效能資料都是在一個受控制的環境下決定出來的。因此,若在其他作業環境下,所得的結果可能會大大不同。有些測定已在開發階段系統上做過, 不過這並不保證在一般系統上會出現相同結果。再者,有些測定可能已透過推測方式評估過。但實際結果可能並非如此。本書的使用者應依自己的特定環境,查證適用的資料。
本書所提及之非 IBM 產品資訊,係一由產品的供應商,或其出版的聲明或其他公開管道取得。IBM 並未測試過這些產品,也無法確認這些非 IBM 產品的執行效能、相容性或任何對產品的其他主張是否完全無誤。如果您對非 IBM 產品的性能有任何的疑問,請逕向該產品的供應商查詢。
IBM 和 zSeries 是 International Business Machines Corporation 在美國和(或)其他國家或地區的商標或註冊商標。
Java 以及所有以 Java 為基礎的商標及標誌圖都是 Sun Microsystems, Inc. 在美國和(或)其他國家或地區的商標或註冊商標。
其他公司、產品或服務名稱,可能是第三者的商標或服務標誌。
本產品包含由 Apache Software Foundation http://www.apache.org/ 所開發之軟體。