编译型和解析型其实都是翻译的意识,主要是翻译的时间点不一样。时间点不一样看起来有点不好理解,比如一个外国人想看中文书籍,可以一次翻译整本书(编译型),也可以看的时候看一句翻译一句(解析型)。
主要区别在于,前者源程序编译后即可在该平台运行,后者是在运行期间才编译。所以前者运行速度快,后者跨平台性好。
一、编译型
一次性的编译(翻译)成平台相关的机器语言文件,运行时脱离开发环境,运行效率高,比如C、C++都是编译型语言。
二、解析型
使用专门的解释器对源程序或中间文件(例如java的字节码)逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态解析和执行,而不是在执行之前就完成全部编译(翻译)。只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植
三、编译型与解释型,两者各有利弊
前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、Python等等。
四、JAVA程序运行机制
java是先经过一次预编译(javac命令编译)成字节码文件,然后再通过JVM解析执行。所以说java既有编译型特性也有解析型特性。JAVA简单的运行机制如下图:
java针对不同的平台有不同的JVM,实现了跨平台。所以Java语言有一次编译到处运行的说法。其实是一次编译成字节码中间文件(*.class文件),最终还是需要 jvm的解释,才能在各个平台执行,这也是java跨平台的原因,如下图:
如果觉得《一 java程序运行机制》对你有帮助,请点赞、收藏,并留下你的观点哦!