很多學(xué)習(xí) java 的小伙伴都聽(tīng)過(guò) jar 包,但未必聽(tīng)說(shuō)過(guò) war 包。小編學(xué)習(xí)了兩年的 java,也是在某次期末作業(yè)中老師要求打 war 包提交作業(yè)的時(shí)候才知道有這種東西,為此還對(duì)怎么打 war 包和 war 包怎么運(yùn)行困擾了許久。今天小編就來(lái)介紹一下什么是 war 包,jar 包和 war 包又有什么區(qū)別吧!
什么是 jar 包
jar 包全稱(chēng) Java Archive ,中文名叫 java 歸檔文件,這是一種與平臺(tái)無(wú)關(guān)的文件格式,它允許將許多文件組合成一個(gè)壓縮文件(是的,jar 包就是一種壓縮文件,甚至 jar 這個(gè)單詞就有罐子的意思,實(shí)際上 jar 包采用的也是 zip 的壓縮方式,只不過(guò)將文件后綴定義為 jar)。javaSE 程序可以打包成 jar 包。
jar 包雖然使用 zip 進(jìn)行壓縮和發(fā)布,但與 zip 壓縮不同,jar 文件還可以用來(lái)部署和封裝庫(kù),組件和插件程序,而且這樣的 jar 包是可以直接被編譯器和 JVM 直接使用的。
簡(jiǎn)單的講,zip 只是將代碼文件壓縮,打 jar 包不僅是文件壓縮,還將代碼中的類(lèi)進(jìn)行打包,這樣就可以讓別人直接進(jìn)行引入調(diào)用了。
什么是 war 包
war 包與 jar 包是很類(lèi)似的,不過(guò) war 包通常用于網(wǎng)站,它是一個(gè)可以直接運(yùn)行的 web 模塊。我們?cè)陂_(kāi)發(fā) web 項(xiàng)目一般都會(huì)使用一個(gè) webapp 文件夾來(lái)進(jìn)行開(kāi)發(fā),這個(gè)文件夾直接放在 Tomcat 的 webapps 文件夾下就可以啟動(dòng)該項(xiàng)目了。而 war 包,就是對(duì)這個(gè)文件夾進(jìn)行打包。
war 包是 Sun 提出的一種 web 應(yīng)用程序格式。它與 jar 類(lèi)似,是很多文件的壓縮包。war 包中的文件按照一定目錄結(jié)構(gòu)來(lái)組織。
一般其根目錄下包含有 html 和 jsp 文件,或者包含有這兩種文件的目錄,另外還有 WEB-INF 目錄。通常在 WEB-INF 目錄下含有一個(gè) web.xml 文件和一個(gè) classes 目錄。web.xml 是這個(gè)應(yīng)用的配置文件,而 classes 目錄下則包含編譯好的 servlet 類(lèi)和 jsp,或者 servlet 所依賴(lài)的其他類(lèi)(如 JavaBean)。通常這些所依賴(lài)的類(lèi)也可以打包成 jar 包放在 WEB-INF 下的 lib 目錄下。
區(qū)別
使用 jar 文件的目的是把類(lèi)和相關(guān)的資源封裝到壓縮的歸檔文件中以方便調(diào)用。而對(duì)于 war 文件來(lái)說(shuō),一個(gè) war 文件就是一個(gè) Web 應(yīng)用程序。它包含 Servlet、HTML 頁(yè)面、Java 類(lèi)、圖像文件,以及組成 Web 應(yīng)用程序的其他資源,而不僅僅是類(lèi)的歸檔文件。
簡(jiǎn)單的來(lái)說(shuō),jar 只是類(lèi)的歸檔文件,而 war 包是一個(gè)完整的 web 應(yīng)用程序。
如何打 war 包
war 包的打包也是通過(guò) jar 命令來(lái)實(shí)現(xiàn)的。使用如下命令即可打包
?jar cvf d:/test/myweb2.war.
?
- 其中?
cvf
?是命令參數(shù),表示生成一個(gè)文檔、顯示生成過(guò)程、指定生成的文件名。 - ?
d:/test/myweb2.war
? 為生成的文檔的存放路徑以及文件名。 - 最后一個(gè)點(diǎn)號(hào)表示要將當(dāng)前目錄中所有內(nèi)容打包。
使用一些開(kāi)發(fā)工具也可以打 war 包,比如 maven 項(xiàng)目就可以用 maven 打包。如果項(xiàng)目中用到了 ant,也可以用 ant 進(jìn)行 war 包的輸出和部署。類(lèi)似的工具還有 gradle 等等,小編就不一一介紹了。
使用 IDE 一般都會(huì)提供打包工具,它們可以簡(jiǎn)單的打好一個(gè) war 包(關(guān)注 W3C技術(shù)頭條,后續(xù)文章教你如何用 idea 和 eclipse 打 war 包)。
war 包怎么部署
war 包的部署是相當(dāng)簡(jiǎn)單的,只需要將 war 包放在 Tomcat 的 webapps 文件夾中,啟動(dòng) Tomcat,它就會(huì)自行解包運(yùn)行相應(yīng)的 web 項(xiàng)目。
小結(jié)
如果僅僅只是為了在本地運(yùn)行一個(gè) webapp 項(xiàng)目,使用 war 包好像是看不出有什么優(yōu)勢(shì),反而每次運(yùn)行都要打包顯得更麻煩了。但如果是要將項(xiàng)目部署在遠(yuǎn)程的服務(wù)器上,傳輸一個(gè) war 包和傳輸一個(gè)文件夾的區(qū)別就顯現(xiàn)出來(lái)了,所以學(xué)習(xí)使用 war 包對(duì)于日后從事 web 項(xiàng)目開(kāi)發(fā)是有一定必要性的。
以上就是關(guān)于 war 包怎么運(yùn)行以及 jar 包與 war 包的區(qū)別的全部?jī)?nèi)容了,更多編程小知識(shí),關(guān)注W3C技術(shù)頭條!