我对JVM架构有点困惑。我们可以说Java类库JCL
是Java虚拟机JVM
的一部分吗?
答案 0 :(得分:2)
Java虚拟机是一个抽象的计算机... [其中] 对Java编程语言一无所知。
JCL是实现Java语言的必要条件。
因此,您可以使用JVM来实现您选择的任何language,并且可以在任何合适的体系结构上运行Java程序。例如,Android可以在Android Runtime(ART)上运行用Java编写的程序。
答案 1 :(得分:1)
JVM (Java虚拟机)是 JRE (Java运行时环境)的一部分。
JCL (Java库类)也是 JRE 的一部分,就像其他API一样。
答案 2 :(得分:0)
根据定义,JCL是Java应用程序(而不是JVM)在运行时可以调用的库,我认为这是JRE的一部分。
答案 3 :(得分:0)
我知道这已经得到了回答,但我觉得我应该添加一些解释来支持已经提出的一些观点:
JVM :执行字节代码, JCL 提供动态可加载的运行时库,由JVM执行的java代码使用。
JRE至少需要运行java程序,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编写的程序可以调用通常由Os本机库公开的操作系统/硬件功能/例程。 JCL通过提供对本机函数(如网络,io,本机GUI等)的访问,从本机库的implmentation细节中抽象出java程序。
答案 4 :(得分:0)
密切注意语言可能在这里效果最好。
JVM是一种虚拟机,因此您可以将其视为近似于物理机器的东西,如笔记本电脑,台式机或手机。物理机器允许您运行计算机程序,虚拟机也是如此。
JCL是一个软件库,可帮助您在该计算机上运行自己的程序。它类似于您的物理计算机上存在的库,这些库由您的操作系统和该物理计算机上安装的各种程序使用。您的代码也使用了随机提供的现有代码,它们共同构成了在该机器上运行计算机程序所需的所有代码。