Java(二)——Java运行机制,
Java(二)——Java运行机制,
一、高级语言的运行机制
按照程序执行方式可以将高级程序设计语言分为编译型和解释型两种。
1. 编译型
利用特定的编译器,针对特定平台(操作系统),将高级语言直接一次性“翻译”成该平台硬件可以执行的机器码,并包装成该平台所能识别的可执行性程序格式,这个过程叫做编译(Complie)。编译后的生成的可执行性程序可以脱离开发环境,在特定平台运行。
因为编译型语言是一次性地编译成机器码,所以执行效率高,但是编译生成的可执行文件无法在其他平台运行,要想在其他平台运行,必须复制源代码在该平台上,至少重新编译。
现有的C、C++、Objective-C、Pascal等高级语言都属于编译型语言。
2. 解释型
解释型语言使用特定的解释器逐行解释源代码,生成机器码并立即执行,这意味着解释型语言将编译和解释两个步骤混在了一起,同时执行,每执行一次源代码,都要编译,这使得解释型语言的执行效率降低。但有一个优势,它的跨平台性好,只需要不同平台的解释器即可,不同平台的解释器负责生成特定的机器码,解释型语言可以方便地在不同平台之间进行移植,但这是以牺牲程序执行效率为代价的。
现有的Ruby、Python等高级语言都属于解释型语言。
3. 伪编译型
还有一种伪编译型语言,比如Visual Basic,该语言是一种半编译型语言,首先被编译成P-代码,并将解释引擎封装在可执行性程序内,当程序运行时,P-代码会被解析成真正的二进制代码。表面看起来,Visual Basic可以编译生成可执行的exe文件,而这个exe文件也可以脱离开发环境,在特定平台上运行,非常像编译型语言。实际上,在这个exe文件中,既有程序的启动代码,也有链接解释程序的代码,而这部分代码负责启动Visual Basic解释程序,再对Visual Basic代码进行解释并执行。
二、Java的运行机制
Java语言是现将源程序编译成一种平台无关的字节码文件(.class文件),然后由JVM去解释该字节码文件,生成特定平台的机器码。从而实现Java的平台无关性。
一个笔帽要盖在不同的两支笔上,就需要一个转换器,这个转换器对笔有着不同的接口,而对笔帽是统一的接口。 不同的平台就相当于不同的笔,而Java字节码文件就相当于笔帽,JVM就相当于这个转换器。可以把JVM看成有对上(Java字节码)和对下(平台)两个接口。JVM向上提供给Java字节码的接口完全相同;向下适应不同平台的接口则各不相同。
相关文章
- 暂无相关文章
用户点评