在我阅读JVM简介时,我想出了一个好奇心的问题。
当我们拥有通用的,与平台无关的Java虚拟机时,为什么还需要Java编译器?我的意思是,考虑Python,它有一个交互式shell,逐行读取源代码,然后执行它而不必事先编译源代码,为什么JVM不能设计能够像Python那样直接读取.java文件,然后执行它?
如果不是这样,有人可以解释一下Java编译器的意义吗?
答案 0 :(得分:4)
Java确实可以在任何地方创建源代码(就像通常使用JavaScript一样)。但作为设计选择,Gosling et。人。决定发送字节码,它是由Java编译器从源代码创建的。这样做有几个客观原因:
但是,这只是他们采取的一项设计决定。微软对.Net采取了同样的决定。
答案 1 :(得分:0)
java编译器将java源转换为字节码。
JVM只执行字节码。不同操作系统上的JVM可以运行相同的字节码。
Scala等其他语言也可以编译为字节码并在JVM上运行。
编译提高了执行效率和安全性。