当前位置: 首页 > 面试题库 >

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

颜华池
2023-03-14
问题内容

这些天,我在学习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文件。

预先感谢您的帮助。


问题答案:

.NET程序集与java .jar一样吗?

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

.dll包含已编译的IL代码,而.jar包含已编译的.class / byte代码文件?

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

他们说资源,我们在这里谈论什么资源? 图片,.txt文件等或全部可能?

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

我检查了AWS(适用于Java的Amazon Web Service API),并且看到了三个.jar文件,它们分别是:aws-java-
sdk-1.1.1.jar,aws-java-sdk-1.1.1-javadoc.jar, aws-java-sdk-1.1.1-sources.jar

上述包装相当普遍。有时人们使用 .jar 作为 .zip
的替代文件扩展名。我发现这种做法令人困惑,但这并不少见,在这种情况下,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。

当我想导入Java库时,是否总是需要导入.jar文件?

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

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

当我要导出自己的Java库时,是否需要导出为.jar文件

这是标准的,是的。



 类似资料:
  • 本文向大家介绍文件和文件夹之间的区别,包括了文件和文件夹之间的区别的使用技巧和注意事项,需要的朋友参考一下 文件 文件可以描述为一组相关的数据/信息,并存储在辅助存储设备上。文件可以是数据/信息文件或程序文件,并且可以包含任何格式的数据。例如,文本文件,音频文件,可执行程序文件等。 文件夹 文件夹是用来存放文件的容器。文件夹也可以具有子文件夹。 以下是文件和文件夹之间的重要区别。 序号 键 文件

  • 问题内容: java类文件和jar文件有什么区别? 问题答案: Jar文件是一个包含一个或多个Java类文件的Zip存档。这使得使用库(由多个类组成)更加方便。目录和Jar文件被添加到类路径,并且在运行时可用于在其中找到特定的类。

  • 问题内容: 我想知道使用可运行的jar文件创建将库从eclipse提取和打包成jar文件之间的区别。 如果我的程序(可运行的jar)使用需要这些外部库(jar)的其他类,我应该选择什么? 问题答案: 如果要将jar放入生成的jar文件中,则可以使用打包方法。例如,如果您使用的是Apache库或其他一些第三方的jar,则可能需要将这些jar保存在生成​​的jar中。在这种情况下,请使用包装。 “将所

  • 本文向大家介绍头文件和库之间的区别,包括了头文件和库之间的区别的使用技巧和注意事项,需要的朋友参考一下 在任何语言(例如C,C#,Java或任何其他编程语言)的编程中,头文件和库都结合并提供一些特定的API及其功能,以便在主文件中使用或使用。因此,头文件和库都被合并并用作单个单元,我们无法区分它们,因为它们不在同一上下文中。 但是基于文件的性质,我们可以区分头文件和库,如下所示: 序号 键 头文件

  • 问题内容: 使用 和运行Java应用程序有什么区别?在运行Java应用程序时,其中一个优先于另一个吗?我的意思是,对于JVM(根据它们的机器资源使用情况),这些方法中的哪一种更昂贵? 哪一种会导致JVM在尝试运行应用程序时产生更多线程? 问题答案: 我更喜欢第一个版本来启动Java应用程序,只是因为它的陷阱少了(“欢迎使用classpath hell”)。第二个需要一个可执行的jar文件,并且必须

  • 使用 和运行Java应用程序有什么区别?在运行Java应用程序时,它们中的一个比另一个更好吗?我的意思是,对于JVM(根据它们的机器资源使用情况)来说,这些方法中哪一种更昂贵? 哪一个会导致JVM在尝试运行应用程序时生成更多的线程?