为什么说Java是半编译半解释的语言

首先计算机只认识机器指令码,也就是 01010101001…

我们使用高级语言(java、python、C …)编写的程序想要执行,就要把我们写的程序变成计算机可以识别的二进制语言(也就是机器指令码,也称机器码),才能在计算机上运行

高级语言按程序的执行方式可分为编译型语言解释型语言
先看百度百科对两者的定义:

编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成 为机器语言的文件,运行时不需要重新翻译,
直接使用编译的结果就行了。

解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。

比如我们现在有使用高级语言编写的10行代码的程序:

如果它是使用编译型语言编写的,那么它的执行方式就是:先把这10行代码通过编译器全部编译成机器指令码的文件,然后再让计算机运行
在这里插入图片描述
如果它是使用解释型语言编写的,那么它的执行方式就是:通过解释器一行一行的将代码翻译成机器指令码执行。
在这里插入图片描述
而对于Java代码来说,是将源文件(.java文件)先编译成字节码文件(.class文件),然后再在Java虚拟机(JVM)中解释执行。
在这里插入图片描述

在Hotspot(Java虚拟机中的一种)中存在JIT即时编译器,能够捕获程序中的热点代码,编译成机器码缓存起来存入方法区中,当遇到相同的代码时,不必再去使用解释器翻译,直接去找对应的机器码执行。避免解释器重复多次的解释执行。

个人理解,如有错误欢迎、感谢指出

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值