我在互联网上做了一些阅读,有人说 Java 应用程序是由 Java 虚拟机 (JVM) 执行的。 “执行”这个词让我有点困惑。据我所知,操作系统可以执行非 Java 应用程序(即:用 C、C++...编写的)。在底层,就是操作系统将二进制程序加载到内存中,然后指挥CPU去执行内存中的指令。
那么现在有了 JVM,会发生什么?据我所知,JVM(包含运行时环境)将首先被操作系统调用。从那时起,JVM 将为应用程序生成一个(或多个)线程。我想知道操作系统的角色是否会再发挥作用?在我看来,JVM 已经“绕过了”操作系统,直接指示 CPU 执行应用程序。如果是这样,我们为什么需要操作系统?
更进一步,JVM 将使用其 JIT 将应用程序的字节码编译成机器码,然后执行这些机器码。既然已经是机器码了,还需要JVM吗?因为操作系统可以指示 CPU 执行这些机器代码,而不是 JVM。我在这里犯了什么错误吗?
我想从这里的人那里学到更多。如果我错了,请纠正我。非常感谢!
最佳答案
我们需要操作系统来完成 C 或 C++ 程序所能做的所有事情。默认情况下,JVM 会做一些更多的事情,但它不会取代操作系统所做的任何事情。唯一的区别可能是有时你有 Your Code
[调用] JVM
[调用] OS
,或者使用编译代码你可以有您的代码
[调用] OS
与 C++ 类似,您可能有 Your Code
[调用] Boost
[调用] OS
。
当您的程序以 native 代码运行时,它不需要 JVM 本身。这很好,因为 JVM 知道何时“后退”并让应用程序运行。但是,并非所有程序都会在应用程序的剩余生命周期内编译为 native 代码,因此您仍然需要它。
可以通过 JNI 使用内核旁路设备/驱动程序,但 Java 不直接支持此类功能。
关于java - JVM 执行 Java 应用程序时,OS 的作用是什么?为什么我们需要操作系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8791955/