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