Java编译整理

2017-06-04  本文已影响0人  young_xst

编译过程

  一般来说,一个程序从源代码到可执行文件是通过编译器完成的。简单的说,编译器就是把高级语言变成机器码,一个现代编译器的工作流程是:(源代码)——预处理——编译——汇编——(可执行文件)

对于C#和Java这种运行在虚拟机上的语言,编译有所不同。对C,C++的程序,生成的可执行文件,可以在兼容的计算机上运行,但C#、Java这些语言不一样。他们的编译过程是相似的,但是最终生成的不是机器码,而是中间代码。对于Java而言,生成的是字节码。

Java编译原理

  Java虚拟机(jvm)是可运行Java代码的假想计算机,只要根据jvm规格描述将解释器移植到计算机上,就能保证编译过后的任何Java代码能够在该系统上运行。

运行jvm字节码是由解释器完成的。解释的执行过程分为三步:代码的装入、代码的校验、代码的执行。装入代码的工作由类装载器(class loader)完成。随后,装入的代码由字节码校检器校检,校检器可发现操作数栈溢出、非法数据类型转换等异常。通过校检后,代码便开始执行。

字节码执行方式:

  1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。

  2..解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程 序的所有操作。

通常采用的是第二种方法。由于JVM规格描述具有足够的灵活性,这使得将字节码翻译为机器代码的工作。

JVM规格描述

JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提很好的灵活性,同时也确保Java代码可在符合该规范的任何系统上运行。JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Bytecode)的格式给出了明确的规格。这一规格包括操作码和操作数的语法和数值、标识符的数值表示方式、以及Java类文件中的Java对象、常量缓冲池在JVM的存储 映象。这些定义为JVM解释器开发人员提供了所需的信息和开发环境。Java的设计者希望给开发人员以随心所欲使用Java的自由。

Java技术体系

  从广义上讲,Clojuro、JRuby、Groovy等运行与Java虚拟机上的语言及其相关的程序都属于Java技术体系中的一员。我们可以把Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。

上一篇下一篇

猜你喜欢

热点阅读