说到运行机制,首先要搞清楚解释型与编译型语言的区别,任何语言开发的程序要在计算中运行必须要翻译成机器代码,也就是二进制,才可以运行。
编译型语言: 优点: 运行效率高,可以脱离开发环境 缺点:可移植性差
像C++ C# 这些都是编译行语言,在运行之前一次性编译成特定平台可执行的机器码,并且编译型语言编译后的程序可以脱离开发环境直接运行,这样提高运程序运行的效率。但是编译行语言只能编译成特定平台可执行机器码,导致编译后的程序不可以跨平台的移植,要在其它平台上运行的话,必须重新编译,才能运行。
解释型语言:优点:跨平台性强 缺点 运行效率低:
像js就属于解释型语言,由特定平台的解释器对程序编译成特定平台的机器码,它不像编译型语言可以一次生成机器码,必须每运行一次就要编译一次,这样的程序运行效率低,并且不能脱离专门的解释器。但是解释型语言可以通过不同平台的解释器提高程序的跨平台性。
而java语言比较特殊 因为它既不是纯粹的编译型语言,也不是纯粹的解释型语言 java程序的运行必须经过两个步骤 先编译 后解释
首先将.java文件通过javac编译成与平台无关的字节码文件.clss,这种文件是无法执行的,必须通过java解释器jvm解释执行。
jvm是java虚拟机,他对所由的java编译器提供相同的接口,由jvm虚拟机解释成特定平台能够识别的机器码,从而运行,因此jvm是java跨平台的关键。