当前位置: 首页 > 面试题库 >

Java是编译语言还是解释性编程语言?

宋正真
2023-03-14
问题内容

过去,我使用C 作为编程语言。我知道用C 编写的代码会经过编译过程,直到成为目标代码“机器代码”为止。

我想知道Java在这方面如何工作。用户编写的Java代码如何由计算机运行?


问题答案:

Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理解的本地指令。

JVM的某些实现可能选择解释字节码,而不是JIT将其编译为机器代码并直接运行。尽管这仍然被认为是“解释器”,但它与读取和执行高级源代码的解释器有很大不同(即,在这种情况下,不直接解释Java源代码,而是对字节码和Java编译器的输出进行解释。)

从技术上讲,可以提前将Java编译为本机代码并运行生成的二进制文件。也可以直接解释Java代码。

总而言之,根据执行环境的不同,字节码可以是:

  • 提前编译并作为本机代码执行(类似于大多数C ++编译器)
  • 及时编译并执行
  • 解释的
  • 由支持的处理器直接执行(字节码是某些CPU的本机指令集)


 类似资料:
  • 我读到,java源代码被编译成“字节码”,然后通过JIT再次“编译”成“机器码”。也就是说,源代码首先编译成独立于平台的字节码,然后再次编译成特定于机器的代码。那么为什么它同时被称为解释语言和编译语言呢?解释发生在哪里?

  • 问题内容: PHP是编译还是解释? 问题答案: PHP是一种解释型语言。可以解释PHP的二进制文件已编译,但是您编写的文件却被解释。

  • 本文向大家介绍简述解释型和编译型编程语言相关面试题,主要包含被问及简述解释型和编译型编程语言时的应答技巧和注意事项,需要的朋友参考一下  

  • 问题内容: 我知道供应商有自己的原始SQL语言子集,这些子集用C(类似于Postgre SQL)或MS-SQL Server(C ++)等编写。 那么,原始的SQL是用C编写的,还是在Assembly中创建的呢?我真的找不到关于其原始语言根源的明确答案(除了历史等) 问题答案: 在Oracle上进行的快速历史搜索得出: 在70年代后期,Ingres刚开始在加州大学伯克利分校工作时,三个从事CIA合

  • 问题内容: 我正在尝试更好地理解它们之间的区别。我在网上找到了很多解释,但它们倾向于抽象的差异,而不是实际的含义。 我的大部分编程经验都来自CPython(动态的,解释的)和Java(静态的,编译的)。但是,我知道还有其他种类的解释和编译语言。除了可以从以编译语言编写的程序中分发可执行文件这一事实之外,每种类型是否有优点/缺点?通常,我听到人们争辩说解释语言可以交互使用,但是我相信编译语言也可以具

  • 翻译的结果是什么?它会把高级语言变成汇编语言还是机器语言,即二进制代码? 如果是后者,这是否意味着解释语言与介绍集没有关系? 一种语言只能有一个口译员?是因为解释器不做任何优化,所以我们不需要找到更好的解释器吗?