编译器和解释器相关知识总结(个人看法)

之前百度 编译型语言和 解释型语言 ,知道C语言等是 编译型语言,java、python等是解释型语言。但是学习Jvm的时候看书又说java是先编译再jvm解释执行(其实也不全是解释),所以就很困惑java到底是什么类型的语言。

看了一些资料后 ,其实我觉得没有编译型语言和 解释型语言这一说法。因为任何高级语言都可以解释执行也可以编译执行。只是区别是 有的适合编译执行(速度更快等等原因),有的适合解释执行(跨平台特性)。各有利弊,当然 能将二者结合 ,各取优点是未来编译器和解释器发展的方向。

编译是 生成另一种语言的文件(比如 javac 编译Java代码生成 class文件),不去运行代码。

解释是 读取代码 生成指令让计算机去执行,不生成中间代码。

java为什么是半解释半编译语言?
不是因为 javac先编译成字节码,然后jvm解释执行字节码
而是因为 jvm执行引擎 有二种工作方式,

JDK1.e时代,将Java语言定位为“解释执行”还是比较准确的。再后来,Java也发展出可以直接生成本地代码的编译器。 现在JVM在执行Java代码的时候,通常都会将解释执行与编译执行二者结合起来进行。翻译成本地代码后,就可以做一个缓存操作,存储在方法区中。

所以一开始说Java是解释型语言是正确的,jvm只有解释的功能,只是后来发展出了JIT编译器。

链接1 : 你知道「编译」与「解释」的区别吗?.
链接2 : 编译器与解释器的区别和工作原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值