【J2SE】——java运行原理,j2sejava原理
【J2SE】——java运行原理,j2sejava原理
一、java运行原理图:
java是通过java虚拟机(Java Virtual Machine,简称JVM)编译和运行的。 java虚拟机是编译和运行java程序
等的各种命令及其运行环境的总称。
如上图所示,java源程序在编译之后生成后缀为“.class”的文件,该文件以字节码(bytecode)的方式进行编
码。java虚拟机在字节码文件的基础上解释这些字节码,及将这些字节码转换成为本地计算机的机器代码,并交给本
地计算机执行。
java中,类加载器把一个类装入Java虚拟机需要经过三个步骤来完成:装载、链接、初始化,其中链接分为校
验、准备、解析过程。
1、装载
描述:java虚拟机装载指定的class文件
结果:行程这个class类的实例对象
过程:java虚拟机使用类装载器定位到相应的class文件,然后读取这个class文件(一个线性二进制数据流),
将它传入java虚拟机中,紧接着虚拟机提取其中的类型信息,这些信息构成了常量池里(常量池保存了该类型的所
有常量,包括直接常量和对其他类型、字段、方法的符号引用),将这些信息保存在方法区。
2、链接
描述:验证、准备,解析
结果:这个类型是正确的(或错误的)
过程:
1)验证:确定类型符合java语言的语义。
2)准备:java虚拟机为类变量分配内存,设置默认值
3)解析:在类型的常量池中寻找类,接口,字段和方法的符号引用,把这些符号引用替换成直接引用的过程。
3、初始化
描述:初始化一些静态变量
结果:这个类型可以使用了
过程:调用方法
经过上面三个步骤,就可以执行该类代码了。
二、 java虚拟机的由来
由java源码生成的.class文件的编码方式是字节码,这些字节码实际上是一种与平台无关的伪代码,通过java命
令编程在各种平台上的机器代码。这些伪代码最终是在本地计算机平台上运行的,但java程序就好像是在这些java命
令的基础上运行的,因此这些java命令的集合好像是采用软件技术实现的一种虚拟计算机。这就是java虚拟机的由
来。
三、java虚拟机的运行原理
java虚拟机执行字节码的过程有一个循环组成,它不停的加载程序,进行合法性和安全性的检测,以及解释执
行,直到程序执行完毕(包括异常退出)。java虚拟机首先从后缀为“.class”文件中加载字节码到内存中;接着在
内存中检测代码的合法性和安全性,如检测java程序用到的数组是否越界,访问的内存地址是否合法等;然后解释执
行通过检测的代码,将根据不同的计算机平台将字节码转换成为相应的计算机平台的机器代码,再交给相应的计算机
执行。如果加载的代码不能通过合法性和安全性检测,则java虚拟机执行相应的异常处理程序。虽然java语言含有编
译命令,但是java虚拟机对字节码的解释执行机制决定了java语言是一种解释执行的语言。
四、java的跨平台特性
java的跨平台特性,是在JVM将字节码转换成机器码的过程中体现的,而JVM本身是不具备跨平台特性的。
相关文章
- 暂无相关文章
用户点评