写在前面:
今天在牛客的面经上,看到大家讨论Java究竟是编译形语言还是解释形语言,自己看了些博客和知乎,在这篇博客中,将大家的意见进行总结,希望对你有所帮助。
知乎链接:https://www.zhihu.com/question/19608553
首先来看什么是编译形语言,什么又是解释形语言?
- 编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,就可以直接运行这个程序。执行速度快,效率高,依靠编译器,跨平台性稍差。
- 解释型语言:把已经做好的源程序,翻译一句,执行一句,直到结束。执行速度慢,效率低,依靠编译器,跨平台性稍好。
下面来总结一下大家的观点:
(1)第一个观点认为Java是编译型语言,因为Java程序想要运行,那么第一步就是要使用Javac进行编译。没有经过编译的.java文件,是没办法运行的
(2)那么第二个观点则是认为Java是解释型语言,Java经过编译之后,仍然需要JVM的解释执行,Javac将Java源文件编译成.class文件,然后通过JVM的解释执行。
综合上面两个观点来看,Java似乎既有编译型语言的特点,又有解释型语言的特点,也没有看到哪本权威的书籍上认定Java就是哪一种类型的语言。姑且认为是半编译型半解释型吧。
也希望大家提出更好的观点,与博主交流,感激不尽。