Java程序运行机制
计算机高级语言按程序的执行方式分为编译型和解释型两种。
编译器
计算机不能直接理解任何除机器语言以外的语言,所以必须要把程序员所写的程序语言翻译成机器语言,计算机才能执行程序。将其他语言翻译成机器语言的工具,被称为编译器。
解释性语言
解释性语言编写的程序不进行预先编译,以文本方式存储程序代码。在发布程序时,看起来省了道编译工序。但是,在运行程序的时候,解释性语言必须先解释再运行。比如解释性BasiC语言,其专用的解释器在执行Basic程序时,会逐条读取解释每个语句,这个其实就是一个编译过程,然后再执行。一般来说,现有的解释性语言都是采用的逐行解释一句,执行一句这样的方式来构建的。这样解释性语言每执行一次就要翻译一次,效率比较低。
编译型语言
程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。
Java程序运行机制
Java语言是一种特殊的高级语言,既有解释性语言的特征,也有编译语言的特征,Java程序经过先编译后翻译两个步骤。
Java程序——-经过编译———-生成机器码,与平台无关的字节码文件—–>(*.class文件)——由Java解释器执行。
JVM
Java语言里负责解释执行字节码文件的是Java虚拟机,即JVM。
Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提范的任何系统上运行。
JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
*JVM指令系统
*JVM寄存器
*JVM栈结构
*JVM碎片回收堆
*JVM存储区