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((Application Programming Interface,應用程式程式設計接口)是一些預先定義的函數,目的是提供應用程式與開發人員基于某軟體或硬體的以通路一組例程的能力,而又無需通路源碼,或了解内部工作機制的細節。)包括一些重要的語言結構以及基本圖形,網絡和檔案I/O。一般來說,Java API的非I/O部分對于運作Java的所有平台是相同的,而I/O部分則僅在通用Java環境中實作。
作為JDK實用程式,工具庫中有七種主要程式。
Javac:Java編譯器,将Java源代碼轉換成位元組碼。
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循環,我們可以把代碼改寫成:
for (MyClass myObject :c)
這段代碼要比上面清晰許多,并且避免了強制類型轉換。
3.自動裝包/拆包(Autoboxing/unboxing)
自動裝包/拆包大大友善了基本類型資料和它們包裝類地使用。
自動裝包:基本類型自動轉為包裝類.(int >> Integer)
自動拆包:包裝類自動轉為基本類型.(Integer >> int)
在JDK1.5之前,我們總是對集合不能存放基本類型而耿耿于懷,現在自動轉換機制解決了我們的問題。
int a = 3;
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(圖形使用者界面)。輸入一個或多個包限定類名(以空格分隔),并按Enter鍵或“顯示”按鈕,建立 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 顯示一個簡單的使用者界面。輸入完整的類名并按Enter鍵或“顯示”按鈕可顯示 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 檔案(簽名檔案)将不包括含有整個清單檔案的散列的頭。它僅包含 與 JAR 中每個單獨的源檔案相關的資訊和散列。該選項主要在測試時有用;實際上不應使用它,因為這樣将消除有用的優化。
-J[javaoption] 将指定的 javaoption 串直接傳遞到 Java 解釋器。((jarsigner 實際上是解釋器的一個 “wrapper”)。該選項不應含有任何空格。它有助于調整執行環境或記憶體使用。要獲得可用的解釋器選項的清單,可在指令行鍵入 java -h 或 java -X。
keytool
管理由私鑰和認證相關公鑰的 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):