Java 是编译型语言还是解释型语言?

写在前面:

    今天在牛客的面经上,看到大家讨论Java究竟是编译形语言还是解释形语言,自己看了些博客和知乎,在这篇博客中,将大家的意见进行总结,希望对你有所帮助。

    知乎链接:https://www.zhihu.com/question/19608553


    首先来看什么是编译形语言,什么又是解释形语言?

  •     编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,就可以直接运行这个程序。执行速度快,效率高,依靠编译器,跨平台性稍差。
  •     解释型语言:把已经做好的源程序,翻译一句,执行一句,直到结束。执行速度慢,效率低,依靠编译器,跨平台性稍好。

    下面来总结一下大家的观点:

    (1)第一个观点认为Java是编译型语言,因为Java程序想要运行,那么第一步就是要使用Javac进行编译。没有经过编译的.java文件,是没办法运行的

    (2)那么第二个观点则是认为Java是解释型语言,Java经过编译之后,仍然需要JVM的解释执行,Javac将Java源文件编译成.class文件,然后通过JVM的解释执行。

    综合上面两个观点来看,Java似乎既有编译型语言的特点,又有解释型语言的特点,也没有看到哪本权威的书籍上认定Java就是哪一种类型的语言。姑且认为是半编译型半解释型吧。

    也希望大家提出更好的观点,与博主交流,感激不尽。


你可能感兴趣的:(Java)