Java的运行原理其实就是Java中引入了虚拟机这个概念,也就是在机器和编译程序之间加入了一虚拟的机器来连接他们然后这台机器任何平台提供给一个的接口来编译程序

Java中,编译程序面向虚拟机生成代码,然后解释器将虚拟代码转换为机器代码来运行。这种代码叫做字节码由此可知它只面向虚拟机。不同平台的解释器不同,但是虚拟机是相同的。Java源程序——字节码——虚拟机——解释器——机器码——机器上运行。

 

跨平台:

*.java→*.class→机器码

java编译器 (编译) → 虚拟机(解释执行) →  解释器(翻译) → 机器码

Java虚拟机(JVM)

Java虚拟机(JVM)是Java Virtual Machine的缩写,顾名思义就是模拟一个计算机来实现计算机的各种操作。

Java中类加载器把一个类装入JAVA虚拟机需要经过以下三个步骤来完成

第一步:装载查找和导入.class文件

第二步:链接检查装入.class文件的正确性,然后,java虚拟机为变量分配内存,设置默认值。)又分为校验、准备、解析。

第三步:初始化把符号引用变成直接引用

 

 

Java虚拟机是怎么运行的

1.装载

过程:java虚拟机-类装载器定位-CLASS文件-读取CLASS文件-java虚拟机中-虚拟机提取类型信息。。一个重要的东西就是常量池(包含:直接常量和对其他类型,字段,方法的符号引用)这些信息保存在方法区。最终形成CLASS类的实例,这个实例存放在内存的堆区。

2.链接

过程:

第一步:验证确定类型符合java语言的语义,比如:final类不能有子类,final方法不能被覆盖,确保在类型和超类型之间没有不兼容的方法声明)。

第二步:准备java虚拟机为类变量分配内存,设置默认值)。

第三步:解析在类型的常量池中寻找类,接口,字段和方法的符合引用把这些符号引用替换成直接引用的过程

3.初始化

过程:可能会调用()方法,(这个方法只能够由java虚拟机调用)来初始化该类的静态变量。在调用这个方法前,必须确认该类的超类的() 方法已经被调用。

   本文来自http://www.lechenggu.com/,转载请注明出处。