.jar和.dll文件之间的区别

这些天,我在学习Java,并且在.NET上花费了很多时间,因此当我要导出或导入库时,它们通常是.dll格式,在.Net环境中称为汇编,并且已编译为IL。他们可以以任何方式拥有图像,xml,音频和声音之类的资源。

我也想知道Java中的相同过程。我已经看过文档,但实际上它们使我有些困惑,为了弄清楚事情,我需要您的帮助。

  1. .NET Assembly与Java .jar是一样的东西吗?
  2. .dll包含已编译的IL代码,而.jar包含已编译的.class / byte代码文件?
  3. 他们说资源,我们在这里谈论什么资源?图片,.txt文件等或全部可能?

  4. 我检查了AWS(适用于Java的Amazon Web Service API),然后看到了三个.jar文件,它们分别是

    1. aws-java-sdk-1.1.1.jar
    2. aws-java-sdk-1.1.1-javadoc.jar
    3. aws-java-sdk-1.1.1-sources.jar

并且它们包含.class文件-

html格式的Java文档和仍未编译的.java文件。因此,我意识到.jar不仅包含编译后的字节码(.class)以及其他内容。

  1. 当我想导入Java库时,是否总是需要导入.jar文件?
  2. 当我要导出自己的Java库时,是否需要导出为.jar文件。

预先感谢您的帮助。

回答:

他们扮演着相同的角色,是的。

是。尽管JAR只是zip文件(您可以在自己喜欢的Zip工具中打开它们),所以它们实际上可以包含几乎所有内容。

JAR中允许使用任何文件类型。您的Java代码可以通过例如getResourceAsStream或getResource访问jar中文件的内容。显然,JAR中的.class文件是特殊处理的(作为字节码)。

上述包装相当普遍。有时人们使用 作为

的替代文件扩展名。我发现这种做法令人困惑,但这并不少见,在这种情况下,Amazon已经做到了。我认为,随着Maven的推出,这种做法变得越来越普遍,Maven将参考源代码存储在名为.jar的文件中。

aws-java-sdk-1.1.1.jar- 这是编译和执行所需的唯一文件。它包含库运行所需的类(.class文件)和资源。

aws-java-sdk-1.1.1-sources.jar-

这只是一个zip文件,其中包含该库的源代码(.java文件)。无需编译或执行。提供它是为了帮助您解决使用库时可能遇到的问题。您可以解压缩该文件并从硬盘驱动器中读取源代码。但是,您的IDE可能可以通过创建主库JAR的“源附件”直接使用此文件。通过在IDE中设置此library->

source关联,当您在库类上使用IDE的“转到定义”功能时,您的IDE将能够向您显示该库的源代码。

aws-java-sdk-1.1.1-javadoc.jar-

这只是一个zip文件,其中包含该库的JavaDoc。同样,没有必要进行编译或执行。JavaDoc只是HTML,因此您可以解压缩该文件并直接从硬盘驱动器读取JavaDoc

HTML。但是,大多数IDE都可以在主库中创建一个“

javadoc附件”,这使您可以从IDE中为该库提取上下文相关的JavaDoc。实际上,大多数IDE都可以从-

sources.jar即时生成JavaDoc,因此我很少再使用javadoc jar。

通常称为“将JAR添加到类路径”,但是可以。每当您构建或执行时,您几乎总是需要通过构造类路径来帮助Java查找正在使用的所有JAR。通常,与.NET中使用DLL相比,使用JAR和类路径是一个更加手动和明确的过程。例如:Java没有.NET的“全局程序集缓存”的直接等效项;同样,香草Java不会自动从工作目录中加载.jars。

还有一些其他技术可以创建更“自动”的感觉类路径,但是它们是高级的:例如,Manifest.MF类路径是可能的-但这种方法不方便使用,因为它很脆弱。从Java

6开始,Java对在classpath中使用通配符的支持有限。

这是标准的,是的。

以上是 .jar和.dll文件之间的区别 的全部内容, 来源链接: utcz.com/qa/431430.html

回到顶部