我在网上读过一些资料,有人说Java应用程序是由java虚拟机(JVM)执行的。 “执行”这个词让我有点困惑。据我所知,非Java应用程序(即:用C、C++编写...)可以由操作系统执行。在较低级别,这意味着操作系统将二进制程序加载到内存中,然后指示CPU执行内存中的指令。
那么现在有了 JVM,会发生什么呢?据我所知,JVM(包含运行时环境)将首先由操作系统调用。从那时起,JVM 将为应用程序生成一个(或多个)线程。我想知道操作系统的作用是否还发挥作用?在我看来,JVM 已经“绕过”了操作系统,直接指示 CPU 执行应用程序。如果是这样,为什么我们需要操作系统?
更进一步,JVM 将使用其 JIT 将应用程序的字节代码编译为机器代码,然后执行这些机器代码。既然已经是机器码了,还需要JVM吗?因为操作系统可以代替 JVM 来指示 CPU 执行这些机器代码。我在这里犯了什么错误吗?
我想向这里的人们了解更多。如果我错了,请纠正我。太感谢了!
我们需要操作系统来完成 C 或 C++ 程序所需的所有功能。默认情况下,JVM 会执行更多操作,但它不会取代操作系统执行的任何操作。唯一的区别可能是有时你有Your Code
[呼叫]JVM
[呼叫]OS
,或者使用编译后的代码,您可以拥有Your Code
[呼叫]OS
类似地,在 C++ 中你可能有Your Code
[呼叫]Boost
[呼叫]OS
.
当您的程序以本机代码运行时,它不需要 JVM。这很好,因为 JVM 知道何时“退后”并让应用程序运行。但是,并非所有程序都会在应用程序的剩余生命周期中编译为本机代码,因此您仍然需要它。
可以通过 JNI 使用内核旁路设备/驱动程序,但 Java 不直接支持此类功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)