Java不但提供了一個特徵豐富的語言和運行環境,而且還為程式員和終端使用者提供了開發和使用Java的工具。
Java提供了程式員可用來更好地製作並更快運行其程式的擴充類庫。Java類庫是一組預先開發的程式碼,它可以與單獨的應用程式相連結。Java類庫給程式員提供了一個徹底經過測試的健壯性很好的類集合。通過使用這些類庫,程式員就不需要重新編寫這些代碼,從而節約了時間,提高了效率。這些類庫代表了物件導向計算的核心部分。
下面將介紹一些主要Java工具的使用,在Java環境中的Java工具列表如下所示:
* appletviewer 小應用程式瀏覽器
* java 解譯器
* javac 編譯器
* javah 標頭檔產生器
* javadoc API文檔產生器
* javap 類檔案反組譯碼器
* jdb Java 語言調試器
這些檔案包括在/java/bin/目錄中,並可以在任何目錄中運行,前提是你在設定運行程式的系統中設定了路徑。
2.1 Appletviewer小應用程式瀏覽器
appletviewer 提供了一個Java運行環境,在其中可測試小應用程式Applet 。 appletviewer 讀取包含小應用程式的HTML檔案並在一個視窗中運行它們。
在小應用程式的菜單選擇中有如下幾個選項:
* Restart: 重新運行小應用程式
* Reload:重新調取小應用程式。如果.class檔案在讀取後被改變, 此命令將是很有用的。
* Clone:按照HTML檔案的命令列變數建立一個新的appletviewer視窗。
* Tag:顯示用在HTML檔案中的<applet>標籤,以啟動小應用程式(見圖2-1)。
(圖2-1 Appletviewer的tag對話方塊)
*Info:提供關於小應用程式的有用資訊(見圖2-2)。
(圖2-2 Appletviewer的info對話方塊)
*Properties: 此命令允許為appletviewer設定不同的網路和安全配置(見圖2 -3)。交四個對話方塊允許appletviewer指定HTTP proxy代理服務者及firewall proxy 代理服務者運行。這需要知道上述兩個proxy代理的地址和連接埠號碼,你可以從你的網站管理者那裡得到這些資訊。網路訪問安全性控制包括不同層級的安全性, 包括禁止網路訪問。只允許訪問小應用程式的主機、無限制訪問。類訪問選擇合你能夠指定在機器上是否對類訪問進行限制。
(圖2-3 Appletviewer的Properties對話方塊)
appletviewer 是一個基本的工具,和HTML相仿,它處理並顯示了Java 小應用程式。Java小應用程式只是全部WWW頁面中的一部分,觀察小應用程式在其餘HTML檔案中的適應情況是十分重要的 。 因此, 必需有一個全功能瀏覽器如 Netscape 或 HotJava。
appletviewer唯一的可選項就是debug,它將在 Java 語言調試器 jdb 中啟動 appletviewer。
2.2 Java解譯器
Java解譯器可用來直接解釋執行Java位元組代碼,具體命令列格式如下:
C:/>java options className arguments
className必須包括所有軟體包資訊。不僅有類名本身,還有Java 解譯器所期望的類名(不是Java位元組代碼的檔案名稱),所有在解譯器環境下啟動並執行類都必須包括解譯器第一次調用時所需的main成員函數,用以傳遞命令所帶的變數。
public static void main(string args[])
{
......
}
表2-1中包括了Java解譯器的所有選項。
選項 功能
──────────────────────────────────
-cs -checksource 此選項讓解譯器重編譯Java源檔案已更新的類--重
編譯已改變過了的類。
-classpath path 此選項重寫CLASSPATH環境變數,告訴Java在哪裡能
找到類庫。如果其中用冒號分開,則可能包含多個
目錄。
-mx x 此選項設定記憶體配置池的最大值。所指定的池必須
大於1,000位元組。另外“K”,“M”可附加在數字
上指定是KB還是MB。預設值是16MB。
-ms x 此選項設定記憶體配置池的最小值。所指寂的池必須
大於1,000位元組。另外,“K”,“M”可加在數字
上指定的是KB還是MB。預設值是1MB。
-noasyncgc 此選項關閉非同步無用單元收集功能,只有在程式中
調用它或記憶體溢出的時候,無用單元收集才會被激
活。
-ss x 此選項將C線程棧的最大值設定為x , x 必須大於
1KB,其設定方式同 -ms。
-oss x 此選項設定Java堆棧最大值為x。
-v,-verbose 此選項告知Java每當類被調用之時, 向標準輸出設
備輸出資訊。
-verify 此選項告知Java在所有代碼上使用校正。
-verifyremote 此選項告知Java 僅僅對類載入器所載入的類進行校
驗。
-noverify 此選項告知Java不進行校正。
-verbosegc 此選項告知Java讓無用單元收集器在它釋放記憶體時
顯示一條資訊。
-t 此選項在Java-g解譯器中是可用的,並把執行的情
況逐條列印出來。
-debug 此選項允許Java調試器與本次Java 解譯器會話相聯
接。漢它運行時,Java會顯示一個密碼,用於啟動
這次偵錯工作階段。
-D propName=newVal 此選項允許使用者在運行時改變屬性值。
表2-1 Java解譯器的所有選項
2.3 Javac編譯器
Javac編譯器讀取Java原始碼,並將其編譯成位元組代碼,調用Javac的命令列如下:
C:/>javac options filename.java
值得注意的是,和Java解譯器不同,Javac 編譯器期望它正在編譯的檔案具有副檔名.Java。其命令列如表2-2:
選項 功能
──────────────────────────────────
-classpath path 此選項用於設定路徑,在該路徑上Javac尋找需被
調用的類。該路徑是一個用分號分開的目錄列表。
-d directory 此選項指定一個根目錄。該目錄用來建立反映軟體
包繼承關係的目錄數。
-g 此選項在代碼產生器中開啟調試表,以後可憑此調
試產生位元組代碼。
-nowarn 此選項禁止編譯器產生警告。
-O 此選項告訴javac最佳化由內聯的static、final以及
privite成員函數所產生的代碼。
-verbose 此選項告知Java顯示出有關被編譯的源檔案和任何
被調用類庫的資訊。
表2-2 Javac編譯器命令列選項
2.4 javah標頭檔產生器
javah程式建立C標頭檔和存根檔案,這些是把本地C成員函數包入java 所需要的。被建立的標頭檔給出了有關java類的資訊,這些資訊是C成員函數與java類交換資料所必需的。存根檔案將用來建立將定義java對象的結構與java對象本身資料相聯絡的C檔案。調用javah的命令列如下:
C:/>javah options classname additionalClasses
javah程式有些象java解譯器,它只需要類名而不需要寫.class副檔名。javah 程式可接受多個類名以產生檔案頭和存根檔案,表2-3列出了javah程式命令列選項。
選項 功能
──────────────────────────────────
-o outputfile 此選項告訴javah將產生的所有檔案頭或存根檔案
都放到一個單獨的檔案"outputfile"中。
-d directory 此選項告知javah把產生的檔案頭或存根檔案放入
給定目錄。
-td directory 此選項告知javah 程式把臨時檔案放入目錄
"dirrctory"而不是tmp目錄中。
-stubs 此選項告知javah將產生存根檔案而非標頭檔。
-verbose 此選項告知javah將產生檔案的狀態輸出到標準輸出
裝置。
-classpath path 此選項告知javah用"path"目錄尋找類檔案,多個
目錄之間應用分號分開。
表2-3 javah命令列選項
2.5 javap反組譯碼器
javap命令反組譯碼一個java位元組代碼檔案, 返回有關可變部分和成員函數的資訊,其命令列如下:
C:/>javap options classname additionalClasses
javap的標準輸出是公有變數和類的成員函數。下面是一個輸出執行個體, 它顯示的是用javap處理一個簡單的java小應用的位元組代碼所得的結果,該java 小應用將在第五章中再次提到。
圖2-4 java反組譯碼器javap輸出執行個體
javap反組譯碼器的命令列選項如表2-4:
選項 功能
──────────────────────────────────
-h 此選項將建立能夠放入C標頭檔中的資訊
-p 此選項將使javap輸出私人和公有的成員函數和變數
-c 此選項將使javap為各成員函數輸出實際已編譯過的
位元組代碼
-classpath path 此選項將使得javap在路徑path中尋找Java類
-v 輸出所有的資訊
-verify 運行校正器以驗證並顯示出調試資訊
-version 輸出javap的版本資訊
表2-4 javap反編譯器命令列選項
2.6 Java調試器jdb
Java調度器為Java程式提供了一個命令列調試環境。它既可在本地,也可在與遠端解譯器的一次對話中執行。
jdb於本地機器中可用如下的命令啟動:
C:/>jdb classname
當你使用-debug選項開始一個Java常式時, 必須提供給Jdb 一個密碼, 這樣 Jdb才能開始運轉起來。表2-5包含了所有jdb命令。
命令 功能
──────────────────────────────────
catch calssID 為特定異常出口而中斷
classes 列出當前已知的類
clear classID:line 清除一個斷點
cont 從斷點處繼續執行
down[n frames] 下移一個線程的堆棧
dump ID[ID...] 顯示所有對象資訊
exit(或quit) 退出調試器
help(或?) 列出所有命令
ignore classID 忽略特定的異常出口
list[line number] 顯示原始碼
load classbame 載入要調試的Java類
locals 在當前堆疊框架中顯示所有局部變數
memory 報告記憶體使用量情況
methods classID 列出一個類的成員函數集
print ID[ID...] 列出對象或域
resume [threadID...] 恢複線程(預設情況恢複所有線程)
run class [args] 開始執行已下載的Java類
step 執行當前行
stop in classID:method 在一成員函數中設一斷點
stop at classID:line 在一行設一斷點
suspend[threadID...] 停止一個線程(預設情況停止所有線程)
threads threadgroup 列出線程
thread threadID 設定當前線程
threadgroups 列出線程組
threadgroup name 設定當前線程組
up [n frames] 上移一個線程堆棧
use [path] 顯示或改變來源程式路徑
where [threadID] or all 使一線程的堆線置空
!! 重複上一次命令
表2-5 jdb調試器命令一覽
除了調試期間可用的命令,還有兩個可選的命令列變數。它們可用於遠端偵錯。具體用法如下所示:
-host hostname 該命令告訴Jdb到哪裡去建立遠程啟動並執行Java解譯器對話過程 -password password
本選項告訴Jdb 用哪個密碼去與遠程啟動並執行Java 對話進程相串連。 密碼 password是由運行帶有-debug選項的Java解譯器所提供的。
2.7 Javadoc API檔案產生器
Javadoc程式讀取一個Java類檔案並自動建立一組HTML檔案,這些HTML 檔案描述了Java類檔案的類、變數、成員函數,所有Java類庫的APIHTML 檔案都可以由此程式建立。Javadoc把軟體包名或源檔案清單當做一個變數。Javadoc依靠以@打頭的備忘標記來建立HTML檔案,下面就是標註的列表,它們被Javadoc用於在HTML 檔案中建立連結。
標記 功能
──────────────────────────────────
@see classname 此標註在類列表中增加一個到所提供類的
"See Also"條目。
@see classname # method- 此標註建立一個到特定的成員函數的"See
name Also"條目。
@version text 此標註在HTML檔案中加入一個版本資訊條目
@author text 此標註在HTML檔案中加入一個作者資訊條目
@param name description 此標註用成員函數備忘來描述一個成員函數
所帶變數
@return description 此標註用成員函數備忘來描述傳回值
@exception classname 此標註用成員函數備忘來串連成員函數產生
的異常出口
表2-6 Javadoc所用的標記
除此以外,Javadoc還可以使用兩個命令列參數:
-classpath path
此命令列指定尋找Java檔案的目錄
-d directory
此命令列指定用來放入最終HTML檔案十分有用。通過對它的使用,可讓你在原始碼中加入更多的注釋,這對提高程式的可讀性來說是非常有用的。