jar包和war包的区别
1、jar包
JAR包是类的归档文件,与平台无关的文件格式,其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。
JAR以ZIP文件格式为基础,与ZIP不同的是,JAR不仅用于压缩和发布,还用于部署和封装库、组件和插件程序,可以被编译器和JVM直接使用。可以将这些jar包引入到自己的项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在lib目录下。
2、war包
war包是JavaWeb程序打的包,是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。里面包含我们web程序需要的一些东西,其中包括web.xml的配置文件,前端的页面文件,以及依赖的jar。
以tomcat为例,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。
3、区别
3.1 从概念上理解
- JAR包是类的归档文件
- war包是JavaWeb程序打的包。
3.2 从解压后的目录结构看
- jar包:
①jar包里的com里放的就是class文件
②配置文件,但是没有静态资源的文件
③大多数 JAR 文件包含一个 META-INF 目录,它用于存储包和扩展的配置数据,如安全性和版本信息 - war包
①WEB-INF里放的class文件和配置文件
②META-INF和jar包作用一样
③war包里还包含静态资源的文件
3.3 总结
- war包和项目的文件结构保持一致,jar包则不一样
- jar包里没有静态资源的文件(index.jsp)
- 一个web应用程序的目录和文件很多,想要将这个web应用程序部署到另一台机器上就很麻烦,这时可以将web应用程序打包成WAR文件,利用这个文件可以把servlet类文件和相关的资源集中在一起进行发布。这个过程中,web应用程序就不是按照目录层次结构惊醒部署的,而是把WAR文件作为部署单元来使用。一个WAR文件就是一个web应用程序,建立WAR文件就是把整个web应用程序压缩起来,指定一个.war扩展名。
- 虽然WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令来创建,但就其应用来说,WAR文件和JAR文件是有根本区别的。JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件
- 部署普通的spring项目用war包就可以,部署springboot项目用jar包就可以,因为springboot内置tomcat