Java虚拟机------JVM

来源:互联网 发布:linux 局域网ip扫描 编辑:程序博客网 时间:2024/06/03 23:37

上次写的一篇 分析java程序的运行过程 ,里面并没有讲清楚java语言程序“一次编写,到处执行”特点的原理,今天通过java虚拟机来说明java程序如何实现这种特性。希望通过这篇博客 对大家理解JVM原理有所帮助。

       首先说一下JVM的概念,按照书本上的定义:JVM(Java 虚拟机)是一种用于计算设备的规范,Java虚拟机包括:一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆 和 一个存储方法域。

      说白了,JVM其实就是一台假想的计算机,在它上面可以运行Java代码,只要根据规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何java代码能够在该系统上运行。

         那么为什么要使用JVM呢?

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

         来看一下JVM的作用

         Java虚拟机试运行Java程序的软件环境,Java解释器是Java虚拟机的一部分。在运行Java程序时,首先会启动 JVM ,然后由它来负责执行Java 的字节码,并且Java字节码只能运行于JVM之上。

             这样利用JVM 就可以把字节码程序与具体的硬件平台以及操作系统环境分隔开,只要在不同的计算机上安装了针对于特定平台的JVM,Java程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。所以说,JVM隐藏了不同的软硬件平台的具体差别,从而实现了跨平台的移植。Java的跨平台特性就正是通过在JVM中运行Java程序来实现的。好了,上张图来说明这一切吧,如下:

                                       

最后需要注意的是:Java程序通过JVM 可以实现跨平台的特性,单JVM是不跨平台的,也就是说,不同的操作系统上的JVM是不同的,Windows平台上的JVM不能用在Linux上,反之亦然。

1 0