1. 程式人生 > >JAR檔案詳解

JAR檔案詳解

JAR(Java ARchive,Java 歸檔)是一種與平臺無關的檔案格式,可將多個檔案合成一個檔案。使用者可將多個 Java applet 及其所需元件(.class 檔案、影象和聲音)繫結到 JAR 檔案中,而後作為單個的簡單 HTTP(Hypertext Tranfer Protocal,超文字傳輸協議)事務下載到瀏覽器中,從而大大提高下載速度。JAR 格式也支援壓縮,從而減小了檔案的大小,進一步縮短下載時間。另外,applet 編寫者也可在 JAR 檔案中用數字簽名的方式簽寫各項以確認其來源。它用 Java 編寫,可與現有的 applet 程式碼完全向後相容且可充分擴充套件。

JAR 檔案就是 Java Archive File,顧名思意,它的應用是與 Java 息息相關的,是 Java 的一種文件格式

。JAR 檔案非常類似 ZIP 檔案——準確的說,它就是 ZIP 檔案,所以叫它檔案包。JAR 檔案與 ZIP 檔案唯一的區別就是在 JAR 檔案的內容中,包含了一個 META-INF/MANIFEST.MF 檔案,這個檔案是在生成 JAR 檔案的時候自動建立的。

JAR檔案是跨平臺的,所以不必關心涉及具體平臺的問題。除了可以包括聲音和影象檔案以外,也可以在其中包括類檔案。
涉及因特網應用時,JAR檔案顯得特別有用。在JAR檔案之前,Web瀏覽器必須重複多次請求Web伺服器,以便下載完構成一個“程式片”(Applet)的所有檔案。除此以外,每個檔案都是未經壓縮的。但在將所有這些檔案合併到一個JAR檔案裡以後,只需向遠端伺服器發出一次請求即可。同時,由於採用了壓縮技術,所以可在更短的時間裡獲得全部資料。另外,JAR檔案裡的每個入口(條目)都可以加上數字化簽名(詳情參考Java使用者文件)。
一個JAR檔案由一系列採用Zip壓縮格式的檔案構成,同時還有一張“詳情單”,對所有這些檔案進行了描述(可建立自己的詳情單檔案;否則,jar程式會為我們代勞)。在聯機使用者文件中,可以找到與JAR詳情單更多的資料(詳情單的英語是“Manifest”)。
jar實用程式已與Sun的JDK配套提供,可以按我們的選擇自動壓縮檔案。請在命令列呼叫它

JAR 檔案格式以流行的 ZIP 檔案格式為基礎。與 ZIP 檔案不同的是,JAR 檔案不僅用於壓縮和釋出,而且還用於部署和封裝庫、元件和外掛程式,並可被像編譯器和 JVM 這樣的工具直接使用。在 JAR 中包含特殊的檔案,如 manifests 和部署描述符,用來指示工具如何處理特定的 JAR。

一個 JAR 檔案可以用於:
□ 用於釋出和使用類庫 
□ 作為應用程式和擴充套件的構建單元 
□ 作為元件、applet 或者外掛程式的部署單位 
□ 用於打包與元件相關聯的輔助資源 

JAR 格式允許您壓縮檔案以提高儲存效率。
·傳輸平臺擴充套件。 Java 擴充套件框架(Java Extensions Framework)提供了向 Java 核心平臺新增功能的方法,這些擴充套件是用 JAR 檔案打包的(Java 3D 和 JavaMail 就是由 Sun 開發的擴充套件例子)。
·包密封。 儲存在 JAR 檔案中的包可以選擇進行密封,以增強版本一致性和安全性。密封一個包意味著包中的所有類都必須在同一 JAR 檔案中找到。

建立可執行 JAR 

建立一個可執行 JAR 很容易。首先將所有應用程式程式碼放到一個目錄中。假設應用程式中的主類是 com.mycompany.myapp.Sample 。您要建立一個包含應用程式程式碼的 JAR 檔案並標識出主類。為此,在某個位置(不是在應用程式目錄中)建立一個名為 manifest 的檔案,並在其中加入以下一行:  

Main-Class: com.mycompany.myapp.Sample 然後,像這樣建立 JAR 檔案: 

jar cmf manifest ExecutableJar.jar application-dir 

所要做的就是這些了,現在可以用java -jar執行這個JAR檔案ExecutableJar.jar。  

一個可執行的 JAR 必須通過 menifest 檔案的頭引用它所需要的所有其他從屬 JAR。如果使用了 -jar 選項,那麼環境變數 CLASSPATH 和在命令列中指定的所有類路徑都被 JVM 所忽略。