为什么用Java编写的代码需要编译成字节码才能被JVM解释,而用JavaScript等语言编写的代码不需要编译就可以直接在浏览器中运行呢?
有没有简单易懂的方式来理解这个问题呢?
这两种语言之间的根本差别是什么,可能有助于理解这种行为?
我不是计算机科学专业的学生,所以请原谅我的幼稚问题。
为什么用Java编写的代码需要编译成字节码才能被JVM解释,而用JavaScript等语言编写的代码不需要编译就可以直接在浏览器中运行呢?
有没有简单易懂的方式来理解这个问题呢?
这两种语言之间的根本差别是什么,可能有助于理解这种行为?
我不是计算机科学专业的学生,所以请原谅我的幼稚问题。
在历史上,JavaScript 是一种解释型语言。这意味着解释器接受源代码并一步执行全部内容。这种方式的优点是简单和灵活,但解释器非常慢。编译器将高级语言转换为低级语言,然后本地处理器或虚拟机(在这种情况下是 Java VM)可以直接执行。这样做会更快。
现代浏览器中的 JavaScript 现在是即时编译的。因此,当脚本加载时,JavaScript 引擎首先将其编译成字节码,然后执行它。从最终用户的角度来看,整个编译过程被省略了,因为浏览器开发人员(幸运的是)坚持要求 JavaScript 不需要显式编译。
Java 一开始就是一种始终具有显式编译步骤的语言。但在许多情况下,这已经不再正确了。像 IntelliJ 或 Eclipse 这样的 IDE 可以即时编译 Java,并在许多情况下省去显式编译步骤。