首先计算机高级语言类型分为编译型和解释型
它两唯一的区别就是时机不同
java既有编译型的特点又有解释型的特点
举个例子:
一个美国人想看《三体》有两种办法
-
一次性把整本书找人翻译了看
-
找一个翻译官 他想看一段 翻译官就给翻译一段
方法1如果作者书更新了或者内容换了一下,就需要重新翻译整本书,编译型就类似于一本书直接翻译成英文版进行出售 在程序里面的感觉就是有一个负责翻译的程序把我们写的源代码转化成一个计算机可以执行的代码 负责编译的程序就称为编译器
方法2如果哪天翻译官不在了或者是他这段看了又想回去看,翻译官就要往回走重新翻译一遍,但是在过程中内容改了翻译官就可以实时翻译,类似与说一句解释一句,用一下编译一下,性能可能有点损失,如果回头重新看一个东西就要重新翻译
编译型:执行速度更快,电脑直接执行就好了,对操作系统的要求比较低,因此开发一些操作系统,比如linux windows c/c++都是编译型的
解释型:比如说一个网页还有服务器的一些脚本 对速度要求不高 就边执行边解释 比如javascript pyhon等等
java文件在真正执行前经历了一次预编译 生成的代码就介于机器码和java源代码之间 运行的时候进入jvm