编译Java源程序的解释器_Java编译器/解释器

Java在编译时被编译成中间的“字节码”.这与在编译时编译为机器语言的C语言相反. Java字节码不能以编译C代码的方式直接在硬件上执行.相反,字节代码必须在运行时由JVM(Java虚拟机)解释才能执行. C语言的主要缺点是当编译时,该二进制文件将仅适用于一个特定的体系结构(例如x86).

像PHP这样的解释性语言有效地系统独立,并且依赖于系统和架构特定的解释器.这导致更大的可移植性(相同的PHP脚本在Windows机器和Linux机器上工作等).然而,这种解释导致性能下降.诸如PHP的高级语言需要更多的时间来解读,而不是由硬件执行的特定于机器的指令.

Java寻求在纯编译语言(无可移植性)和纯解释语言之间找到妥协(这显然较慢).它通过将代码编译成更接近机器语言的表单(实际上,Java字节代码是机器语言,仅适用于Java虚拟机),但仍可以在体系结构之间轻松传输来实现.由于Java仍然需要执行软件层(JVM),因此它是一种解释语言.但是,解释器(JVM)以称为字节码而不是原始源文件的中间形式运行.这个字节码是在编译时由Java编译器生成的.因此,Java也是一种编译语言.通过这种方式,Java可以获得编译语言的一些优势,同时也获得了解释语言的一些优势.然而,它也继承了这两种语言的一些限制.

正如Bozho指出的那样,通过使用Just in Time(JIT)编译,有一些增加Java代码(和其他字节代码语言,如.Net)的性能的策略.实际过程根据需求从实现到实现不同,但最终结果是在编译时将原始代码编译成字节码,然后在执行之前在运行时运行编译器.通过这样做,代码可以以接近原始速度执行.一些平台(我相信.Net这样做)可以节省JIT编译的结果,替换字节码.通过这样做,程序的所有未来执行将执行,好像该程序从一开始就是本地编译的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值