java最终是在哪运行的。

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:34:05
各位高手,java最终是在jvm上执行还是在操作系统上运行。即:是经过jvm转换成不同操作系统认识的代码,导入内存执行的吗?还是在jvm上直接运行不需要进入内存了就能输出结果。
最好是说的具体点。我知道形成*class文件。之后呢。就在jvm上运行了吗。不进入操作系统了吗。往下运行是怎么回事。

具体一点是这个样子的..
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

your program runs within jvm
jvm is a program that runs within operating system, jvm interacts with operating system.
various operating systems have their own jvm implementation.if it does not have one, you have to install it.

class文件本身并不进入操作系统,进入操作系统的是jvm,具体说就是java.exe或javaw.exe,运行一个java程序时系统的任务管理器只有这两个中的一个进程。

class文件只是标示了一堆只有jvm可以认识的命令(字节码),然后jvm再根据读到的命令做不同的操作。

比如:
我们可以定义一下,遇到字节码“111”打印“hello word!”,遇到字节码“222”打印“word hello!”。
虚拟机就可以这样写(C语言已经忘得差不多了,明白意思就行)
main(int argc,char **argv)
{
FILE f=fopen(argv[1],"r");
char c[3];
int i=0;
while((c[i]=fread(c,3,f))==3)
{
if(c[0]='1'&&c[1]='1'&&c[2]=