jar包和war包的区别
1. jar包
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,为J2EE应用程序创建的jar文件是EAR文件(企业jar文件)。JavaSE程序可以打包成Jar包(J其实可以理解为Java)。
JAR 文件格式以流行的ZIP文件格式为基础。与ZIP文件不同的是,JAR文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可以被 像编译器和JVM这样的工具直接使用。在JAR中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的JAR。
简单来说,Java编译好之后生成class文件,但如果直接发布这些class文件的话会很不方便,所以就把许多的class文件打包成一个jar,jar中除了class文件还可以包括一些资源和配置文件,通常一个jar包就是一个java程序或者一个java库。可以将这些jar包引入到你的项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在lib目录下。
2. war包
war(Web application Archive),与jar基本相同**,它通常表示这是一个Java的Web应用程序的包**,是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。tomcat这种Servlet容器会认出war包并自动部署。
war包中的文件按照一定目录结构来组织。其根目录下包含有html 和jsp 文件,或者包含有这两种文件的目录,另外还有WEB-INF目录。通常在WEB-INF目录下含有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes 目录下则包含编译好的servlet类和jsp,或者servlet 所依赖的其他类(如JavaBean)。通常这些所依赖的类也可以打包成jar包放在WEB-INF下的lib目录下。
简单来说,war包是JavaWeb程序打的包,war包里面包括写的代码编译承德class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等。一个war包可以理解为一个web项目,里面是项目的所有东西。
3. Ear 文件
Ear文件(扩展名为 Ear,Enterprise Application Archive)包含全部企业应用程序。在这种情况下,一个企业应用程序被定义为多个jar 文件、资源、类和Web应用程序的集合。
4. 区别
WAR文件代表了一个Web应用程序,JAR是类的归档文件。
jar时java普通项目打包,通常是开发时要引用通用类,打成jar包便于存放管理。当你使用某些功能时就需要这些jar包的支持,需要导入jar包。war是java web 项目打包,web网站完成后,打成war包部署到服务器,目的是为了节省资源,提供效率。
JAR | WAR | EAR | |
---|---|---|---|
全称 | Java Archive file | Web Archive file | Enterprise Archive file |
包含内容 | class、properties文件,是文件封装的最小单元;包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等 | Servlet、Jsp页面、Jsp标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等 | 除了包含JAR、WAR以外,还包括EJB组件 |
部署文件 | application-client.xml | web.xml | application.xml |
容器 | 应用服务器(application servers) | 小型服务程序容器(servlet containers) | EJB容器(EJB containers) |
级别 | 小 | 中 | 大 |