006Java程序运行机制
高级程序语言分为编译型和解释型两种,Java这两种特性都具备。
编译型还是解释型取决于翻译的时机。
以看一本外语书为例:
- 编译型:先把整本书翻译成中文版再看。
- 解释型:请个翻译官,看一句翻译一句。
编译型由于是全部编译好再交系统执行,因此执行性能较高,通常用于开发操作系统等,典型语言是C/C++。
解释型由于是边解释边执行,因此速度没有那么高,适合网页等对速度要求不高的地方使用,典型语言是Java/Python。
Java在执行前,会通过Java编译器进行一次预编译,生成介于Java源代码与机器码之间的字节码文件(class文件),字节码文件运行的时候会被放进类装载器里面,这样就进入JVM虚拟机里面了。随后数据进入字节码校验器,用于校验程序有没有写错。最后通过一个解释器解释给操作系统,解释一步运行一步。
随着技术的发展,编译型与解释型的界限变得越来越模糊,很多语言既有编译型的特征又有解释型的特征。