Java的jar包和war包的异同

Java的jar包和war包的异同最近思考了一下jar包和war包的异同,发现一篇文章写的非常不错,翻译在此。一、概述本文主要讨论Java中war包和jar包的不同。首先,我们先看不同包的结构,然后对比他们的不同。二、JAR包jar包的文件拓展名为:.jar,包含库,资源和元数据文件。本质上,jar包是一个包含多个.class文件,Java库的和应用的资源文件的压缩包。这是一个简单的jar…

大家好,又见面了,我是你们的朋友全栈君。

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

英文原文:https://www.baeldung.com/java-jar-war-packaging

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142500.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)0背景1.手机USB接口通信特点-1.1使用方便-1.2通用性强-1.3速度快-1.4可采用总线供电2.手机USB接口通信原理-2.1常见手机USB接口-2.2通信过程-2.3体系架构2.4软件层次3.手机USB接口与外设通信方案-3.1USB(手机)USB(外设)-3.1.1USBHost简述

  • sat错题分数换算表_awing

    sat错题分数换算表_awing给定 n 个还未赋值的布尔变量 x1∼xn。现在有 m 个条件,每个条件的形式为 “xi 为 0/1 或 xj 为 0/1 至少有一项成立”,例如 “x1 为 1 或 x3 为 0”、“x8 为 0 或 x4 为 0” 等。现在,请你对这 n 个布尔变量进行赋值(0 或 1),使得所有 m 个条件能够成立。输入格式第一行包含两个整数 n,m。接下来 m 行,每行包含四个整数 i,a,j,b,用来描述一个条件,表示 “xi 为 a 或 xj 为 b”。输出格式如果问题有解,则第一行输出 POSS

  • mysql 修改隔离级别_设置mysql隔离级别

    mysql 修改隔离级别_设置mysql隔离级别1.查看当前会话隔离级别select@@tx_isolation;2.查看系统当前隔离级别select@@global.tx_isolation;3.设置当前会话隔离级别setsessiontransactionisolatinlevelrepeatableread;4.设置系统当前隔离级别setglobaltransactionisolationlevelrepeata…

  • 【ThinkingInJava】6、测试自己的输出类库

    【ThinkingInJava】6、测试自己的输出类库/***书本:《ThinkingInJava》*功能:定制工具库,用于System.out.println的简化*文件:Print.java*时间:2014年10月7日19:45:31*作者:cutter_point*/packagenet.mindview.util;importjava.io.*;importjavax.print.attribute.

  • docker 命令大全_常用docker命令

    docker 命令大全_常用docker命令文章目录Docker——Docker常用命令1、后台启动2、查看日志3、查看进程4、查看元数据5、在运行的容器中执行命令6、连接到正在执行的容器7、数据拷贝Docker——Docker常用命令1、后台启动语法:dockerrun-d镜像名使用实例:以后台方式运行一个容器:dockerrun-dcentos注意:当我们以后台方式启动一个容器时,就必须要有一个前台进程,否则docker容器发现没有应用,就会自动停止。如上图所示,我们在以后台方式运行一个容器后,再查看当

  • 关于迁移学习「建议收藏」

    作者:刘诗昆链接:https://www.zhihu.com/question/41979241/answer/123545914来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。2018.1.二次更新/重点介绍迁移学习和其相关方向,完整删除之前的答案,并重新规整了迁移学习内容和代表性文章。什么是/为什么要迁移学习?迁移学习(T

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号