聊一聊 JAR 文件和 MANIFEST.MF

本文详细介绍了JAR文件的基本概念、格式,特别是可执行JAR和MANIFEST.MF的作用。通过示例解析了普通JAR与可执行JAR的差异,并展示了如何读取MANIFEST.MF文件,强调了JAR在Java开发中的重要性。
摘要由CSDN通过智能技术生成

在 JAVA 语言这个圈子里面摸爬滚打,除了对于语言层面和框架层面的学习之外,有一些东西它一直存在,但是确没有对它们有足够的重视,因为都觉得它是理所当然,比如 JAR 是个什么?

提到 JAR,最先可能想到的就是依赖,比如 fastjson.jar ,它可以作为依赖在项目中来引用,但是不能通过 java -jar 来执行,这种就是非可执行的 JAR。另外一种,比如我们项目打包之后生成的 JAR (当然也可能是 war),我们可以通过 java -jar 来运行程序,我们把它称之为可执行的 JAR。

JAR 作用大体可以分为以下几种:

  • 用于发布和使用类库
  • 作为应用程序和扩展的构建单元
  • 作为组件、applet 或者插件程序的部署单位
  • 用于打包与组件相关联的辅助资源

(想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)

基本概念

JAR 文件是一种归档文件,以 ZIP 格式构建,以 .jar 为文件扩展名。用户可以使用 JDK 自带的 jar 命令创建或提取 JAR 文件。也可以使用其他 zip 压缩工具,不过压缩时 zip 文件头里的条目顺序很重要,因为 MANIFEST 文件常需放在首位。JAR 文件内的文件名是 Unicode 文本。

JAR 文件(Java 归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的 Java 类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发 Java 平台应用软件或库。

以上来自维基百科

JAR 文件格式提供了许多优势和功能,其中很多是传统的压缩格式如 ZIP 或者 TAR 所没有提供的。它们包括:

  • 安全性:可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。
  • 减少下载时间:如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。
  • 压缩:JAR 格式允许您压缩文件以提高存储效率。
  • 传输平台扩展。Java 扩展框架 (Java Extensions Framework) 提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR 文件打包的 (Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子 )。
  • 包密封:存储在 JAR 文件中的包可以选择进行 密封,以增强版本一致性和安全性。密封一个包意味着包中的所有类都必须在同一 JAR 文件中找到。
  • 包版本控制:一个 JAR 文件可以包含有关它所包含的文件的数据,如厂商和版本信息。
  • 可移植性:处理 JAR 文件的机制是 Java 平台核心 API 的标准部分。

JAR 文件格式

这里分别给出两个 JAR 的解压之后的示例

普通的 JAR 解压之后的文件目录

以 fastjson 为例:

.
├── META-INF
│   ├── LICENSE.txt
│   ├── MANIFEST.MF
│   ├── NOTICE.txt
│   ├── maven
│   │   └── com.alibaba
│   │       └── fastjson
│   │           ├── pom.properties
│   │           └── pom.xml
│   └── services
│       ├── javax.ws.rs.ext.MessageBodyReader
│       ├── javax.ws.rs.ext.MessageBodyWriter
│      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值