最近思考了一下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文件类型。他们都是压缩文件,他们也有很多不同之处。

 

如果觉得本文对你有帮助,欢迎点赞评论,欢迎关注我,我将努力创作更多更好的文章。