每日知识点:War包和Jar包区别

羌俊恩 社区创始人
运维领域优质创作者
博客专家认证
2023-09-09 11:14:03

War包(Web Application Archive)和Jar包(Java Archive,Java 归档文件)都是Java开发中的归档文件,主要有如下一些区别:

1)用途不同:War包是JavaWeb程序的打包,主要用于Web应用程序的部署,一个War包可以理解为就是一个完整的Web项目;而Jar包是java普通项目打包,通常是开发时要引用通用类,打成jar包便于存放管理,一般用于Java应用程序的打包和部署。对应的封包格式分别为:jar包扩展名为*.jar,war包扩展名为*.war。另外,jar包不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 jar中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 jar。通常开发时要引用通用类,打成jar包便于存放管理,当你使用某些功能时就需要这些jar包的支持,就可导入jar包。

2)包含内容不同:War包通常包含Web应用程序的所有文件,包括JSP、HTML、CSS、JavaScript、Servlet、JavaBean等,war包里的WEB-INF里放的class文件和配置文件,META-INF目录,还包含web相关的静态资源的文件,如web.xml的配置文件,前端的页面文件,以及依赖的jar;而Jar包则包含Java类、资源文件和库文件等,jar包里的com里放的就是class文件,配置文件,通常又把它称为类归档文件,即以类文件为主,相比war基本没有静态资源的文件;大多数JAR文件包含一个META-INF目录,用于存储包和扩展的配置数据,如安全性和版本信息。

3)目录结构不同:War包通常包含WEB-INF目录和META-INF目录,其中WEB-INF目录包含web.xml、classes目录和lib目录,META-INF目录包含MANIFEST.MF文件;而Jar包则通常只包含META-INF目录和Java类文件。


4)部署方式不同:War包一般需要部署到Web服务器中,例如Tomcat、WebLogic等,最常用的就是部署到tomcat的webapps目录下,直接启动tomcat即可启动WEB项目,这时这个war包就会自动解压,就相当于web项目对外发布了;而Jar包可以作为Java应用程序的独立运行文件,也可以作为库文件被其他Java应用程序调用。开发阶段不适合使用war包,因为在开发阶段,经常需要添加或删除Web应用程序的内容,更新 Servlet类文件,而每一次改动后,重新建立war包将是一件浪费时间的事情。在产品发布阶段,使用war文件比较合适的,因为在这个时候,几乎不需要再做什么改动了。而JAR包可直接通过内置Tomcat部署运行,不需要额外安装Tomcat。如需修改内置Tomcat的配置,只需要在SpringBoot的配置文件中配置。内置Tomcat没有自己的日志输出,全靠jar包应用输出日志,方便,快速,简单。

总之,War包和Jar包只是为适应不同的用途和场景,开发人员需要根据实际情况选择的归档文件类型。
 

...全文
166 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

97,688

社区成员

发帖
与我相关
我的任务
社区描述
欢迎各位小伙伴踊跃加入,将日常运维中遇到的问题贴出来,解决方案分享出来,或自己的博客关于运维的文章分享到这里,来一起营造一个运维的知识库,以提升运维工作更加高效快捷,减少重复造车轮的无限循环。
devops经验分享开源 企业社区 北京·西城区
社区管理员
  • 羌俊恩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

本社区:旨在推进运维云化知识库建设,为更多运维提供参考及经验交流;加入社区的同学,如果运维工作中遇到问题或最后得到解决,有劳凑空发帖,分享共建FAQ社区。

得到解决方案的同学,请积极为发帖的同学点赞、评论、能力范围内打赏激励。另外本社区采用游戏修仙角色作为鼓励,对不同贡献者授予对应“勋章”。

最后祝愿社区繁荣昌盛,此致敬礼!!!

试试用AI创作助手写篇文章吧