Java能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行?

本文探讨了Java是否可以像C语言一样直接编译为机器码运行,以及C语言为何不采用虚拟机。作者指出,Java的字节码跨平台性和动态优化是其优势,而C语言的直接操作内存和效率使其在特定场景下更优。Java的解释型和编译型并存,以及C语言的静态编译,反映了不同语言设计的权衡和应用场景的针对性。
摘要由CSDN通过智能技术生成

新司机上路,思考一个问题。如果Java直接编译成机器码,这样岂不解决了Java运行缓慢的问题,进而淘汰或者取代C语言。(这里,不是说就此取消Java的JVM解释型运行的机制,我的意思这两种方式并存。)衍生问题:C语言为什么不设计一个C语言虚拟机,这样扩展C语言的跨平台性。

自己思考的角度回答自己的问题,不够全面,希望大家补充,感谢各位大佬!
看到很多别人的回答,有一句话非常惊艳。

通常,没有“必须这么设计”的绝对理由,之所以会是这样,只是因为被设计成这样。

还有一句话,也讲的非常好。

语言本身与是否是解释型或者编译型无关。

从这两个观点,我自己获得了一些看法。理论上,不管是Java还是C,应该都存在解释型以及编译型,肯定会有人这么尝试过,但是因为最终Java与C的不同定位,导致最终这种形态并非主流,随之被淘汰。

好比,你告诉自行车,摩托车能开这么快,你为什么设计成摩托车。自行车拥有轻便的特性,摩托车拥有快速的特性,两者不可兼得。但是,有人为了得到两者的优点,出现了电动自行车,但是于此同时它拥有的两个特性又逊色于前两者。

衍生的思考,之所以Java不设计成直接编译成二进制机器码给发给主机,是因为保持Java的编译二进制字节码再边编译边执行拥有前者不具备的优势,例如,具备一码(字节码)通天下的跨平台性。还有一种提问,为什么一定要边编译边执行,不一次性全编译然后再执行。的确,有人这么做过,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值