1. 程式人生 > >jar包和war包的介紹和區別

jar包和war包的介紹和區別

jar war 包

JavaSE程序可以打包成Jar包(J其實可以理解為Java了),而JavaWeb程序可以打包成war包(w其實可以理解為Web了)。然後把war發布到Tomcat的webapps目錄下,Tomcat會在啟動時自動解壓war包。

JAR(Java Archive,Java 歸檔文件)是與平臺無關的文件格式,它允許將許多文件組合成一個壓縮文件。為 J2EE 應用程序創建的 JAR 文件是 EAR 文件(企業 JAR 文件)。

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

如果一個Web應用程序的目錄和文件非常多,那麽將這個Web應用程序部署到另一臺機器上,就不是很方便了,我們可以將Web應用程序打包成Web 歸檔(WAR)文件,這個過程和把Java類文件打包成JAR文件的過程類似。利用WAR文件,可以把Servlet類文件和相關的資源集中在一起進行發布。在這個過程中,Web應用程序就不是按照目錄層次結構來進行部署了,而是把WAR文件作為部署單元來使用。

一個WAR文件就是一個Web應用程序,建立WAR文件,就是把整個Web應用程序(不包括Web應用程序層次結構的根目錄)壓縮起來,指定一個.war擴展名。下面我們將第2章的Web應用程序打包成WAR文件,然後發布

要註意的是,雖然WAR文件和JAR文件的文件格式是一樣的,並且都是使用jar命令來創建,但就其應用來說,WAR文件和JAR文件是有根本區別的。JAR文件的目的是把類和相關的資源封裝到壓縮的歸檔文件中,而對於WAR文件來說,一個WAR文件代表了一個Web應用程序,它可以包含 Servlet、HTML頁面、Java類、圖像文件,以及組成Web應用程序的其他資源,而不僅僅是類的歸檔文件。war包中的文件按照一定目錄結構來組織。根據其根目錄下包含有html和jsp文件,或者包含有這兩種文件的目錄,另外還有WEB-INF目錄。通常在WEB-INF目錄下含有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的servlet類和jsp,或者servlet所依賴的其他類(如JavaBean)。通常這些所依賴的類也可以打包成jar包放在WEB-INF下的lib目錄下。

jar包:通常是開發時要引用的通用類,打成包便於存放管理。簡單來說,jar包就是別人已經寫好的一些類,然後對這些類進行打包。可以將這些jar包引入到你的項目中,可以直接使用這些jar包中的類和屬性,這些jar包一般放在lib目錄下。

我們什麽時候應該使用WAR文件呢?在開發階段不適合使用WAR文件,因為在開發階段,經常需要添加或刪除Web應用程序的內容,更新 Servlet類文件,而每一次改動後,重新建立WAR文件將是一件浪費時間的事情。在產品發布階段,使用WAR文件是比較合適的,因為在這個時候,幾乎不需要再做什麽改動了。

在開發階段,我們通常將Servlet源文件放到Web應用程序目錄的src子目錄下,以便和Web資源文件區分。在建立WAR文件時,只需要將src目錄從Web應用程序目錄中移走,就可以打包了

如果想生成war文件:可以使用如下命令:jar -cvf web1.war *
如果想查看web1.war中都有哪些文件,可以使用命令:jar -tf web1.war
如果想直接解壓web1.war文件,可以使用命令:jar -xvf web1.war
另外,也可使用winrar軟件選擇zip壓縮方式,並將壓縮文件後綴名改為war即可壓縮生成war文件;同樣使用winrar軟件可以強行打開war文件,或者強行解壓war文件
使用jar命令與winrar軟件的區別在於前者在壓縮文件的同時會生成MetaINF文件夾,內包含MANIFEST.MF文件。

本文出自 “夢想照進現實” 博客,請務必保留此出處http://lookingdream.blog.51cto.com/5177800/1951192

jar包和war包的介紹和區別