最近思考了一下jar包和war包的异同,发现一篇文章写的非常不错,翻译在此。
一、概述
本文主要讨论Java中war包和jar包的不同。
首先,我们先看不同包的结构,然后对比他们的不同。
二、JAR包
jar包的文件拓展名为: .jar ,包含库,资源和元数据文件。
本质上,jar包是一个包含多个 .class 文件,Java库的和应用的资源文件的压缩包。
这是一个简单的jar包结构:
META-INF/ MANIFEST.MF com/ baeldung/ MyApplication.class
META-INF/MANIFEST.MF 包含额外存储在压缩包中的元数据。
我们可以用jar命令和maven构建工具来创建jar包。
三、WAR包
WAR(Web Application Archive)表示web应用包或者web应用资源。
拓展名为:.war 。用来打包web应用程序,用来发布到servlet或者jsp容器中。
META-INF/ MANIFEST.MF WEB-INF/ web.xml jsp/ helloWorld.jsp classes/ static/ templates/ application.properties lib/ // *.jar files as libs
包里有 META-INF目录MANIFEST.MF 文件包含了web包的很多有用信息,这个包是私有的,外部是无法访问的。
里面也包含了公开的WEB-INF目录,包含了web静态资源,HTML页面,图片,js文件等。另外还包含了web.xml配置文件,servlet类和依赖的库。
我们也可以像jar包一样通过命令行或maven构建工具来打war包。
4. 关键的不同
那么他们之间的关键不同点有哪些?
第一个最明显的不同是文件的拓展名。
第二个明显的不同是目的,jar包可以打包各种文件,可以当做类库,插件或者其他任意应用。而war文件只用在web应用中。
第三,他们的结构也不同。war包有预定义的结构WEB-INF和META-INF目录。
5、 结论
本文比较了jar和war文件类型。他们都是压缩文件,他们也有很多不同之处。
如果觉得本文对你有帮助,欢迎点赞评论,欢迎关注我,我将努力创作更多更好的文章。