Zip格式亦在java 1.1的JAR(Java ARchive)檔案格式中得到了采用。這種檔案格式的作用是将一系列檔案合并到單個壓縮檔案裡,就象Zip那樣。然而,同Java中其他任何東西一樣,JAR檔案是跨平台的,是以不必關心涉及具體平台的問題。除了可以包括聲音和圖像檔案以外,也可以在其中包括類檔案。
涉及網際網路應用時,JAR檔案顯得特别有用。在JAR檔案之前,web浏覽器必須重複多次請求Web伺服器,以便下載下傳完構成一個“程式片”(applet)的所有檔案。除此以外,每個檔案都是未經壓縮的。但在将所有這些檔案合并到一個JAR檔案裡以後,隻需向遠端伺服器發出一次請求即可。同時,由于采用了壓縮技術,是以可在更短的時間裡獲得全部資料。另外,JAR檔案裡的每個入口(條目)都可以加上數字化簽名(詳情參考Java使用者文檔)。
一個JAR檔案由一系列采用Zip壓縮格式的檔案構成,同時還有一張“詳情單”,對所有這些檔案進行了描述(可建立自己的詳情單檔案;否則,jar程式會為我們代勞)。在聯機使用者文檔中,可以找到與JAR詳情單更多的資料(詳情單的英語是“Manifest”)。
jar實用程式已與Sun的JDk配套提供,可以按我們的選擇自動壓縮檔案。請在指令行調用它:
jar [選項] 說明 [詳情單] 輸入檔案
其中,“選項”用一系列字母表示(不必輸入連字号或其他任何訓示符)。如下所示:
c 建立新的或空的壓縮檔
t 列出目錄表
x 解壓所有檔案
x file 解壓指定檔案
f 指出“我準備向你提供檔案名”。若省略此參數,jar會假定它的輸入來自标準輸入;或者在它建立檔案時,輸出會進入标準輸出内
m 指出第一個參數将是使用者自建的詳情表檔案的名字
v 産生詳細輸出,對jar做的工作進行巨細無遺的描述
O 隻儲存檔案;不壓縮檔案(用于建立一個JAR檔案,以便我們将其置入自己的類路徑中)
M 不自動生成詳情表檔案
在準備進入JAR檔案的檔案中,若包括了一個子目錄,那個子目錄會自動添加,其中包括它自己的所有子目錄,以此類推。路徑資訊也會得到保留。
下面是調用jar的一些典型方法:
jar cf myJarFile.jar *.class
用于建立一個名為myJarFile.jar的JAR檔案,其中包含了目前目錄中的所有類檔案,同時還有自動産生的詳情表檔案。
jar cmf myJarFile.jar myManifestFile.mf *.class
與前例類似,但添加了一個名為myManifestFile.mf的使用者自建詳情表檔案。
jar tf myJarFile.jar
生成myJarFile.jar内所有檔案的一個目錄表。
jar tvf myJarFile.jar
添加“verbose”(詳盡)标志,提供與myJarFile.jar中的檔案有關的、更詳細的資料。
jar cvf myApp.jar audio classes image
假定audio,classes和image是子目錄,這樣便将所有子目錄合并到檔案myApp.jar中。其中也包括了“verbose”标志,可在jar程式工作時回報更詳盡的資訊。
如果用O選項建立了一個JAR檔案,那個檔案就可置入自己的類路徑(CLASSPATH)中:
CLASSPATH="lib1.jar;lib2.jar;"
Java能在lib1.jar和lib2.jar中搜尋目标類檔案。
jar工具的功能沒有zip工具那麼豐富。例如,不能夠添加或更新一個現成JAR檔案中的檔案,隻能從頭開始建立一個JAR檔案。此外,不能将檔案移入一個JAR檔案,并在移動後将它們删除。然而,在一種平台上建立的JAR檔案可在其他任何平台上由jar工具毫無阻礙地讀出(這個問題有時會困擾zip工具)。