网站地图
hnsjyk999.com
三九百科 包罗万象
JAR(计算机文件格式) 发布于:

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

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

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

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

安全性 可以对 JAR 文件内容加上数字化签名。这样,能够识别签名的工具就可以有选择地为您授予软件安全特权,这是其他文件做不到的,它还可以检测代码是否被篡改过。

减少下载时间 如果一个 applet 捆绑到一个 JAR 文件中,那么浏览器就可以在一个 HTTP 事务中下载这个 applet 的类文件和相关的资源,而不是对每一个文件打开一个新连接。

压缩 JAR 格式允许您压缩文件以提高存储效率。

传输平台扩展 Java 扩展框架(Java Extensions Framework)提供了向 Java 核心平台添加功能的方法,这些扩展是用 JAR 文件打包的(Java 3D 和 JavaMail 就是由 Sun 开发的扩展例子)。

存储在 JAR 文件中的包可以选择进行密封,以增强版本一致性和安全性。密封一个包意味着包中的所有类都必须在同一 JAR 文件中找到。

一个 JAR 文件可以包含有关它所包含的文件的数据,如厂商和版本信息。

处理 JAR 文件的机制是 Java 平台核心 API 的标准部分。

一个 JAR 文件可以用于

□ 用于发布和使用类库

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

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

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

可执行的JAR

一个可执行的jar 文件是一个自包含的 Java 应用程序,它存储在特别配置的JAR 文件中,可以由 JVM 直接执行它而无需事先提取文件或者设置类路径。要运行存储在非可执行的 JAR 中的应用程序,必须将它加入到您的类路径中,并用名字调用应用程序的主类。但是使用可执行的 JAR 文件,我们可以不用提取它或者知道主要入口点就可以运行一个应用程序。可执行 JAR 有助于方便发布和执行 Java 应用程序。

创建可执行 JAR

创建一个可执行 JAR 很容易。首先将所有应用程序代码放到一个目录中。假设应用程序中的主类是 com.mycompany.myapp.Sample 。您要创建一个包含应用程序代码的 JAR 文件并标识出主类。为此,在某个位置(不是在应用程序目录中)创建一个名为 manifest 的文件,并在其中加入以下一行:

Main-Class: com.mycompany.myapp.Sample //结尾键入回车

然后,像这样创建 JAR 文件:

jar cmf manifest ExecutableJar.jar application-dir

所要做的就是这些了 -- 可以用 java -jar 执行这个 JAR 文件 ExecutableJar.jar。

一个可执行的 JAR 必须通过 manifest 文件的头引用它所需要的所有其他从属 JAR。如果使用了 -jar 选项,那么环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略。

启动可执行 JAR

既然我们已经将自己的应用程序打包到了一个名为 ExecutableJar.jar 的可执行 JAR 中了,那么我们就可以用下面的命令直接从文件启动这个应用程序:

java -jar ExecutableJar.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 文件的公共签名。

JAVA手机电子书的格式一般为JAR和JAD,其中JAD文件是一个说明文件,描述jar文件的信息。部分手机不支持直接读取JAR(这是手机安全策略引起的),这时则需要JAD文件。这样的手机只在少数。JAVA运行在JAVA虚拟机之上,也就是JVM,而很多低端机型也可以支持JAVA,因此就注定了JAVA格式的适用范围相当广泛。由于JAVA可以提供丰富的交互行为,因此在支持图文,多媒体方面做的最为优秀,另外,阅读器和文本被打包在一起(jar),因此只需安装即可阅读,无需另外安装阅读器或者下载电子书。

JAVA平台由于在手机上广泛应用,使得扩展名为jar的Kjava游戏成为手机游戏市场上最大的家族,直接传入手机直接安装即可。

众所周知,JAVA是一种跨平台的程序设计语言。由于其高可移植性、简单、可靠、安全等诸多优异性能,已经成为最受欢迎、最有影响力的编程语言之一。

JAVA程序的短小精干和其跨平台的先天特点,使其成为众多开放或半开放式手机扩展自身功能的最佳选择。因此市场上流行的手机大多支持JAVA应用程序了。

为了用 JAR 文件执行基本的任务,要使用作为Java Development Kit 的一部分提供的 Java Archive Tool ( jar 工具)。用 jar 命令调用 jar 工具。表 1 显示了一些常见的应用:

常见的 jar 工具用法

功能

命令

用一个单独的文件创建一个 JAR 文件

jar cf jar-file input-file...

用一个目录创建一个 JAR 文件

jar cf jar-file dir-name

创建一个未压缩的 JAR 文件

jar cf0 jar-file dir-name

更新一个 JAR 文件

jar uf jar-file input-file...

查看一个 JAR 文件的内容

jar tf jar-file

提取一个 JAR 文件的内容

jar xf jar-file

从一个 JAR 文件中提取特定的文件

jar xf jar-file archived-file...

运行一个打包为可执行 JAR 文件的应用程序

java -jar app.jar


相关文章推荐:
软件 | 软件包 | 文件格式 | 元数据 | 应用软件 | | ZIP格式 | 文件扩展名 | JDK | Java | winrar | 插件程序 | 编译器 | 压缩格式 | 软件安全 | 事务 | 压缩文件 | 文件打包 | 插件程序 | 入口点 | 环境变量 | MANIFEST.MF | 手机电子书 | 虚拟机 | 阅读器 | 程序设计语言 |