清晰解题: Java 是编译型语言还是解释型语言

  • Java 的跨平台运行能力的本质原因是, Java 会首先被编译为字节码(bytecode), 然后可以被不同平台的 JVM 解释成对应的机器码,得以运行。
  • 解释和 JIT 编译的区别:
    • 解释: JVM 运行时加载 .class 文件, 逐条读取其中的 bytecode , 将其转换为特定平台的 CPU 指令予以执行。 同一条指令被多次运行, 也会被多次解释, 指令解释的过程会耗费额外的时间。
    • JIT 编译: 一些会被反复调用的热点字节码, 经过编译后,会被优化精简为特定平台的 CPU 指令, 缓存起来, 这部分字节码再次被调用时, 可以直接运行, 省去解释的时间。
    • 总结: 解释和编译的区别在于, 前者在运行时刻, 逐条逐句按对应关系进行顺序翻译执行(无法根据上下文进行精简优化)。 编译会一次进行尽可能的优化和精简,将编译好的机器指令缓存起来,再次调用时可以直接运行
  • 常见的 JVM , 例如 Oracle JDK 提供的 Hotspot JVM 都提供了JIT 编译器, 将热点代码进行编译优化, 以缩短其执行的时间。 对于非热点代码, 因为运行次数少, 编译花费的时间可能比运行该指令的时间还长, 依旧采用解释运行的方法。 从这个角度来讲, Java 语言是编译和解释混合的语言。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值