JDK概述

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:Java解釋器,直接從類文件執行Java應用程序字節代碼。 
   appletviewer:小程序瀏覽器,一種執行HTML文件上的Java小程序的Java瀏覽器。 
   Javadoc:根據Java源碼及說明語句生成HTML文檔。 
   Jdb:Java調試器,可以逐行執行程序,設置斷點和檢查變量。 
   Javah:產生可以調用Java過程的C過程,或建立能被Java程序調用的C過程的頭文件。 
   Javap:Java反彙編器,顯示編譯類文件中的可訪問功能和數據,同時顯示字節代碼含義。 

一、JDK文件結構 

      本文檔給出 JDK 目錄及其所包含的文件的概述。 

      開發文件和目錄 

http://freesea.iteye.com/blog/160124   
   本節對開發 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 (MyClass  myObject :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 文件(簽名文件)將不包括含有整個清單文件的散列的頭。它僅包含 與 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): 

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

發佈了16 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章