JAR文件揭密:探索JAR文件格式的强大功能

JAR 文件是什么?

JAR 文件格式以流行的 ZIP 文件格式为基础,用于将许多个文件聚集为一个文件。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件 程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

一个 JAR 文件可以用于:

用于发布和使用类库

作为应用程序和扩展的构建单元

作为组件、applet 或者插件程序的部署单位

用于打包与组件相关联的辅助资源

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 工具 )在默认情况下压缩文件。未压缩的 JAR 文件一般可 以比压缩过的 JAR 文件更快地装载,因为在装载过程中要解压缩文件,但是未压缩的文件在 网络上的下载时间可能更长。

META-INF 目录

大多数 JAR 文件包含一个 META-INF 目录,它用于存储包和扩展的配置数据,如安全性 和版本信息。Java 2 平台识别并解释 META-INF 目录中的下述文件和目录,以便配置应用程 序、扩展和类装载器:

MANIFEST.MF。这个 manifest 文件定义了与扩展和包相关的数据。

INDEX.LIST。 这个文件由 jar 工具的新选项 -i 生成,它包含在应用程序或者扩展中定 义的包的位置信息。它是 JarIndex 实现的一部分,并由类装载器用于加速类装载过程。

xxx.SF。 这是 JAR 文件的签名文件。占位符 xxx标识了签名者。

xxx.DSA。 与签名文件相关联的签名程序块文件,它存储了用于签名 JAR 文件的公共签 名。

时间: 2025-01-29 22:35:45

JAR文件揭密:探索JAR文件格式的强大功能的相关文章

使不能运行的JAR文件可以使用java -jar运行

摘要 本文展示如何将不可运行的JAR变为可运行的,并且不用直接操作manifest文件.你将学会开发一个短小的程序使得任何JAR文件都可以使用java -jar命令或者通过在像Windows上双击而运行. 你可以将一个应用的所有类和资源打包到一个JAR文件中.实际上,那就是jar文件的一个目的.另外一个目的是让用户可以非常容易的执行存储在JAR文件中的应用,那么为什么当他们可以成为一等公民而和本机可执行程序等同的时候,我们为什么要让他们只承担包的功能而成为java世界中的二等公民呢? 要执行一个

JAVA 中 jar 文件的编写和应用

JAVA中jar文件的编写和应用     我想JAVA的爱好者,尤其是初学者大都有过这样的经历,就是喜欢JAVA编程语言(这个人的情况可能不一样),但是有时候总会觉得JAVA的优点便是她的"致命"的缺点.大家的信念依旧是"一次编译,到处运行"但是就是因为至一点JAVA失去了好多,我们也失去了好多.也许大家都知道,现在业界最推崇的还是微软的技术微软的产品..net/c#/.vb/vb.net还是最流行的语言,最受欢迎的软件开发语言.因为这些语言都太好学太好用了.不像J

再议JAR文件

1.将应用程序压缩为jar文件 可以使用jar.exe把一些文件压缩成一个JAR文件,来发布我们的应用程序.我们可以把java应用程序中涉及到的类压缩成一个JAR文件,比如Tom.jar,然后使用java解释器(使用参数-jar)执行这个压缩文件,或用鼠标双击该文件,执行这个压缩文件. java -jar Tom.jar 假设应用程序中有两个类A.B,其中A是主类,生成一个JAR文件的步骤如下: (1)首先,用文本编辑器(比如Windows下的记事本)编写一个清单文件Mymoon.mf: Man

用命令行将Java程序打包为jar文件

如何把写好的Java程序打包为jar文件呢?有两种方式可以选择 1.命令行的方式: 打包 jar cf JAR文件名称 程序文件名称或者程序所在的文件夹 举例: jar cf MyApp.jar D:JavaProjectMyApp 查看一个jar文件的内容 jar tvf JAR文件名称 举例: jar tvf MyApp.jar 将一个jar文件解压缩 jar xf JAR文件名称 举例: jar xf MyApp.jar 往压缩包里面增加文件 jar xf JAR文件名称 添加的文件或者其

从Java的jar文件中读取数据的方法

  这篇文章主要介绍了从Java的jar文件中读取数据的方法,实例分析了java档案文件的相关操作技巧,需要的朋友可以参考下 本文实例讲述了从Java的jar文件中读取数据的方法.分享给大家供大家参考.具体如下: Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR 文件格式支持压缩.身份验证和版本,以及许多其它特性. 从 JAR 文件中得到它所包含

jar文件如何打开?

  jar文件是许多信息经过封装后形成的捆绑体.也就是一个压缩文件. JAR 文件格式提供了许多优势和功能,其中很多是传统的压缩格式如ZIP或者RAR所没有提供的,JAR文件还用于安排和封装库.组件和插件过程,并可被像编译器和 JVM 这么的工具直接利用.安装java软件就可以打开,具体方法是右键-打开方式-选择程序-找到装的java即可.

linux下用shell脚本启动可执行.jar文件并关闭的方法

话不多说,开始上代码,为了偷懒,代码只是截图了,感兴趣的朋友可以看了之后自己写,这样加深印象. 上面是小弟写的shell脚本.写的不好请见谅. 首先遇到的第一个坑 我在window下写的 然后道linux中执行,在linux死活都说俺的19行有错误,俺就不明白了,哪里有错,问了下别人,也说没错.突然有个高人问我在哪编写的,小弟回答在win下,他告诉俺执行下这个命令: dos2unix server.sh 然后小弟就执行了,说命令不存在,小弟只好安装这个,执行了以下命令 yum install d

从Java的jar文件中读取数据的方法_java

本文实例讲述了从Java的jar文件中读取数据的方法.分享给大家供大家参考.具体如下: Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR 文件格式支持压缩.身份验证和版本,以及许多其它特性. 从 JAR 文件中得到它所包含的文件内容是件棘手的事情,但也不是不可以做到.这篇技巧就将告诉你如何从 JAR 文件中取得一个文件.我们会先取得这个 JAR

将某一目录下所有的jar文件都加入到CLASSPATH当中的简便写法

将某一目录下所有的jar文件都加入到CLASSPATH当中的简便写法 引用: http://www.javaeye.com/topic/244?page=2 中将某一目录下所有的jar文件都加入到CLASSPATH的写法,比较长:)   Quake Wang 写道 代码 FOR %%i IN ("%HIBERN8IDE%/*.jar") DO CALL "setclasspath.bat" %%i      setclasspath.bat: 代码 SET _CLA