JAR文件的全稱是Java Archive File,意思就是java檔案文件,一般jar文件是一種壓縮的文件,與常見的ZIP壓縮文件兼容,一般也被稱爲JAR包。JAR文件和zip文件的區別就在於jar文件默認包含一個名爲META-INF/MANIFEST.MF的清單文件,這個清單文件是在JAR文件時由自動建立的。java
1.當開發一個應用程序後,這個應用程序包含了不少類,若是須要把這個應用程序提供給別人使用,一般將這些類文件打包成一個JAR文件,把這個jar文件提供給別人使用。只要別人在系統的CLASSPATH環境變量中添加這個JAR文件,則java虛擬機就能夠自動在內存中解壓這個JAR包,把這個JAR文件當成一個路徑,在這路徑中查找所須要的類或包對應的路徑結構。web
2.JAR文件的好處,安全,可以對JAR文件進行數字簽名,只讓可以識別數字簽名的用戶使用裏面的東西;加快下載速度,再網絡使用Applet時,若是存在多個文件而不打包,爲了可以把每一個文件都下載到客戶端,須要把每一個文件單獨創建一個HTTP鏈接,這是很是耗時的工做。將這些文件壓縮成一個jar包,只須要創建一次HTTP鏈接就可以下載全部的文件。壓縮,使文件變現小,JAR壓縮機制和ZIP徹底相同。包封裝,可以讓JAR包裏面的文件依賴統一版本的類文件。可移植,JAR包做爲內嵌在java平臺內部處理的標準,可以在各類平臺上直接使用。安全
3. jar 命令詳解
jar 是隨 JDK 安裝的,在 JDK 安裝目錄下的 bin 目錄 中,Windows 下文件名爲 jar.exe,Linux 下文件名爲 jar。它的運行須要用到 JDK 安裝目錄下 lib 目錄中 的 tools.jar 文件。不過咱們除了安裝 JDK 什麼也不須要作,由於 SUM 已經幫咱們作好了。咱們甚至不須要將 tools.jar 放 到 CLASSPATH 中。
使用不帶任何的 jar 命令咱們能夠看到 jar 命令的用法以下:
jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一個,它們分別表示:
-c 建立新的 JAR 文件包
-t 列出 JAR 文件包的內容列表
-x 展開 JAR 文件包的指定文件或者全部文件
-u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)
[vfm0M] 中的選項能夠任選,也能夠不選,它們是 jar 命令的選項參數
-v 生成詳細報告並打印到標準輸出
-f 指定 JAR 文件名,一般這個參數是必須的
-m 指定須要包含的 MANIFEST 清單文件
-0 只存儲,不壓縮,這樣產生的 JAR 文件包會比不用該參數產生的體積大,但速度更快
-M 不產生全部項的清單(MANIFEST〕文件,此參數會忽略 -m 參數
[jar-文件] 即須要生成、查看、更新或者解開的 JAR 文件包,它是 -f 參數的附屬參數
[manifest-文件] 即 MANIFEST 清單文件,它是 -m 參數的附屬參數
[-C 目錄] 表示轉到指定目錄下去執行這個 jar 命令的操做。它至關於先使用 cd 命令轉該目錄下再執行不帶 -C 參數的 jar 命令,它只能在建立和更新 JAR 文件包的時候可用。
文件名 ... 指定一個文件/目錄列表,這些文件/目錄就是要添加到 JAR 文件包中的文件/目錄。若是指定了目錄,那麼 jar 命令打包的時候會自動把該目錄中的全部文件和子目錄打入包中。網絡
4.建立可執行的JAR包,當一個程序開發成功通常經過三種方式來發布,利用平臺相關的編譯器將整個應用編譯成平臺可執行的文件,這一般使用第三方的編譯器,並且編譯的文件喪失跨平臺型;爲應用編輯一個批處理文件;將一個應用程序製做成可執行的jar文件包,經過jar包來發布應用。ip
5.關於JAR包的技巧,JAR文件實際就是ZIP文件,因此能夠用一些常看法壓縮JAR文件。除此以外 java還能夠生成兩種壓縮包,WAR包和EAR文件,WAR文件是Web Archive File,而EAP文件就是Enterprise Arichve File,它對應於一個企業應用文擋(一般由web應用和ejb兩部分組成)。內存