複製鏈接
請複製以下鏈接發送給好友

JAR

(計算機文件格式)

鎖定
軟件領域,JAR文件(Java歸檔,英語:Java Archive)是一種軟件包文件格式,通常用於聚合大量的Java類文件、相關的元數據和資源(文本、圖片等)文件到一個文件,以便開發Java平台應用軟件或庫。
JAR文件是一種歸檔文件,以ZIP格式構建,以.jar為文件擴展名。用户可以使用JDK自帶的jar命令創建或提取JAR文件。也可以使用其他zip壓縮工具,不過壓縮時zip文件頭裏的條目順序很重要,因為Manifest文件常需放在首位。JAR文件內的文件名是Unicode文本。
外文名
JAR
打開方式
Javawinrar

JAR基本含義

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

JAR相關特點

JAR 文件格式提供了許多優勢和功能,其中很多是傳統的壓縮格式如 ZIP 或者 RAR 所沒有提供的。它們包括:
安全性 可以對 JAR 文件內容加上數字化簽名。這樣,能夠識別簽名的工具就可以有選擇地為您授予軟件安全特權,這是其他文件做不到的,它還可以檢測代碼是否被篡改過。
減少下載時間 如果一個 applet 捆綁到一個 JAR 文件中,那麼瀏覽器就可以在一個 HTTP 事務中下載這個 applet 的類文件和相關的資源,而不是對每一個文件打開一個新連接。
壓縮 JAR 格式允許您壓縮文件以提高存儲效率。
傳輸平台擴展 Java 擴展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,這些擴展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 開發的擴展例子)。

JAR包密封

存儲在 JAR 文件中的包可以選擇進行密封,以增強版本一致性和安全性。密封一個包意味着包中的所有類都必須在同一 JAR 文件中找到。

JAR包版本控制

一個 JAR 文件可以包含有關它所包含的文件的數據,如廠商和版本信息。

JAR可移植性

處理 JAR 文件的機制是 Java 平台核心 API 的標準部分。

JAR使用範圍

一個 JAR 文件可以用於
□ 用於發佈和使用類庫
□ 作為應用程序和擴展的構建單元
□ 作為組件、applet 或者插件程序的部署單位
□ 用於打包與組件相關聯的輔助資源 [2] 

JAR運行相關

可執行的JAR
一個可執行的jar 文件是一個自包含的 Java 應用程序,它存儲在特別配置的JAR 文件中,可以由 JVM 直接執行它而無需事先提取文件或者設置類路徑。要運行存儲在非可執行的 JAR 中的應用程序,必須將它加入到您的類路徑中,並用名字調用應用程序的主類。但是使用可執行的 JAR 文件,我們可以不用提取它或者知道主要入口點就可以運行一個應用程序。可執行 JAR 有助於方便發佈和執行 Java 應用程序。
創建可執行 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 必須通過 manifest 文件的頭引用它所需要的所有其他從屬 JAR。如果使用了 -jar 選項,那麼環境變量 CLASSPATH 和在命令行中指定的所有類路徑都被 JVM 所忽略。
啓動可執行 JAR
既然我們已經將自己的應用程序打包到了一個名為 ExecutableJar.jar 的可執行 JAR 中了,那麼我們就可以用下面的命令直接從文件啓動這個應用程序:
java -jar ExecutableJar.jar
META-INF 目錄
大多數 JAR 文件包含一個 META-INF 目錄,它用於存儲包和擴展的配置數據,如安全性和版本信息。Java 2 平台識別並解釋 META-INF 目錄中的下述文件和目錄,以便配置應用程序、擴展和類裝載器:
MANIFEST.MF。這個 manifest 文件定義了與擴展和包相關的數據。
INDEX.LIST。 這個文件由 jar 工具的新選項 -i 生成,它包含在應用程序或者擴展中定義的包的位置信息。它是 JarIndex 實現的一部分,並由類裝載器用於加速類裝載過程。
xxx.SF。 這是 JAR 文件的簽名文件。佔位符 xxx標識了簽名者。
xxx.DSA。 與簽名文件相關聯的簽名程序塊文件,它存儲了用於簽名 JAR 文件的公共簽名。 [1] 

JAR相關應用

JAR應用

JAVA手機電子書的格式一般為JAR和JAD,其中JAD文件是一個説明文件,描述jar文件的信息。部分手機不支持直接讀取JAR(這是手機安全策略引起的),這時則需要JAD文件。這樣的手機只在少數。JAVA運行在JAVA虛擬機之上,也就是JVM,而很多低端機型也可以支持JAVA,因此就註定了JAVA格式的適用範圍相當廣泛。由於JAVA可以提供豐富的交互行為,因此在支持圖文,多媒體方面做的最為優秀,另外,閲讀器和文本被打包在一起(jar),因此只需安裝即可閲讀,無需另外安裝閲讀器或者下載電子書。 [1] 

JAR程序

JAVA平台由於在手機上廣泛應用,使得擴展名為jar的Kjava遊戲成為手機遊戲市場上最大的家族,直接傳入手機直接安裝即可。
眾所周知,JAVA是一種跨平台的程序設計語言。由於其高可移植性、簡單、可靠、安全等諸多優異性能,已經成為最受歡迎、最有影響力的編程語言之一。
JAVA程序的短小精幹和其跨平台的先天特點,使其成為眾多開放或半開放式手機擴展自身功能的最佳選擇。因此市場上流行的手機大多支持JAVA應用程序了。 [2] 

JAR工具用法

為了用 JAR 文件執行基本的任務,要使用作為Java Development Kit 的一部分提供的 Java Archive Tool ( jar 工具)。用 jar 命令調用 jar 工具。表 1 顯示了一些常見的應用:
常見的 jar 工具用法
功能
命令
用一個單獨的文件創建一個 JAR 文件
jar cf jar-file input-file...
用一個目錄創建一個 JAR 文件
jar cf jar-file dir-name
創建一個未壓縮的 JAR 文件
jar cf0 jar-file dir-name
更新一個 JAR 文件
jar uf jar-file input-file...
查看一個 JAR 文件的內容
jar tf jar-file
提取一個 JAR 文件的內容
jar xf jar-file
從一個 JAR 文件中提取特定的文件
jar xf jar-file archived-file...
運行一個打包為可執行 JAR 文件的應用程序
java -jar app.jar
參考資料
  • 1.    "JAR File Specification". Download.oracle.com. Retrieved 2012-07-31.
  • 2.    "Understanding the Manifest". Java.sun.com. 2003-03-21