中科永聯高級技術培訓中心(www.itisedu.com)
JDK(Java Development Kit,Java開發包,Java開發工具)是一個寫Java的applet和套用程式的程式開發環境。它由一個處於作業系統層之上的運行環境還有開發者編譯,調試和運行用Java語言寫的applet和應用程式所需的工具組成。
JDK(Java Development Kit)是Sun Microsystems針對Java開發員的產品。自從Java推出以來,JDK已經成為使用最廣泛的Java SDK(Software development kit)。
JDK包含的基本組件包括:
·javac – 編譯器,將源程式轉成位元組碼
·jar – 打包工具,將相關的類檔案打包成一個檔案
·javadoc – 文檔生成器,從源碼注釋中提取文檔
·jdb – debugger,查錯工具
JDK中還包括完整的JRE(Java Runtime Environment,Java運行環境),也被稱為private runtime。包括了用於產品環境的各種庫類,以及給開發員使用的補充庫,如國際化的庫、IDL庫。
JDK中還包括各種例子程式,用以展示Java API中的各部分。
從初學者角度來看,採用JDK開發Java程式能夠很快理解程式中各部分代碼之間的關係,有利於理解Java面向對象的設計思想。JDK的另一個顯著特點是隨著Java (J2EE、J2SE以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規模企業級Java套用開發非常困難,不能進行複雜的Java軟體開發,也不利於團體協同開發。
JDK一般有三種版本:
SE(J2SE),standard edition,標準版,是我們通常用的一個版本
EE(J2EE),enterpsise edtion,企業版,使用這種JDK開發J2EE應用程式,
ME(J2ME),micro edtion,主要用於移動設備、嵌入式設備上的java應用程式
Java開發工具(JDK)是許多Java專家最初使用的開發環境。儘管許多編程人員已經使用第三方的開發工具,但JDK仍被當作Java開發的重要工具。
JDK由一個標準類庫和一組建立,測試及建立文檔的Java實用程式組成。其核心Java
API是一些預定義的類庫,開發人員需要用這些類來訪問Java語言的功能。Java API包括一些重要的語言結構以及基本圖形,網路和檔案I/O。一般來說,Java API的非I/O部分對於運行Java的所有平台是相同的,而I/O部分則僅在通用Java環境中實現。
作為JDK實用程式,工具庫中有七種主要程式。
Javac: Java:Java解釋器,直接從類檔案執行Java應用程式位元組代碼。
appletviewer:小程式瀏覽器,一種執行HTML檔案上的Java小程式的Java瀏覽器。
Javadoc:根據Java源碼及說明語句生成HTML文檔。
Jdb:Java調試器,可以逐行執行程式,設定斷點和檢查變數。
javah:產生可以調用Java過程的C過程,或建立能被Java程式調用的C過程的頭檔案。
Javap:Java反彙編器,顯示編譯類檔案中的可訪問功能和數據,同時顯示位元組代碼含義。
一、JDK檔案結構
本文檔給出 JDK 目錄及其所包含的檔案的概述。
開發檔案和目錄
本節對開發 Java 平台應用程式所要求的檔案和目錄進行說明。(不要求的目錄有:演示程式、Java 原始碼和 C 頭檔案。下一節附加檔案和目錄將對它們進行論述。) 下圖列出的是最重要的目錄:
jdk1.2
___________|____________________
| | |
bin lib jre
| | __________|___________
java.exe tools.jar | |
javac.exe dt.jar bin lib
javap.exe _____|____ ________|________
javah.exe | | | | |
javadoc.exe java.exe classic rt.jar ext
security
java.dll | i18n.jar |
awt.dll jvm.dll iiimp.jar
假定 JDK 軟體安裝在 c:\jdk1.2 目錄中,下面列出的是那些關鍵目錄及它們之所以重要的原因:
c:\jdk1.2
JDK 軟體安裝的根目錄。包含著作權、許可及 README 檔案。還包括:
src.jar -- 構成 Java 平台核心 API 的所有類的源檔案的歸檔。
c:\jdk1.2\bin
Java 開發工具包 (JDK) 中所包含的開發工具的執行檔。PATH 環境變數應該包含一個指示此目錄的項。有關工具的詳細信息,參見 JDK 工具。
c:\jdk1.2\lib
開發工具使用的檔案。這些檔案包括 tools.jar,它包含支持 JDK 的工具和實用程式的非核心類。還包括 dt.jar,它是 BeanInfo 檔案的 DesignTime 歸檔,BeanInfo 檔案用來告訴互動開發環境 (IDE) 如何顯示 Java 組件以及如何讓開發人員根據應用程式自定義它們。
c:\jdk1.2\jre
JDK 開發工具所使用的 Java 運行時環境的根目錄。運行時環境是 Java 1.2 平台的實現。除了文檔外,它與可部署的 JRE 完全相同。
c:\jdk1.2\jre\bin
Java 平台使用的工具和庫的執行檔及 DLL。執行檔與 /jdk1.2/bin 中的檔案相同。java 啟動器工具擔當應用程式啟動器的角色,它替代了與 1.1 版的 JDK 軟體一同發行的舊 jre 工具。不必將該目錄放在 PATH 環境變數中。
c:\jdk1.2\jre\bin\classic
包含經典虛擬機使用的 Windows DLL 檔案。經典虛擬機是 Java 虛擬機的語言解釋器版本。當新的虛擬機可用時,它們的 DLL 將被安裝在 jre/bin 的某個新子目錄中。
c:\jdk1.2\jre\lib
Java 運行時環境使用的代碼庫、屬性設定和資源檔案。包括:
rt.jar -- 自舉類(構成 Java 平台核心 API 的 RunTime 類)。
i18n.jar -- 字元轉換類及其它與國際化和本地化有關的類。
除(下面將要闡述的) ext 子目錄以外,還有幾個資源子目錄不在此處說明。
c:\jdk1.2\jre\lib\ext
Java 平台擴展的預設安裝目錄。例如,這是安裝時 JavaHelp jar 檔案的安裝目錄。包括:
iiimp.jar -- 實現 Internet-Intranet 輸入方法協定的類,供從使用國際字元集的設備上接收輸入的應用程式來使用。
c:\jdk1.2\jre\lib\security
包含用於安全管理的檔案。這些檔案包括安全策略 (java.policy) 和安全屬性 (java.security) 檔案。
附加檔案和目錄
本節說明演示程式、Java 原始碼和 C 頭檔案的目錄結構。下面是目錄結構:
jdk1.2
__________ _____|_____ _____________
| | | |
src.jar demo include include-old
___|___
| |
applets jfc
|
Java2D
以上所顯示的附加目錄為:
c:\jdk1.2\demo
含有原始碼的程式示例,用於顯示如何為 Java 平台編程。
c:\jdk1.2\demo\applets
可用在網頁上的 applet。
c:\jdk1.2\demo\jfc
使用新 JFC\Swing 組件的示例。
c:\jdk1.2\demo\jfc\Java2D
使用新 Java 2D 圖形的示例。
c:\jdk1.2\include
C 語言頭檔案,它支持使用 Java 本地接口 【 web】和 Java 虛擬機調試程式接口 【 web】 的本地代碼編程技術。
c:\jdk1.2\include-old
頭檔案,支持使用舊接口的本地代碼編程技術。提供這些頭檔案只是為了向後兼容。所有 Java 虛擬機都不推薦、不支持也不提供這些接口。
(原文地址:http://202.102.240.73/java/javaweb/linuxjava/cjdk1_2-doc-zh/jdk1.2/zh/docs/tooldocs/win32/jdkfiles.html)
二、JDK1.5新特性介紹
“JDK1.5”(開發代號猛虎)的一個重要主題就是通過新增一些特性來簡化開發,這些特性包括泛型,for-each 循環,自動裝包/拆包,枚舉,可變參數, 靜態導入 。使用這些特性有助於我們編寫更加清晰,精悍,安全的代碼。
下面我們簡單介紹一下這些新特性。
1.泛型(Generic)
C++通過模板技術可以指定集合的元素類型,而Java在1.5之前一直沒有相對應的功能。一個集合可以放任何類型的對象,相應地從集合裡面拿對象的時候我們也不得不對他們進行強制得類型轉換。猛虎引入了泛型,它允許指定集合里元素的類型,這樣你可以得到強類型在編譯時刻進行類型檢查的好處。
Collection c = new ArrayList();
c.add(new Date());
編譯器會給出一個錯誤:
add(java.lang.String) in java.util.Collection cannot be applied to (java.util.Date)
2.For-Each循環
For-Each循環得加入簡化了集合的遍歷。假設我們要遍歷一個集合對其中的元素進行一些處理。典型的代碼為:
void processAll(Collection c){
for(Iterator i=c.iterator(); i.hasNext();){
MyClass myObject = (MyClass)i.next();
myObject.process();
}
}
使用For-Each循環,我們可以把代碼改寫成:
void processAll(Collection c){
for (MyClassmyObject :c)
myObject.process();
}
這段代碼要比上面清晰許多,並且避免了強制類型轉換。
3.自動裝包/拆包(Autoboxing/unboxing)
自動裝包/拆包大大方便了基本類型數據和它們包裝類地使用。
自動裝包:基本類型自動轉為包裝類.(int >> Integer)
自動拆包:包裝類自動轉為基本類型.(Integer >> int)
在JDK1.5之前,我們總是對集合不能存放基本類型而耿耿於懷,現在自動轉換機制解決了我們的問題。
int a = 3;
Collection c = new ArrayList();
c.add(a);//自動轉換成Integer.
Integer b = new Integer(2);
c.add(b + 2);
這裡Integer先自動轉換為int進行加法運算,然後int再次轉換為Integer.
4.枚舉(Enums)
JDK1.5加入了一個全新類型的“類”-枚舉類型。為此JDK1.5引入了一個新關鍵字enmu. 我們可以這樣來定義一個枚舉類型。
public enum Color
{
Red,
White,
Blue
}
然後可以這樣來使用Color myColor = Color.Red.
枚舉類型還提供了兩個有用的靜態方法values()和valueOf(). 我們可以很方便地使用它們,例如
for (Color c : Color.values())
System.out.println(c);
5.可變參數(Varargs)
可變參數使程式設計師可以聲明一個接受可變數目參數的方法。注意,可變參數必須是函式聲明中的最後一個參數。假設我們要寫一個簡單的方法列印一些對象,
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);
…
在JDK1.5之前,我們可以用重載來實現,但是這樣就需要寫很多的重載函式,顯得不是很有效。如果使用可變參數的話我們只需要一個函式就行了
public void write(Object... objs) {
for (Object obj: objs)
System.out.println(obj);
}
在引入可變參數以後,Java的反射包也更加方便使用了。對於c.getMethod("test", new Object【0】).invoke(c.newInstance(), new Object【0】)),現在我們可以這樣寫了c.getMethod("test").invoke(c.newInstance()),這樣的代碼比原來清楚了很多。
6.靜態導入(Static Imports)
要使用用靜態成員(方法和變數)我們必須給出提供這個方法的類。使用靜態導入可以使被導入類的所有靜態變數和靜態方法在當前類直接可見,使用這些靜態成員無需再給出他們的類名。
import static java.lang.Math.*;
…….
r = sin(PI * 2); //無需再寫r = Math.sin(Math.PI);
不過,過度使用這個特性也會一定程度上降低代碼地可讀性。
JDK1.5 正式版即將發布,讓我們共同期待吧。我們可以去http://java.sun.com/j2se/1.5.0/download.jsp,先下載一個beta爽一把。
三、JDK的命令詳解(來源視點線上)
rmic
功能說明:
rmic 為遠程對象生成 stub 和 skeleton。
語法:
rmic 【 options 】 package-qualified-class-name(s)
補充說明:
rmic 編譯器根據編譯後的 Java 類(含有遠程對象實現)名,為遠程對象生成 stub 和 skeleton(遠程對象是指實現 java.rmi.Remote 接口的對象)。在 rmic 命令中所給的類必須是經 javac 命令成功編譯且是完全包限定的類。
命令選項
-classpath【路徑】 指定 rmic 用於查詢類CLASSPATH 環境變數。目錄用冒號分隔。
-d【目錄】 指定類層次的根目錄。此選項可用來指定 stub 和 skeleton 檔案的目標目錄。
-depend 使編譯器考慮重新編譯從其它類引用的類。 一般來說,它只重新編譯從原始碼引用的遺漏或過期的類。
-g 允許生成調試表格。調試表格含有行號和局部變數的有關信息,即 Java 調試工具所使用的信息。預設情況下,只生成行號。
-J 與 -D 選項聯用,它將緊跟其後的選項( -J 與 -D 之間無空格)傳給 java 解釋器。
-keepgenerated 為 stub 和 skeleton 檔案保留所生成的 .java 源檔案,並將這些源檔案寫到與 .class 檔案相同的目錄中,如果要指定目錄,則使用 -d 選項。
-nowarn 關閉警告。如果使用該選項,則編譯器不輸出任何警告信息。
-show 顯示 rmic 編譯器的 GUI(圖形用戶界面)。輸入一個或多個包限定類名(以空格分隔),並按回車鍵或“顯示”按鈕,創建 stub 和 skeleton。
-vcompat (預設值)創建與 JDK 1.1 和 1.2 stub 協定版本都兼容的 stub 和 skeleton。
-verbose 使編譯器和連結器輸出關於正在編譯哪些類和正在載入哪些類檔案的信息。
-v1.1 創建 JDK 1.1 stub 協定版本的 stub 和 skeleton。
-v1.2 只創建 JDK 1.2 stub 協定版本的 stub。
rmid
功能說明:
rmid 啟動激活系統守護進程,以便能夠在 Java 虛擬機上註冊和激活對象。
語法:
rmid 【-port port】 【-log dir】
補充說明:
rmid 工具啟動激活系統守護進程。必須先啟動激活系統守護進程,才能向激活系統註冊可被激活的對象或在 Java 虛擬機上激活可被激活的對象。
命令選項
-C<某些命令行選項> 指定一個選項,在創建每個 rmid 的子守護進程(激活組)時,該選項以命令行參數的形式傳給該子守護進程。
-log【目錄】 指定目錄的名稱,激活系統守護進程在該目錄中寫入其資料庫及相關信息。預設狀態下,將在執行 rmid 命令的目錄中創建一個 log 目錄。
-port【連線埠】 指定 rmid 的註冊服務程式所使用的連線埠。激活系統守護進程將 ActivationSystem 與該註冊服務程式中的名稱java.rmi.activation.ActivationSystem 捆綁在一起。
-stop 停止 -port 選項所指定連線埠上的當前 rmid 調用。若未指定連線埠,則將停止在連線埠 1098 上運行的 rmid。
rmiregistry
功能說明:
rmiregistry 命令可在當前主機的指定連線埠上啟動遠程對象註冊服務程式。
語法:
rmiregistry 【port】
補充說明:
rmiregistry 命令在當前主機的指定 port 上創建並啟動遠程對象註冊服務程式。如果省略 port,則註冊服務程式將在 1099 連線埠上啟動。rmiregistry 命令不產生任何輸出而且一般在後台運行。遠程對象註冊服務程式是自舉命名服務。主機上的 RMI 伺服器將利用它將遠程對象綁定到名字上。客戶機即可查詢遠程對象並進行遠程方法調用。註冊服務程式一般用於定位應用程式需調用其方法的第一個遠程對象。該對象反過來對各應用程式提供相應的支持,用於查找其它對象。
java.rmi.registry.LocateRegistry 類的方法可用於在某台主機或主機和連線埠上獲取註冊服務程式操作。java.rmi.Naming 類的基於 URL 的方法將對註冊服務程式進行操作,並可用於查詢遠程對象、將簡單(字元串)名稱綁定到遠程對象、將新名稱重新綁定到遠程對象(覆蓋舊綁定)、取消遠程對象的綁定以及列出綁定在註冊服務程式上的 URL。
serialver
功能說明:
serialver 命令返回 serialVersionUID。
語法:
serialver 【 命令選項 】
補充說明:
serialver 以適於複製到演變類的形式返回一個或多個類的 serialVersionUID。不帶參數調用時,它輸出用法行。
命令選項
-show 顯示一個簡單的用戶界面。輸入完整的類名並按回車鍵或“顯示”按鈕可顯示 serialVersionUID。
jarsigner
功能說明:
為 Java 歸檔 (JAR) 檔案產生簽名,並校驗已簽名的 JAR 檔案的簽名。
語法:
jarsigner 【 命令選項 】 jar-file alias
jarsigner -verify 【 命令選項 】 jar-file
補充說明:
jarsigner 工具用於兩個目的:
1:為 Java 歸檔 (JAR) 檔案簽名
2:校驗已簽名的 JAR 檔案的簽名和完整性
命令選項
-keystore【url】 指定密鑰倉庫的 URL。預設值是用戶的宿主目錄中的 .keystore 檔案,它由系統屬性“user.home”決定。
-storetype【storetype】 指定要被實例化的密鑰倉庫類型。默認的密鑰倉庫類型是安全屬性檔案中 "keystore.type" 屬性值所指定的那個類型,由 java.security.KeyStore 中的靜態方法 getDefaultType 返回。
-storepass【password】 指定訪問密鑰倉庫所需的口令。這僅在簽名(不是校驗)JAR 檔案時需要。在這種情況下,如果命令行中沒有提供 -storepass 選項,用戶將被提示輸入口令。
-KeyPass【password】 指定用於保護密鑰倉庫項(由命令行中指定的別名標出)的私鑰的口令。使用 jarsigner 為 JAR 檔案簽名時需要該口令。如果命令行中沒有提供口令,且所需的口令與密鑰倉庫的口令不同,則將提示用戶輸入它。
-sigfile【file】 指定用於生成 .SF 和 .DSA 檔案的基本檔案名稱。
-signedjar【file】 指定用於已簽名的 JAR 檔案的名稱。
-verify 如果它出現在命令行中,則指定的 JAR 檔案將被校驗,而不是簽名。如果校驗成功,將顯示“jar verified”。如果試圖校驗未簽名的 JAR 檔案,或校驗被不支持的算法(例如未安裝 RSA 提供者時使用的 RSA)簽名的 JAR 檔案,則將有如下顯示: "jar is unsigned. (signatures missing or not parsable)" 。
-certs 如果它與 -verify 和 -verbose 選項一起出現在命令行中,則輸出將包括 JAR 檔案的每個簽名人的證書信息。
-verbose 如果它出現在命令行中,則代表“verbose”模式,它使 jarsigner 在 JAR 簽名或校驗過程中輸出額外信息。
-internalsf 過去,JAR 檔案被簽名時產生的 .DSA(簽名塊)檔案包含一個同時產生的 .SF 檔案(簽名檔案)的完整編碼副本。這種做法已被更改。為了減小輸出 JAR 檔案的整個大小,預設情況下 .DSA 檔案不再包含 .SF 檔案的副本。但是如果 -internalsf 出現在命令行中,將採用舊的做法。該選項主要在測試時有用;實際上不應使用它,因為這樣將消除有用的最佳化。
-sectionsonly 如果它出現在命令行中,則 JAR 檔案被簽名時生成的 .SF 檔案(簽名檔案)將不包括含有整個??的源檔案相關的信息和散列。該選項主要在測試時有用;實際上不應使用它,因為這樣將消除有用的最佳化。
-J【javaoption】 將指定的 javaoption 串直接傳遞到 Java 解釋器。((jarsigner 實際上是解釋器的一個 “wrapper”)。該選項不應含有任何空格。它有助於調整執行環境或記憶體使用。要獲得可用的解釋器選項的清單,可在命令行鍵入 java -h 或 java -X。
功能說明:
管理由私鑰和認證相關公鑰的 X.509 證書鏈組成的密鑰倉庫(資料庫)。還管理來自可信任實體的證書。
語法:
keytool 【 命令 】
補充說明:
keytool 是個密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用於(通過數字簽名)自我認證(用戶向別的用戶/服務認證自己)或數據完整性以及認證服務。它還允許用戶儲存他們的通信對等者的公鑰(以證書形式)。
native2ascii
功能說明:
將含有本地編碼字元(既非 latin1 又非 Unicode 字元)的檔案轉換為 Unicode 編碼字元的檔案。
語法:
native2ascii 【options】 【inputfile 【outputfile】】
補充說明:
Java 編譯器和其它 Java 工具只能處理含有 Latin-1 和/或 Unicode 編碼(udddd 記號)字元的檔案。native2ascii 將含有其它字元編碼的檔案轉換成含 Latin-1 和/或 Unicode 編碼字元的檔案。若省略 outputfile,則使用標準輸出設備輸出。此外,如果也省略 inputfile,則使用標準輸入設備輸入。
命令選項
-reverse 執行相反的操作:將含 Latin-1 和/或 Unicode 編碼字元的檔案轉換成含本地編碼字元的檔案。
-encoding【encoding_name】 指定轉換過程使用的編碼名稱。預設的編碼從系統屬性 file.encoding 中得到。
appletviewer
功能說明:
Java applet 瀏覽器。appletviewer 命令可在脫離全球資訊網瀏覽器環境的情況下運行 applet。
語法:
appletviewer 【 threads flag 】 【 命令選項 】 urls ...
補充說明:
appletviewer 命令連線到 url 所指向的文檔或資源上,並在其自身的視窗中顯示文檔引用的每個 applet。注意:如果 url 所指向的文檔不引用任何帶有 OBJECT、EMBED 或 APPLET 標記的 applet,那么 appletviewer 就不做任何事情。
命令選項
-debug 在 Java 調試器 jdb 中啟動 appletviewer,使您可以調試文檔中的 applet。
-encoding【編碼名稱】 指定輸入 HTML 檔案的編碼名稱。
-J【javaoption】 將 javaoption 字元串作為單個參數傳給運行 appletviewer 的 Java 解釋器。參數不能含有空格。由多重參數組成的字元串,其中的每個參數都必須以前綴 -J 開頭,該前綴以後將被除去。這在調整編譯器的執行環境或記憶體使用時將很有用。
extcheck
功能說明:
extcheck 檢測目標 jar 檔案與當前安裝方式擴展 jar 檔案間的版本衝突。
語法:
extcheck 【 -verbose 】 targetfile.jar
補充說明:
extcheck 實用程式檢查指定 Jar 檔案的標題和版本與 JDK TM 軟體中所安裝的擴展是否有衝突。在安裝某個擴展前,可以用該實用程式查看是否已安裝了該擴展的相同版本或更高的版本。
extcheck 實用程式將 targetfile.jar 檔案清單的 specification-title 和 specification-version 頭與當前安裝在擴展目錄下所有 Jar 檔案的相對應的頭進行比較(預設擴展目錄為 jre/lib/ext)。extcheck 實用程式比較版本號的方式與 java.lang.Package.isCompatibleWith 方法相同。若未檢測到衝突,則返回代碼為 0。如果擴展目錄中任何一個 jar 檔案的清單有相同的 specification-title 和相同的或更新的 specification-version 號,則返回非零錯誤代碼。如果 targetfile.jar 的清單中沒有 specification-title 或 specification-version 屬性,則同樣返回非零錯誤代碼。
命令選項
-verbose 對擴展目錄中的 Jar 檔案進行檢查時,列出檔案。此外,還報告目標 jar 檔案的清單屬性及所有衝突的 jar 檔案。
jar
功能說明:
Java歸檔工具
語法:
jar 【 命令選項 】 【manifest】 destination input-file 【input-files】
補充說明:
jar工具是個java應用程式,可將多個檔案合併為單個JAR歸檔檔案。jar是個多用途的存檔及壓縮工具,它基於ZIP和ZLIB壓縮格式。然而,設計jar的主要目的是便於將java applet或應用程式打包成單個歸檔檔案。將applet或應用程式的組件(.class 檔案、圖像和聲音)合併成單個歸檔檔案時,可以用java代理(如瀏覽器)在一次HTTP事務處理過程中對它們進行下載,而不是對每個組件都要求一個新連線。這大大縮短了下載時間。jar還能壓縮檔案,從而進一步提高了下載速度。此外,它允許applet的作者對檔案中的各個項進行簽名,因而可認證其來源。jar工具的語法基本上與tar命令的語法相同。
命令選項
-c 在標準輸出上創建新歸檔或空歸檔。
-t 在標準輸出上列出內容表。
-x【file】 從標準輸入提取所有檔案,或只提取指定的檔案。如果省略了file,則提取所有檔案;否則只提取指定檔案。
-f 第二個參數指定要處理的jar檔案。在-c(創建)情形中,第二個參數指的是要創建的jar檔案的名稱(不是在標準輸出上)。在-t(表(或-x(抽取)這兩種情形中,第二個參數指定要列出或抽取的jar檔案。
-v 在標準錯誤輸出設備上生成長格式的輸出結果。
-m 包括指定的現有清單檔案中的清單信息。用法舉例:“jar cmf myManifestFile myJarFile *.class”
-0 只儲存,不進行 ZIP 壓縮。
-M 不創建項目的清單檔案。
-u 通過添加檔案或更改清單來更新現有的 JAR 檔案。例如:“jar -uf foo.jar foo.class”將檔案 foo.class 添加到現有的JAR檔案foo.jar中,而“jar umf manifest foo.jar”則用manifest中的信息更新foo.jar的清單。
-C 在執行 jar 命令期間更改目錄。例如:“jar -uf foo.jar -C classes *”將classes目錄內的所有檔案加到foo.jar中,但不添加類目錄本身。
程式示例
1:將當前目錄下所有CLASS檔案打包成新的JAR檔案:
jar cf file.jar *.class
2:顯示一個JAR檔案中的檔案列表
jar tf file.jar
3:將當前目錄下的所有檔案增加到一個已經存在的JAR檔案中
jar cvf file.jar *
javadoc
功能說明
Java API文檔生成器從Java源檔案生成API文檔HTML頁。
語法:
javadoc 【 命令選項 】 【 包名 】 【 源檔案名稱 】 【 @files 】
其中【 包名 】為用空格分隔的一系列包的名字,包名不允許使用通配符,如(*)。【 源檔案名稱 】為用空格分隔的一系列的源檔案名稱,源檔案名稱可包括路徑和通配符,如(*)。【 @files 】是以任何次序包含包名和源檔案的一個或多個檔案。
補充說明
Javadoc解析Java源檔案中的聲明和文檔注釋,並產生相應的HTML頁預設),描述公有類、保護類、內部類、接口、構造函式、方法和域。
在實現時,Javadoc要求且依賴於java編譯器完成其工作。Javadoc調用部分javac編譯聲明部分,忽略成員實現。它建立類的內容豐富的內部表示,包括類層次和“使用”關係,然後從中生成HTML。Javadoc還從原始碼的文檔注釋中獲得用戶提供的文檔。
當Javadoc建立其內部文檔結構時,它將載入所有引用的類。由於這一點,Javadoc必須能查找到所有引用的類,包括引導類、擴展類和用戶類。
命令選項
-overview i>path/filename 指定javadoc應該從path/filename所指定的“源”檔案中獲取概述文檔,並將它放到概述頁中(overview-summary.html)。其中path/filename 是相對於-sourcepath的相對路徑名。
-public 只顯示公有類及成員。
-protected 只顯示受保護的和公有的類及成員。這是預設狀態。
-package 只顯示包、受保護的和公有的類及成員。
-private 顯示所有類和成員。
-help 顯示在線上幫助,它將列出這些javadoc和doclet命令行選項。
-doclet class 指定啟動用於生成文檔的docle 的類檔案。該doclet定義了輸出的內容和格式。如果未使用-doclet選項,則javadoc使用標準doclet生成預設HTML格式。該類必須包含start(Root)法。該啟動類的路徑由 -docletpath選項定義。
-docletpath classpathlist 指定doclet類檔案的路徑,該類檔案用-doclet選項指定。如果doclet已位於搜尋路徑中,則沒有必要使用該選項。
-1.1 生成具有用Javadoc 1.1生成的文檔的外觀和功能的文檔。也就是說,頁的背景為灰色,用圖像做頁眉,使用bullet列表而不是表格,具有單層目的目錄結構,不包含繼承 API,不使?*** TML框架,並且不支持內部類。該選項還自動將索引分割成每個字母一個檔案。如果想要這種外觀,則該選項比javadoc 1.1優越之處等於修正了一些錯誤。
-sourcepath sourcepathlist
當將包名傳遞到javadoc命令中時,指定定位源檔案(.java)的搜尋路徑。注意只有當用 javadoc命令指定包名時才能使用sourcepath選項 -- 它將不會查找傳遞到javadoc命令中的.java檔案。如果省略-sourcepath,則javadoc使用類路徑查找源檔案。
-classpath classpathlist 指定javadoc將在其中查找引用類的路徑 -- 引用類是指帶文檔的類加上它們引用的任何類。Javadoc將搜尋指定路徑的所有子目錄。classpathlist可以包括多個路徑,彼此用逗號分隔。
-bootclasspath classpathlist 指定自舉類所在路徑。它們名義上是Java平台類。這個bootclasspath是Javadoc將用來查找源檔案和類檔案的搜尋路徑的一部分。在 classpathlist中用冒號(:)分隔目錄。
-extdirs dirlist 指定擴展類所在的目錄。它們是任何使用Java擴展機制的類。這個 extdirs是Javadoc將用來查找源檔案和在檔案的搜尋路徑的一部分。在dirlist中用冒號(:)分隔目錄。
-verbose 在javadoc運行時提供更詳細的信息。不使用verbose選項時,將顯示載入源檔案、生成文檔(每個源檔案一條信息)和排序的信息。verbose選項導致列印額外的信息,指定解析每個java源檔案的毫秒數。
-locale language_country_variant 指定javadoc在生成文檔時使用的環境。
-encoding name 指定源檔案編碼名,例如EUCJIS/SJIS。如果未指定該選項,則使用平台預設轉換器。
-J【flag】 將flag直接傳遞給運行javadoc的運行時系統java。注意在J和flag之間不能有空格。
標準 Doclet 提供的選項
-d directory 指定javadoc保存生成的HTML件的目的目錄。省略該選項將導致把檔案保存到當前目錄中。其中directory可以是絕對路徑或相對當前工作目錄的相對路徑。
-use 對每個帶文檔類和包包括一個“用法”頁。該頁描述使用給定類或包的任何 API 的包、類、方法、構造函式和域。對於給定類 C,使用類 C 的任何東西將包括 C 的子類、聲明為 C 的域、返回 C 的方法以及具有 C 類型參數的方法和構造函式。
-version 在生成文檔中包括 @version 文本。預設地將省略該文本。
-author 在生成文檔中包括 @author 文本。
-splitindex 將索引檔案按字母分割成多個檔案,每個字母一個檔案,再加上一個包含所有以非字母字元開頭的索引項的檔案。
-windowtitle【title】 指定放入 HTML
四、JDK安裝手冊(轉載http://www.funbsd.net)
·Linux
SUN的java網站提供windows,linux,solaris三個平台編譯好的jdk包,下載解壓即可使用。
網址:http://java.sun.com/downloads/
cd /usr/local
sh /home/pkg/jdk-1_5_0_01-linux-i586.bin
mv j2sdk1.5.0_01 java
chown -R root:root java
chmod -R 755 java
設定環境變數(/etc/profile):
export JAVA_HOME=/usr/local/java
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
使環境變數生效,並進行測試:
source /etc/profile
java -version
·FreeBSD
這個編譯好的jdk包需要FreeBSD4.x兼容包,你也可以自己從ports安裝jdk:
網址:http://www.freebsd.org/java/
mount /cdrom
cd /cdrom/compat4x/
./install.sh
pkg_add -r ftp://ftp.freebsdchina.org/pub/china_ports/jdk-1.4.2p7.tbz
mv /usr/local/jdk1.4.2 /usr/local/java
設定環境變數(~/.cshrc):
setenv JAVA_HOME /usr/local/java
setenv CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib
setenv PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
使環境變數生效,並進行測試:
source ~/.cshrc
java -version