java中的编译器和解释器

java中的编译器和解释器

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。

详细概念

Java Compiler (Java 编译器)

Java compiler reads source files written in the Java programming language, and compiles them into bytecode class files.

Java编译器读取java源文件(.java)并将它们编译为java字节码文件(.class)。
Windows系统中的javac.exe可以简单看成是Java编译器。

Java Interpreter(Java 解释器)

Java compilers generate machine-independent bytecodes instead of machine instructions. The interpreter is like a CPU implemented in software. It decodes and executes bytecodes, independent of what computer they were compiled on.

Java编译器生成的是与机器码不同的java字节码,并不能被硬件中的CPU直接执行。而java解释器就像植根于软件中的CPU,能够解析并执行java字节码。
Windows系统中的java.exe可以简单看成是Java解释器。

Write Once,Run Anywhere

Java有个口号是“Write Once,Run Anywhere”,旨在展示Java程序设计语言的跨平台特性,而能够实现这个特性的基础就是java字节码文件和能够执行它的Java虚拟机 - JVM,一个可以在不同的硬件平台和操作系统上运行java字节码的神器。所以很清晰了,生成java字节码文件就是Java编译器的工作,而执行字节码的工作就是JVM中Java解释器干的活,没有它们就没有“Write Once,Run Anywhere”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值