一个程序要想运行,一般得经过两个步骤-翻译和执行
翻译就是将源代码(xxx.java,xxx.c)变成目标机器代码(0,1组成的代码),有编译和解释两种
执行就是字面意思
上面已经说过,翻译有一下两种
1.编译的话是一次性将源程序翻译成机器语言,例如:直接将c程序直接编译成目标代码,然后执行。
2.解释的话是程序执行时,翻译一条,执行一条,例如:php程序执行时,逐条翻译成目标代码执行
java这个语言很非凡,你可以说他是翻译型语言,也可以说不是
首先我们来看看java程序的运行过程
首先是java源程序翻译成字节码文件,再字节码文件翻译成目标文件
其实第一步,其实是一个编译的过程,第二步,是一个解释的过程。
说他是翻译型语言是因为他确实不能编译完,直接执行,需要jvm解释才能执行
但严格意义上来讲,java语言,不能说是编译型语言也不能说是解释型语言,而是两者都包含。
ps:引用庆哥的一句话:
其实现在不能再那么肯定说什么什么语言是解释型还是编译型,毕竟技术在进步,比如大家都觉得C语言就是编译型语言,使用gcc编译,但是实际上在TCC上可以直接解释执行。再比如PHP真的就是解释型语言嘛,Facebook很早就搞过一个hiphop编译器,可以将PHP编译成C++再编译成二进制。



