Java编译整理

澳门新葡亰网站注册 1

本文由码农网 –
小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!

编译过程

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

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

Java和JVM已经存在了很长一段时间了,基于这个事实,一些程序员开始将很多事情视为理所当然。今天我们就来说一说“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的自由。

澳门新葡亰网站注册 1

Java技术体系

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

1.高性能JVM

Java最初的开发目的“一次编写到处运行”,并由虚拟机提供运行平台。没有JVM,Java就必须遵循Ruby和Python的步伐——在痛苦中进一步提高其便携性。随着物联网的出现,一个强大的虚拟机变得越来越重要。

2.核心API

最让人喜欢的就是Java核心API——从它诞生之后就可以完全向后兼容,这样我们就可以开始写更多的Java应用。虽然有无数额外的库和JVM语言可以提供简洁的语言水平,以获取多种核心API功能,但其中大部分实际上是依赖于Java核心API的支配。虽然也有其他语言纷纷效仿,但很少能像Java保持得如此稳定。

3.编译器

还有很多值得欣赏的Java编译器——将你的源代码转换成字节码,然后再成为可执行文件——更由于JIT的出现,将其他的直译程式比到了尘埃里。并且天生简洁的Java编译器能让开发人员只需将注意力放在代码上,而无需关注编译器架构。

4.字节码

和编译器一样,在Java字节码中,简单才是王道。它可以大大降低了写出潜在错误代码的几率。并且也不需要第三方字节码操作工具。