標籤:

tar包和jar包和war包的區別?

在myeclipse中先把自己寫的類打成jar包,然後再伺服器端會把這個jar包和一些配置文件再打一個tar包。在指定目錄下再解壓,為什麼要有打tar包這個步驟。想問下tar包的作用,隨便講解下jar包,tar包,war包的區別吧!!


相同點是都可以把多個文件打包到一個文件,不同點是 jar是個壓縮文件,而tar只打包,不壓縮,所以tar還要配合其他壓縮工具來壓縮,比如tar.bz2,tar.gz 之類的就是在tar的基礎上進行的壓縮格式


tar:tar是*nix下的打包工具,生成的包通常也用tar作為擴展名,其實tar只是負責打包,不一定有壓縮,事實上可以壓縮,也可以不壓縮,通常你看到xxxx.tar.gz,就表示這個tar包是壓縮的,並且使用的壓縮演算法是GNU ZIP,而xxxx.tar.bz2就表示這個包使用了bzip2演算法進行壓縮,當然這樣的命名只是一種慣例,並非強制。簡單地說,tar就僅是打包。

jar:即Java Archive,Java的包,Java編譯好之後生成class文件,但如果直接發布這些class文件的話會很不方便,所以就把許多的class文件打包成一個jar,jar中除了class文件還可以包括一些資源和配置文件,通常一個jar包就是一個java程序或者一個java庫。

war:Web application Archive,與jar基本相同,但它通常表示這是一個Java的Web應用程序的包,tomcat這種Servlet容器會認出war包並自動部署。


tar是通用的另一種打包格式,為了部署到伺服器時方便。而jar是java app server識別的java部署格式,其實是Zip文件,只是內部的文件有規範。war是專用於web app的jar。另外還有用於enterprise app的ear後綴。


jar包和war包的區別:

war是一個web模塊,其中需要包括WEB-INF,是可以直接運行的WEB模塊。而jar一般只是包括一些class文件,在聲明了Main_class之後是可以用java命令運行的.

它們都是壓縮的包,拿Tomcat來說,將war文件包放置它的webapps目錄下,啟動Tomcat,這個包可以自動進行解壓,也就是你的web目錄,相當於發布了。

war包:是做好一個web應用後,通常是網站,打成包部署到容器中。

jar包:通常是開發時要引用通用類,打成包便於存放管理。

ear包:企業級應用,通常是EJB打成ear包。

所有的包都是用jar打的,只不過目標文件的擴展名不一樣。

WAR是Sun提出的一種Web應用程序格式,與JAR類似,也是許多文件的一個壓縮包。這個包中的文件按一定目錄結構來組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會有一個WEB-INF目錄,這個目錄很重要。通常在WEB-INF目錄下有一個web.xml文件和一個classes目錄,web.xml是這個應用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當然也可以放到系統的CLASSPATH中,但那樣移植和管理起來不方便.


tar包的作用是壓縮下,類似於你要搬一堆東西先用一個袋子包裝好,到目的地之後,拆包。

war包用於web工程,作用與tar包類似。jar包,將多個class文件壓縮成一個文件,可作為一個庫供其他項目引用。


推薦閱讀:

Xcode 和 Android Studio,Eclipse等安卓開發工具比怎麼樣?
有沒有在雲端的IDE?比如一個遠程的Eclipse之類的?
eclipse如何快速新建一個Activity?
有的 ide 開源且功能完善,如ibm的eclipse,為什麼總有人抱著 vim 不放?
eclipse直接導入反編譯代碼會出現什麼問題,如何修正?

TAG:Java | Eclipse |