Java类库与JVM

Java类库与JVM,java,jvm,Java,Jvm,我对JVM架构有点困惑。我们可以说Java类库JCL是Java虚拟机JVM的一部分吗?根据定义,JCL是Java应用程序(而不是JVM)可以在运行时调用的库,我认为这是JRE的一部分。根据 Java虚拟机是一种抽象的计算机器。。。[其中] 对Java编程语言一无所知 JCL是实现Java语言所必需的 因此,您可以使用JVM实现您选择的任何功能,并且可以在任何合适的体系结构上运行Java程序。例如,Android可以在Android运行时(ART)上运行用Java编写的程序。JVM(Java虚拟机

我对JVM架构有点困惑。我们可以说Java类库
JCL
是Java虚拟机
JVM
的一部分吗?

根据定义,JCL是Java应用程序(而不是JVM)可以在运行时调用的库,我认为这是JRE的一部分。

根据

Java虚拟机是一种抽象的计算机器。。。[其中] 对Java编程语言一无所知

JCL是实现Java语言所必需的

因此,您可以使用JVM实现您选择的任何功能,并且可以在任何合适的体系结构上运行Java程序。例如,Android可以在Android运行时(ART)上运行用Java编写的程序。

JVM(Java虚拟机)是JRE(Java运行时环境)的一部分


JCL(Java库类)也是JRE的一部分,就像其他API一样。

我知道这一点已经得到了回答,但我觉得我应该补充一些解释来支持已经提出的一些观点:

JVM:执行字节码,JCL提供可动态加载的运行库,供JVM执行的java代码使用

运行java程序至少需要JRE,JRE由JVM和JCL组成

JVM:它是一个应用程序虚拟机,能够运行字节码并在主机操作系统上执行

Java:简单地说,Java是一种高级编程语言。它可以转换为字节码,最终可以在JVM上运行

字节码:为了生成字节码,我们需要一个能够接收源代码并生成字节码的编译器

字节码编译器:从理论上讲,字节码编译器能够获取大多数现代语言(如python、ruby、groovy等)的任何源代码并生成字节码,前提是编译器已经实现了这一功能。另一种可能的实现是,将程序的源代码转换为java,然后调用java字节码编译器将生成的java程序转换为字节码,jythonc就是这样,它将python源代码转换为java,然后java代码最终转换为字节码。字节码编译器的例子是上面描述的javac

总之,JVM能够运行任何语言,只要该语言程序的源代码有编译过的字节码版本。


JCL(Java类库):Java类库对于Java程序来说,就像操作系统可重用Dll库对于本机应用程序一样。它使用java编写的程序能够调用操作系统/硬件函数/例程,这些函数/例程通常由操作系统本机库公开。JCL通过提供对本机函数(如网络、io、本机GUI和其他)的访问,从本机库的实现细节中抽象出java程序。

关注该语言可能在这里效果最好

JVM是一个虚拟机,因此您可以将其视为近似于物理机的东西,如笔记本电脑、台式机或电话。物理机允许您运行计算机程序,虚拟机也是如此

JCL是一个软件库,可以帮助您在该机器上运行自己的程序。它类似于操作系统使用的物理机器上的库以及安装在该物理机器上的各种程序。您拥有的代码也利用了机器提供的现有代码,它们共同构成了在该机器上运行计算机程序所需的所有代码