美文网首页@IT·互联网
Java程序的运行机制

Java程序的运行机制

作者: to0simple | 来源:发表于2017-09-02 13:20 被阅读0次

    一.高级语言的运行机制

    在计算机上执行一个高级语言程序一般要分两步,第一步,用一个编译程序将高级语言程序翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果。

    计算机高级语言按程序的执行方式分为两种:编译型和解释型。

    1.编译型语言

    编译型语言是指使用专门的编译器,针对特定平台将某种高级语言源代码一次性编译成可被平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式,这个过程称为编译(Compile)。编译生成的可执行性程序可以脱离开发环境,在特定的平台上运行。有些程序编译结束后,还可能需要对其它编译好的目标代码进行链接,组装两个以上的目标代码模块生成最终的可执行性程序。

    编译型语言一次性地编译成机器码,所以可以脱离开发环境独立运行而且通常运行效率较高;因为编译型语言的程序被编译成特定平台上的机器码,因此编译生成的可执行性程序通常不能移植到其他平台上运行。典型的编译型程序语言有C、C++等。

    2.解释型语言

    解释型语言是指使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体的编译链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。

    解释型语言每次执行程序都要进行一次编译,因此解释型语言的程序运行效率通常比较低,而且不能脱离解释器独立运行。但解释型语言跨平台比较容易,只需提供解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台上的机器指令即可。这种跨平台的优势是以牺牲程序的运行效率为代价的。典型的解释型语言有Ruby、Python等。

    二.Java程序的运行机制

    Java程序的运行必须经过两个步骤:先编译、后解释。编译(使用javac命令)步骤并不会生成特定平台的机器代码,而是生成一种与平台无关的字节码(*.class文件)。这个生成的字节码不是可执行性的,必须使用Java解释器来解释执行(使用java命令)。因此可以认为Java语言既是编译型语言,也是解释型语言。Java程序运行的步骤如下图所示。

    Java程序的运行机制

    三.Java实现跨平台的JVM

    JVM(Java Virtual Machine)是Java虚拟机,JVM负责解释执行字节码文件。使用Java编译器编译生成的与平台无关的字节码文件,这些字节码文件不面向任何具体的平台,只面向JVM。不同平台上的JVM都是不同的,但它们都提供了相同的接口,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。JVM像是一个中间转换器,将生成的字节码文件在虚拟机中运行,而虚拟机则在不同平台上运行,从而实现Java程序的跨平台。

    用类比的方式来理解JVM。两支不同的笔,要将同一个笔帽套在这两支不同的笔上,只有为这两支笔分别提供一个转换器,这个转换器向上的接口相同,用于适应同一个笔帽;向下的接口不同,用于适应两支不同的笔。这个类比中,可以近似的将两支笔认为是两个不同操作系统的平台,将笔帽近似的看做Java字节码程序,将转换器看作JVM。所有平台上的JVM向上提供给Java字节码程序的接口完全相同,向下适应不同平台的接口也不相同。

    相关文章

      网友评论

        本文标题:Java程序的运行机制

        本文链接:https://www.haomeiwen.com/subject/qqxrjxtx.html