C# .jar和.dll文件之间的差异
这些天我在学习Java,我花了很多时间在.NET上,所以当我想导出或导入库时,它们通常是.dll格式的,在.NET环境中称为程序集,它们被编译成IL,并且它们可以拥有图像、XML、音频等资源 我想知道Java中也有同样的过程。我读过一些文件,但它们实际上让我有点困惑,为了澄清问题,我需要你们的帮助 问题:C# .jar和.dll文件之间的差异,c#,java,C#,Java,这些天我在学习Java,我花了很多时间在.NET上,所以当我想导出或导入库时,它们通常是.dll格式的,在.NET环境中称为程序集,它们被编译成IL,并且它们可以拥有图像、XML、音频等资源 我想知道Java中也有同样的过程。我读过一些文件,但它们实际上让我有点困惑,为了澄清问题,我需要你们的帮助 问题: .NET程序集与Java.jar是一样的吗 .dll包含已编译的IL代码,.jar包含已编译的.class/字节代码文件 他们说资源,我们这里说的是什么资源??图像、.txt文件等,还是所
提前感谢您的帮助。回答此特定问题
jar
只是一个“Java存档”文件。它可以包含您想要的任何内容,但最常用于分发库的二进制版本。它还可以用于分发可执行文件——双击JAR文件将启动应用程序,如果它是这样打包的
因此,可能很难判断特定的jar
文件的用途。例如,什么是aws-java-sdk-1.1.1-sources.jar
?。它是自动安装程序吗?压缩代码存档?没有阅读文档,这是任何人的猜测
Edit:举个例子,我刚刚下载了
jar
文件,假设它是库的二进制构建。但事实上,它包含安装程序应用程序。是一个.NET程序集还是一个Java.jar?
他们扮演同样的角色,是的
.dll包含已编译的IL代码,.jar包含已编译的.class/字节码文件?
对。虽然jar只是zip文件(您可以在自己喜欢的zip工具中打开它们),但它们实际上可以包含任何内容
他们说资源,我们这里说的是什么资源?图像、.txt文件等,或者所有这些都是可能的?
JAR中允许任何文件类型。您的Java代码可以通过访问jar中文件的内容,例如,或。显然,JAR中的类文件是经过特殊处理的(作为字节码)
我检查了AWS(Amazon Web Service API for Java),看到了三个.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的替代文件扩展名。我发现这种做法令人困惑,但并不少见,亚马逊在这种情况下就这样做了。我认为随着Maven的推出,这种做法变得更加普遍,Maven将引用源代码存储在名为.jar的文件中
aws-java-sdk-1.1.1.jar-这是编译和执行所需的唯一文件。它包含库运行所需的类(.class文件)和资源
aws-java-sdk-1.1.1-sources.jar-这只是一个zip文件,其中包含库的源代码(.java文件)。它不是编译或执行所必需的。它可以帮助您解决使用库时可能遇到的问题。您可以解压缩此文件并从硬盘读取源代码。但是,您的IDE可能可以通过创建一个到主库JAR的“源附件”来直接利用这个文件。通过在IDE中设置此库->源关联,当您在库类上使用IDE的“转到定义”功能时,IDE将能够向您显示库的源代码
aws-java-sdk-1.1.1-javadoc.jar-这只是一个包含库的javadoc的zip文件。同样,编译或执行也不需要它。JavaDoc只是HTML,因此您可以解压缩此文件并直接从硬盘读取JavaDoc HTML。