做JAVA開發的,對jar包和war包肯定接觸的不少。我們有必要對他們做一個深入的了解。現在我們整理一下。
jar包的介紹
JAR(Java Archive)是與平臺無關的文件格式,它允許將許多文件組合成一個壓縮文件。
JAR文件格式以流行的ZIP文件格式為基礎。與ZIP文件不同的是,JAR文件不僅用于壓縮和發布,而且還用于部署和封裝庫,組件和插件程序,并可被像編譯器和JVM這樣的工具直接使用。在JAR中包含特殊的文件,如MAINFEST和部署描述符,用來指示工具如何處理特定的JAR.
簡單來說,jar包就是別人已經寫好的一些類,然后對這些類進行打包。可以將這些jar包引入到你的項目中,可以直接使用這些jar包中的類和屬性,這些jar包可以放在lib目錄下,也可以上次到maven中央倉庫中,通過pom文件引入。
war包介紹
war包時一個可以直接運行的web模塊,通常用于網站,打成包部署到容器中。以Tomcat為例來說,將war包部署在其/webApps/目錄下,然后啟動tomcat,這個包就會自動解壓,就相當于發布了。
war包時sun提出的一種web應用程序格式,與jar包類似,是很多文件的壓縮包。war包中的文件按照一定目錄結構來組織。根據其根目錄下包含有html和jsp文件,或者包含有這兩種文件的目錄,另外還有WEB-INF目錄。通常在WEB-INF目錄下含有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄則包含編譯好的servlet類和jsp文件,或者servlet所依賴的其他類。通常這些依賴的類也可以打包成jar包放在WEB-INF下的lib目錄下。
簡單來說,war包是javaweb程序打的包,war包里邊含有寫好的代碼編譯成的class文件,依賴的包,配置文件,所有的網站頁面,包括html,jsp等等。一個war包可以理解為是一個web項目,里面是項目的所有東西。
jar包和war包的區別
1.JAR文件的目的是把類和相關的資源封裝到壓縮的歸檔文件中。而對于war文件來說,一個war文件代表一個web應用程序,它可以包含servlet,html頁面,java類,圖像文件,以及組成web應用程序的其他資源,而不僅僅是類的歸檔文件。
2.打包jar有兩種,包含main入口的和不包含main入口的(比如一些jar是直接類庫引用的,不需要執行,這些就不用包含main入口。包含main入口也叫做可執行jar文件)。
3.jar文件包含一個META-INF/MANIFEST.MF文件,這個文件是在生產jar文件的時候自動創建的。