JAR 文件是什么?
JAR 文件格式以流行的 Zip 文件格式為基礎,用于將許多個文件聚集為一個文件。與 ZIP 文件不同的是,JAR 文件不僅用于壓縮和發布,而且還用于部署和封裝庫、組件和插件程序,并可被像編譯器和 JVM 這樣的工具直接使用。在 JAR 中包含非凡的文件,如 manifests 和部署描述符,用來指示工具如何處理特定的 JAR。
一個 JAR 文件可以用于:
□ 用于發布和使用類庫
□ 作為應用程序和擴展的構建單元
□ 作為組件、applet 或者插件程序的部署單位
□ 用于打包與組件相關聯的輔助資源
JAR 文件格式提供了許多優勢和功能,其中很多是傳統的壓縮格式如 ZIP 或者 TAR 所沒有提供的。它們包括:
☆ 安全性。 可以對 JAR 文件內容加上數字化簽名。這樣,能夠識別簽名的工具就可以有選擇地為您授予軟件安全特權,這是其他文件做不到的,它還可以檢測代碼是否被篡改過。
☆ 減少下載時間。 假如一個 applet 捆綁到一個 JAR 文件中,那么瀏覽器就可以在一個 HTTP 事務中下載這個 applet 的類文件和相關的資源,而不是對每一個文件打開一個新連接。
☆ 壓縮。JAR 格式答應您壓縮文件以提高存儲效率。
☆ 傳輸平臺擴展。 java 擴展框架(Java Extensions Framework)提供了向 Java 核心平臺添加功能的方法,這些擴展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 開發的擴展例子)。
☆ 包密封。 存儲在 JAR 文件中的包可以選擇進行密封,以增強版本一致性和安全性。密封一個包意味著包中的所有類都必須在同一 JAR 文件中找到。
☆ 包版本控制。 一個 JAR 文件可以包含有關它所包含的文件的數據,如廠商和版本信息。
☆ 可移植性。 處理 JAR 文件的機制是 Java 平臺核心 API 的標準部分。
壓縮的和未壓縮的 JAR
jar 工具在默認情況下壓縮文件。未壓縮的 JAR 文件一般可以比壓縮過的 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 文件的公共簽名。
jar 工具
為了用 JAR 文件執行基本的任務,要使用作為Java Development Kit 的一部分提供的 Java Archive Tool (jar 工具)。用 jar 命令調用 jar 工具。表 1 顯示了一些常見的應用:
表 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
可執行的 JAR
一個可執行的 jar 文件是一個自包含的 Java 應用程序,它存儲在非凡配置的JAR 文件中,可以由 JVM 直接執行它而無需事先提取文件或者設置類路徑。要運行存儲在非可執行的 JAR 中的應用程序,必須將它加入到您的類路徑中,并用名字調用應用程序的主類。但是使用可執行的 JAR 文件,我們可以不用提取它或者知道主要入口點就可以運行一個應用程序。可執行 JAR 有助于方便發布和執行 Java 應用程序。
新聞熱點
疑難解答