Java中什么是JVM及其工作原理?
2017-05-17 16:28
239 查看
JVM是Java程序运行的平台,它就像一台虚拟出来的计算机一样,负责执行Java编译好的字节码文件。JVM具有非常严格的实现规范,大多数操作系统都可以安装JVM,为Java语言的跨平台性起到了关键的作用。
JVM(Java虚拟机)是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象的硬件,堆栈,寄存器等,还具有相应的指令系统。
说明:
JVM有很多个实现,目前用的比较多得就是Sun公司提供的JRE的JVM,另外,IBM,BEA等公司都有自己的JVM实现。
Java语言的一个非常的特点就是与平台的无关性。而使用Java虚拟机是实现这一个特点的关键。它就好像一张毯子,铺在具体操作系统平台的上面,垫在Java语言的下面。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码,而引入Java语言虚拟机后,Java语言在不同平台运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需要生成在java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。Java虚拟机在执行字节码时,再把字节码解释成具体平台上的机器指令执行。
下面通过一个具体的例子来分析它的运行过程。虚拟机通过调用某个指定类的方法main()启动,传递给main()一个字符串数组参数,使指定的类被加载,同时链接该类所使用的其他的类,接口等,并且初始化它们,最后执行方法中的代码,实例代码如下:
[java] view
plain copy
print?
class HelloApp{
public static void main(String[] args) {
System.out.println("HelloWorld");
for (int i = 0; i < args.length; i++) {
System.out.println(args);
}
}
}
编译后在命令模式下输入以下代码:
Java HelloApp run virtual machine
上面代码通过调用HelloApp的main方法来启动Java虚拟机,传递给main一个包含3个字符串run,virtual,machine的数组。
开始试图执行类HelloApp的main方法的时候,发现该类并没有被加载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoder试图寻找这样的二进制代表。如果这个进程失败,会抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其他类型进行链接并且初始化,类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。然后执行main方法的代码,直至方法被执行完毕。
可以这样回答:
JVM是一种使用软件模拟出来的计算机,它用于执行Java程序,有一套非常严格的技术规范,是Java跨平台的依赖基础。Java虚拟机有自己想象中的硬件,如处理器,堆栈,寄存器等,还有相应的指令系统它允许Java程序就好像一台计算机允许c或c++程序一样。
JVM(Java虚拟机)是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象的硬件,堆栈,寄存器等,还具有相应的指令系统。
说明:
JVM有很多个实现,目前用的比较多得就是Sun公司提供的JRE的JVM,另外,IBM,BEA等公司都有自己的JVM实现。
Java语言的一个非常的特点就是与平台的无关性。而使用Java虚拟机是实现这一个特点的关键。它就好像一张毯子,铺在具体操作系统平台的上面,垫在Java语言的下面。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码,而引入Java语言虚拟机后,Java语言在不同平台运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需要生成在java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。Java虚拟机在执行字节码时,再把字节码解释成具体平台上的机器指令执行。
下面通过一个具体的例子来分析它的运行过程。虚拟机通过调用某个指定类的方法main()启动,传递给main()一个字符串数组参数,使指定的类被加载,同时链接该类所使用的其他的类,接口等,并且初始化它们,最后执行方法中的代码,实例代码如下:
[java] view
plain copy
print?
class HelloApp{
public static void main(String[] args) {
System.out.println("HelloWorld");
for (int i = 0; i < args.length; i++) {
System.out.println(args);
}
}
}
编译后在命令模式下输入以下代码:
Java HelloApp run virtual machine
上面代码通过调用HelloApp的main方法来启动Java虚拟机,传递给main一个包含3个字符串run,virtual,machine的数组。
开始试图执行类HelloApp的main方法的时候,发现该类并没有被加载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoder试图寻找这样的二进制代表。如果这个进程失败,会抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其他类型进行链接并且初始化,类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。然后执行main方法的代码,直至方法被执行完毕。
可以这样回答:
JVM是一种使用软件模拟出来的计算机,它用于执行Java程序,有一套非常严格的技术规范,是Java跨平台的依赖基础。Java虚拟机有自己想象中的硬件,如处理器,堆栈,寄存器等,还有相应的指令系统它允许Java程序就好像一台计算机允许c或c++程序一样。
相关文章推荐
- Java中什么是JVM及其工作原理?
- 什么是JVM及其工作原理
- Java规则引擎工作原理及其应用-Java基础-Java-编程开发
- Java规则引擎工作原理及其应用
- java中jvm的工作原理
- 什么是交换机端口镜像及其工作原理
- 外汇程序化交易:EA是什么及其工作原理
- Java规则引擎工作原理及其应用
- java.exe 和 javac.exe ,jvm都是什么关系 什么是环境变量 环境变量的作用
- Java规则引擎工作原理及其应用(转)
- java.lang.OutOfMemoryError: PermGen space及其解决方法--myeclipse中配置tomcat的jvm
- Java规则引擎工作原理及其应用(摘)
- 一个.NET工程在调用Java方法的时候不能创建JVM的问题及其原因
- 第1章 Java基本概念及环境配置——FAQ1.11 什么是GC?GC的工作原理如何?
- 第1章 Java基本概念及环境配置——FAQ1.10 JDK. JRE和JVM之间有什么区别?
- 深入探索Java工作原理:JVM,内存回收及其他
- Java规则引擎工作原理及其应用
- 第1章 Java基本概念及环境配置——FAQ1.07 什么是JVM?有什么作用?工作机制如何?
- 什么是JVM (Java Virtual Machine)?
- java中throws子句是怎么用的?工作原理是什么?