外部 java 库(罐子)实际上是如何工作的?
How do external java libraries(jars) actually work?
在 Java 中很多时候我们想要使用以 JAR 形式提供给我们的一些功能(例如一些外部库)。大多数情况下,我注意到 JAR 包含 .class 个文件。
由于 .class 文件代表已编译的字节码,可供 JVM 使用,我的问题如下:
为什么我们只需要 .class 文件就可以使用外部库?也许某个 JAR 包含名为 class 的文件:Person.class。当 JAR 文件公开的所有内容都是 .class 文件时,我如何才能在我的代码中引用此 class。源代码(.java 文件)不是重要的和需要的吗?就像我可以在同一个包中有两个 class 一样,我可以从另一个引用一个,因为 两个 .java 文件(不是 .class 文件)在同一范围内(仅举个例子)。
对不起,如果这是一个愚蠢的问题,但我真的很想了解这一点。
即使您在 .java
文件中编写源代码,它们最终也会被编译为 .class
文件,其中存储了易于解释的字节码。当您在项目中使用 jar 文件时,这些 jar 文件中的所有 class 文件都包含在您的 class 路径中,因此您可以使用它们。
所以在一个JAR包中,.class
个文件就可以作为依赖了
Java 编译器将人类可以理解的 Java 代码放入 .class
文件,Java 虚拟机 ( JVM)可以理解。 JVM 然后获取 .class
文件并在您的计算机上运行它们。
一个.jar
文件实际上是打包的.class
个文件的集合(在幕后,它实际上只不过是伪装的.zip
)。当您将 .jar
添加到您的 class 路径时,您是在告诉 JVM 它在需要特定 class.
时应该查看的另一个地方
我不确定我是否完全理解你的问题,但是 JAR 只是编译的 java 代码,这意味着代码的 semantic/logic 等没有被更改。您需要能够访问要使用的 java 代码的 functions/classes 等,否则您将无法获得使用 JAR 的任何优势。
JAR 的一个优点是,这些库的源代码已经编译。由于这些 .class 文件是经过编译的 .java 文件,因此您只需要它们即可访问在 .java 文件中编写的函数。
在 Java 中很多时候我们想要使用以 JAR 形式提供给我们的一些功能(例如一些外部库)。大多数情况下,我注意到 JAR 包含 .class 个文件。
由于 .class 文件代表已编译的字节码,可供 JVM 使用,我的问题如下: 为什么我们只需要 .class 文件就可以使用外部库?也许某个 JAR 包含名为 class 的文件:Person.class。当 JAR 文件公开的所有内容都是 .class 文件时,我如何才能在我的代码中引用此 class。源代码(.java 文件)不是重要的和需要的吗?就像我可以在同一个包中有两个 class 一样,我可以从另一个引用一个,因为 两个 .java 文件(不是 .class 文件)在同一范围内(仅举个例子)。
对不起,如果这是一个愚蠢的问题,但我真的很想了解这一点。
即使您在 .java
文件中编写源代码,它们最终也会被编译为 .class
文件,其中存储了易于解释的字节码。当您在项目中使用 jar 文件时,这些 jar 文件中的所有 class 文件都包含在您的 class 路径中,因此您可以使用它们。
所以在一个JAR包中,.class
个文件就可以作为依赖了
Java 编译器将人类可以理解的 Java 代码放入 .class
文件,Java 虚拟机 ( JVM)可以理解。 JVM 然后获取 .class
文件并在您的计算机上运行它们。
一个.jar
文件实际上是打包的.class
个文件的集合(在幕后,它实际上只不过是伪装的.zip
)。当您将 .jar
添加到您的 class 路径时,您是在告诉 JVM 它在需要特定 class.
我不确定我是否完全理解你的问题,但是 JAR 只是编译的 java 代码,这意味着代码的 semantic/logic 等没有被更改。您需要能够访问要使用的 java 代码的 functions/classes 等,否则您将无法获得使用 JAR 的任何优势。
JAR 的一个优点是,这些库的源代码已经编译。由于这些 .class 文件是经过编译的 .java 文件,因此您只需要它们即可访问在 .java 文件中编写的函数。