JDK(Java Development Kit,Java開發(fā)包,Java開發(fā)工具)是一個(gè)寫Java的applet和應(yīng)用程序的程序開發(fā)環(huán)境。它由一個(gè)處于操作系統(tǒng)層之上的運(yùn)行環(huán)境還有開發(fā)者編譯,調(diào)試和運(yùn)行用Java語言寫的applet和應(yīng)用程序所需的工具組成。中科永聯(lián)高級技術(shù)培訓(xùn)中心(www.itisedu.com) JDK(Java Development Kit,Java開發(fā)包,Java開發(fā)工具)是一個(gè)寫Java的applet和應(yīng)用程序的程序開發(fā)環(huán)境。它由一個(gè)處于操作系統(tǒng)層之上的運(yùn)行環(huán)境還有開發(fā)者編譯,調(diào)試和運(yùn)行用Java語言寫的applet和應(yīng)用程序所需的工具組成。 JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK(Software development kit)。 JDK包含的基本組件包括: ·javac – 編譯器,將源程序轉(zhuǎn)成字節(jié)碼 JDK中還包括完整的JRE(Java Runtime Environment,Java運(yùn)行環(huán)境),也被稱為private runtime。包括了用于產(chǎn)品環(huán)境的各種庫類,以及給開發(fā)員使用的補(bǔ)充庫,如國際化的庫、IDL庫。 JDK中還包括各種例子程序,用以展示Java API中的各部分。 從初學(xué)者角度來看,采用JDK開發(fā)Java程序能夠很快理解程序中各部分代碼之間的關(guān)系,有利于理解Java面向?qū)ο?/span>的設(shè)計(jì)思想。JDK的另一個(gè)顯著特點(diǎn)是隨著Java (J2EE、J2SE以及J2ME)版本的升級而升級。但它的缺點(diǎn)也是非常明顯的就是從事大規(guī)模企業(yè)級Java應(yīng)用開發(fā)非常困難,不能進(jìn)行復(fù)雜的Java軟件開發(fā),也不利于團(tuán)體協(xié)同開發(fā)。 JDK一般有三種版本: SE(J2SE),standard edition,標(biāo)準(zhǔn)版,是我們通常用的一個(gè)版本 Java開發(fā)工具(JDK)是許多Java專家最初使用的開發(fā)環(huán)境。盡管許多編程人員已經(jīng)使用第三方的開發(fā)工具,但JDK仍被當(dāng)作Java開發(fā)的重要工具。 JDK由一個(gè)標(biāo)準(zhǔn)類庫和一組建立,測試及建立文檔的Java實(shí)用程序組成。其核心Java API是一些預(yù)定義的類庫,開發(fā)人員需要用這些類來訪問Java語言的功能。Java API包括一些重要的語言結(jié)構(gòu)以及基本圖形,網(wǎng)絡(luò)和文件I/O。一般來說,Java API的非I/O部分對于運(yùn)行Java的所有平臺(tái)是相同的,而I/O部分則僅在通用Java環(huán)境中實(shí)現(xiàn)。 作為JDK實(shí)用程序,工具庫中有七種主要程序。 Javac: Java:Java解釋器,直接從類文件執(zhí)行Java應(yīng)用程序字節(jié)代碼。 一、JDK文件結(jié)構(gòu) 本文檔給出 JDK 目錄及其所包含的文件的概述。 開發(fā)文件和目錄 本節(jié)對開發(fā) Java 平臺(tái)應(yīng)用程序所要求的文件和目錄進(jìn)行說明。(不要求的目錄有:演示程序、Java 源代碼和 C 頭文件。下一節(jié)附加文件和目錄將對它們進(jìn)行論述。) 下圖列出的是最重要的目錄: jdk1.2 c:\jdk1.2 附加文件和目錄 本節(jié)說明演示程序、Java 源代碼和 C 頭文件的目錄結(jié)構(gòu)。下面是目錄結(jié)構(gòu): jdk1.2 c:\jdk1.2\demo (原文地址:http://202.102.240.73/java/javaweb/linuxjava/cjdk1_2-doc-zh/jdk1.2/zh/docs/tooldocs/win32/jdkfiles.html) 二、JDK1.5新特性介紹 “JDK1.5”(開發(fā)代號(hào)猛虎)的一個(gè)重要主題就是通過新增一些特性來簡化開發(fā),這些特性包括泛型,for-each 循環(huán),自動(dòng)裝包/拆包,枚舉,可變參數(shù), 靜態(tài)導(dǎo)入 。使用這些特性有助于我們編寫更加清晰,精悍,安全的代碼。 下面我們簡單介紹一下這些新特性。 1.泛型(Generic) C++通過模板技術(shù)可以指定集合的元素類型,而Java在1.5之前一直沒有相對應(yīng)的功能。一個(gè)集合可以放任何類型的對象,相應(yīng)地從集合里面拿對象的時(shí)候我們也不得不對他們進(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)得加入簡化了集合的遍歷。假設(shè)我們要遍歷一個(gè)集合對其中的元素進(jìn)行一些處理。典型的代碼為: void processAll(Collection c){ 使用For-Each循環(huán),我們可以把代碼改寫成: 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之前,我們總是對集合不能存放基本類型而耿耿于懷,現(xiàn)在自動(dòng)轉(zhuǎn)換機(jī)制解決了我們的問題。 int a = 3; Integer b = new Integer(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. 我們可以這樣來定義一個(gè)枚舉類型。 然后可以這樣來使用Color myColor = Color.Red. 枚舉類型還提供了兩個(gè)有用的靜態(tài)方法values()和valueOf(). 我們可以很方便地使用它們,例如 for (Color c : Color.values()) 5.可變參數(shù)(Varargs) 可變參數(shù)使程序員可以聲明一個(gè)接受可變數(shù)目參數(shù)的方法。注意,可變參數(shù)必須是函數(shù)聲明中的最后一個(gè)參數(shù)。假設(shè)我們要寫一個(gè)簡單的方法打印一些對象, util.write(obj1); 在JDK1.5之前,我們可以用重載來實(shí)現(xiàn),但是這樣就需要寫很多的重載函數(shù),顯得不是很有效。如果使用可變參數(shù)的話我們只需要一個(gè)函數(shù)就行了 public void write(Object... objs) { 在引入可變參數(shù)以后,Java的反射包也更加方便使用了。對于c.getMethod("test", new Object【0】).invoke(c.newInstance(), new Object【0】)),現(xiàn)在我們可以這樣寫了c.getMethod("test").invoke(c.newInstance()),這樣的代碼比原來清楚了很多?!?/span> 6.靜態(tài)導(dǎo)入(Static Imports) 要使用用靜態(tài)成員(方法和變量)我們必須給出提供這個(gè)方法的類。使用靜態(tài)導(dǎo)入可以使被導(dǎo)入類的所有靜態(tài)變量和靜態(tài)方法在當(dāng)前類直接可見,使用這些靜態(tài)成員無需再給出他們的類名。 import static java.lang.Math.*; 不過,過度使用這個(gè)特性也會(huì)一定程度上降低代碼地可讀性。 JDK1.5 正式版即將發(fā)布,讓我們共同期待吧。我們可以去http://java./j2se/1.5.0/download.jsp,先下載一個(gè)beta爽一把。 三、JDK的命令詳解(來源視點(diǎn)在線)
功能說明: 語法: 補(bǔ)充說明: 命令選項(xiàng)
-g 允許生成調(diào)試表格。調(diào)試表格含有行號(hào)和局部變量的有關(guān)信息,即 Java 調(diào)試工具所使用的信息。缺省情況下,只生成行號(hào)。 -J 與 -D 選項(xiàng)聯(lián)用,它將緊跟其后的選項(xiàng)( -J 與 -D 之間無空格)傳給 java 解釋器。 -keepgenerated 為 stub 和 skeleton 文件保留所生成的 .java 源文件,并將這些源文件寫到與 .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。
功能說明: 語法: 補(bǔ)充說明: 命令選項(xiàng) -log【目錄】 指定目錄的名稱,激活系統(tǒng)守護(hù)進(jìn)程在該目錄中寫入其數(shù)據(jù)庫及相關(guān)信息。缺省狀態(tài)下,將在執(zhí)行 rmid 命令的目錄中創(chuàng)建一個(gè) log 目錄。 -port【端口】 指定 rmid 的注冊服務(wù)程序所使用的端口。激活系統(tǒng)守護(hù)進(jìn)程將 ActivationSystem 與該注冊服務(wù)程序中的名稱java.rmi.activation.ActivationSystem 捆綁在一起。 -stop 停止 -port 選項(xiàng)所指定端口上的當(dāng)前 rmid 調(diào)用。若未指定端口,則將停止在端口 1098 上運(yùn)行的 rmid。
功能說明:
補(bǔ)充說明: java.rmi.registry.LocateRegistry 類的方法可用于在某臺(tái)主機(jī)或主機(jī)和端口上獲取注冊服務(wù)程序操作。java.rmi.Naming 類的基于 URL 的方法將對注冊服務(wù)程序進(jìn)行操作,并可用于查詢遠(yuǎn)程對象、將簡單(字符串)名稱綁定到遠(yuǎn)程對象、將新名稱重新綁定到遠(yuǎn)程對象(覆蓋舊綁定)、取消遠(yuǎn)程對象的綁定以及列出綁定在注冊服務(wù)程序上的 URL。
功能說明: 語法: 補(bǔ)充說明: 命令選項(xiàng)
功能說明: 語法: 補(bǔ)充說明: 命令選項(xiàng) -storetype【storetype】 指定要被實(shí)例化的密鑰倉庫類型。默認(rèn)的密鑰倉庫類型是安全屬性文件中 "keystore.type" 屬性值所指定的那個(gè)類型,由 java.security.KeyStore 中的靜態(tài)方法 getDefaultType 返回。 -storepass【password】 指定訪問密鑰倉庫所需的口令。這僅在簽名(不是校驗(yàn))JAR 文件時(shí)需要。在這種情況下,如果命令行中沒有提供 -storepass 選項(xiàng),用戶將被提示輸入口令。 -keypass【password】 指定用于保護(hù)密鑰倉庫項(xiàng)(由命令行中指定的別名標(biāo)出)的私鑰的口令。使用 jarsigner 為 JAR 文件簽名時(shí)需要該口令。如果命令行中沒有提供口令,且所需的口令與密鑰倉庫的口令不同,則將提示用戶輸入它。 -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è)簽名人的證書信息。 -verbose 如果它出現(xiàn)在命令行中,則代表“verbose”模式,它使 jarsigner 在 JAR 簽名或校驗(yàn)過程中輸出額外信息。 -internalsf 過去,JAR 文件被簽名時(shí)產(chǎn)生的 .DSA(簽名塊)文件包含一個(gè)同時(shí)產(chǎn)生的 .SF 文件(簽名文件)的完整編碼副本。這種做法已被更改。為了減小輸出 JAR 文件的整個(gè)大小,缺省情況下 .DSA 文件不再包含 .SF 文件的副本。但是如果 -internalsf 出現(xiàn)在命令行中,將采用舊的做法。該選項(xiàng)主要在測試時(shí)有用;實(shí)際上不應(yīng)使用它,因?yàn)檫@樣將消除有用的優(yōu)化。 -sectionsonly 如果它出現(xiàn)在命令行中,則 JAR 文件被簽名時(shí)生成的 .SF 文件(簽名文件)將不包括含有整個(gè)??的源文件相關(guān)的信息和散列。該選項(xiàng)主要在測試時(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 功能說明:
補(bǔ)充說明:
功能說明: 語法: 補(bǔ)充說明: 命令選項(xiàng) -encoding【encoding_name】 指定轉(zhuǎn)換過程使用的編碼名稱。缺省的編碼從系統(tǒng)屬性 file.encoding 中得到。
功能說明: 語法: 補(bǔ)充說明: 命令選項(xiàng) -encoding【編碼名稱】 指定輸入 HTML 文件的編碼名稱。 -J【javaoption】 將 javaoption 字符串作為單個(gè)參數(shù)傳給運(yùn)行 appletviewer 的 Java 解釋器。參數(shù)不能含有空格。由多重參數(shù)組成的字符串,其中的每個(gè)參數(shù)都必須以前綴 -J 開頭,該前綴以后將被除去。這在調(diào)整編譯器的執(zhí)行環(huán)境或內(nèi)存使用時(shí)將很有用。
功能說明: 語法: 補(bǔ)充說明: extcheck 實(shí)用程序?qū)?targetfile.jar 文件清單的 specification-title 和 specification-version 頭與當(dāng)前安裝在擴(kuò)展目錄下所有 Jar 文件的相對應(yīng)的頭進(jìn)行比較(缺省擴(kuò)展目錄為 jre/lib/ext)。extcheck 實(shí)用程序比較版本號(hào)的方式與 java.lang.Package.isCompatibleWith 方法相同。若未檢測到?jīng)_突,則返回代碼為 0。如果擴(kuò)展目錄中任何一個(gè) jar 文件的清單有相同的 specification-title 和相同的或更新的 specification-version 號(hào),則返回非零錯(cuò)誤代碼。如果 targetfile.jar 的清單中沒有 specification-title 或 specification-version 屬性,則同樣返回非零錯(cuò)誤代碼。 命令選項(xiàng)
功能說明:
補(bǔ)充說明: 命令選項(xià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è)備上生成長格式的輸出結(jié)果。 -m 包括指定的現(xiàn)有清單文件中的清單信息。用法舉例:“jar cmf myManifestFile myJarFile *.class” -0 只儲(chǔ)存,不進(jìn)行 ZIP 壓縮。 -M 不創(chuàng)建項(xiàng)目的清單文件。 -u 通過添加文件或更改清單來更新現(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中,但不添加類目錄本身。 程序示例 2:顯示一個(gè)JAR文件中的文件列表 3:將當(dāng)前目錄下的所有文件增加到一個(gè)已經(jīng)存在的JAR文件中
功能說明 語法: 補(bǔ)充說明 在實(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) -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已位于搜索路徑中,則沒有必要使用該選項(xiàng)。 -1.1 生成具有用Javadoc 1.1生成的文檔的外觀和功能的文檔。也就是說,頁的背景為灰色,用圖像做頁眉,使用bullet列表而不是表格,具有單層目的目錄結(jié)構(gòu),不包含繼承 API,不使?*** TML框架,并且不支持內(nèi)部類。該選項(xiàng)還自動(dòng)將索引分割成每個(gè)字母一個(gè)文件。如果想要這種外觀,則該選項(xiàng)比javadoc 1.1優(yōu)越之處等于修正了一些錯(cuò)誤。 -sourcepath sourcepathlist -classpath classpathlist 指定javadoc將在其中查找引用類的路徑 -- 引用類是指帶文檔的類加上它們引用的任何類。Javadoc將搜索指定路徑的所有子目錄。classpathlist可以包括多個(gè)路徑,彼此用逗號(hào)分隔。 -bootclasspath classpathlist 指定自舉類所在路徑。它們名義上是Java平臺(tái)類。這個(gè)bootclasspath是Javadoc將用來查找源文件和類文件的搜索路徑的一部分。在 classpathlist中用冒號(hào)(:)分隔目錄。 -extdirs dirlist 指定擴(kuò)展類所在的目錄。它們是任何使用Java擴(kuò)展機(jī)制的類。這個(gè) extdirs是Javadoc將用來查找源文件和在文件的搜索路徑的一部分。在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之間不能有空格。 -d directory 指定javadoc保存生成的HTML件的目的目錄。省略該選項(xiàng)將導(dǎo)致把文件保存到當(dāng)前目錄中。其中directory可以是絕對路徑或相對當(dāng)前工作目錄的相對路徑。 -use 對每個(gè)帶文檔類和包包括一個(gè)“用法”頁。該頁描述使用給定類或包的任何 API 的包、類、方法、構(gòu)造函數(shù)和域。對于給定類 C,使用類 C 的任何東西將包括 C 的子類、聲明為 C 的域、返回 C 的方法以及具有 C 類型參數(shù)的方法和構(gòu)造函數(shù)。 -version 在生成文檔中包括 @version 文本。缺省地將省略該文本。 -author 在生成文檔中包括 @author 文本。 -splitindex 將索引文件按字母分割成多個(gè)文件,每個(gè)字母一個(gè)文件,再加上一個(gè)包含所有以非字母字符開頭的索引項(xiàng)的文件。 -windowtitle【title】 指定放入 HTML 四、JDK安裝手冊(轉(zhuǎn)載http://www.) ·Linux SUN的java網(wǎng)站提供windows,linux,solaris三個(gè)平臺(tái)編譯好的jdk包,下載解壓即可使用。 網(wǎng)址:http://java./downloads/ cd /usr/local chown -R root:root java
export JAVA_HOME=/usr/local/java
source /etc/profile
這個(gè)編譯好的jdk包需要FreeBSD4.x兼容包,你也可以自己從ports安裝jdk: 網(wǎng)址:http://www./java/ mount /cdrom pkg_add -r ftp://ftp.freebsdchina.org/pub/china_ports/jdk-1.4.2p7.tbz
setenv JAVA_HOME /usr/local/java
source ~/.cshrc |
|