花5分钟过一遍jar包和war包的区别,以后都不会再迷茫
做Java開發,jar包和war包接觸的都比較多。
今天,小編把兩者的聯系好好梳理下,花5分鐘過一遍以后不再迷茫,你值得擁有:
一、概念
1. jar包:jar包是類的歸檔文件,與平臺無關的文件格式,它允許將許多文件組合成一個壓縮文件。JAR 文件格式以流行的 ZIP 文件格式為基礎。但與 ZIP 文件不同的是,JAR 文件不僅用于壓縮和發布,而且還用于部署和封裝庫、組件和插件程序,并可被像編譯器和 JVM 這樣的工具直接使用;
簡單來說,jar包就是別人已經寫好的一些類,然后對這些類進行打包。可以將這些jar包引入到你的項目中,可以直接使用這些jar包中的類和屬性,這些jar包一般放在BOOT-INF文件夾的lib目錄下。
2. war包:war包是JavaWeb程序打的包,war包里面包括寫的代碼編譯成的class文件,依賴的包,配置文件,所有的網站頁面,包括html,jsp等等。一個war包可以理解為是一個web項目,里面是項目的所有東西。
簡單來說,war是一個可以直接運行的web模塊,通常用于網站,打成包部署到容器中。以Tomcat來講,將war包放置在其\webapps\目錄下,然后啟動Tomcat,這個包就會自動解壓,就相當于發布了。
二、目錄結構
jar包里的com里放的就是class文件,配置文件,但是沒有靜態資源的文件(index.jsp),大多數 JAR 文件包含一個 META-INF 目錄,它用于存儲包和擴展的配置數據,如安全性和版本信息;
war包中的文件按照一定目錄結構來組織,和項目的文件結構保持一致。其根目錄下包含有html和jsp文件,或者包含有這兩種文件的目錄。(META-INF和jar包作用一樣)WEB-INF目錄下含有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的servlet類和jsp,或者servlet所依賴的其他類(如JavaBean),通常這些所依賴的類也可以打包成jar包放在WEB-INF下的lib目錄下。
三、根本區別
WAR文件代表了一個Web應用程序,把WAR文件作為部署單元來使用,而JAR是類的歸檔文件。
雖然WAR文件和JAR文件的文件格式是一樣的,并且都是使用jar命令來創建,但就其應用來說,WAR文件和JAR文件是有根本區別的。JAR文件的目的是把類和相關的資源封裝到壓縮的歸檔文件中,而對于WAR文件來說,一個WAR文件代表了一個Web應用程序,它可以包含 Servlet、HTML頁面、Java類、圖像文件,以及組成Web應用程序的其他資源,而不僅僅是類的歸檔文件。
四、使用場景
五、部署項目
(篇幅原因,打包方法不介紹了,相關博客很多,大家可以自行百度)
- 部署普通的Spring項目用“war”包就可以,下面展示war包部署在Tomcat中運行方法:
- 首先需要在虛擬機安裝一個Tomcat;
- 將編譯器打好的war包復制到Tomcat下的webapps的文件夾內;
- 在Tomcat的bin目錄下,運行 ./startup.bat ,啟動Tomcat,就相當于發布了項目。
部署SpringBoot項目用“jar”包就可以,因為SpringBoot內置tomcat,下面展示jar包部署方法:(我的jar包名稱為myjob.jar)
- 查看進程:ps -ef | grep myjob.jar;
- 殺死進程:kill -9 進程號;
- 移除舊的jar包,將新的jar包復制進目錄(通常放在/home目錄下);
- 啟動程序:nohup java -jar myjob.jar &;
- 實時查看日志:tail -1000f nohup.out。
總結
以上是生活随笔為你收集整理的花5分钟过一遍jar包和war包的区别,以后都不会再迷茫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM史上最最最完整深入解析,不看后悔一
- 下一篇: 分布式事务科普(终结篇)