为什么java要编译成字节码解释执行而不是直接解释执行源码?

为什么java要编译成字节码解释执行而不是直接解释执行源码?我说的是为什么java的解释器(虚拟机)不直接解释执行源码,而是解释执行编译后产生的字节码?那还编译它干嘛?直... 为什么java要编译成字节码解释执行而不是直接解释执行源码?
我说的是为什么java的解释器(虚拟机)不直接解释执行源码,而是解释执行编译后产生的字节码?那还编译它干嘛?直接解释执行不就可以了?
反正都是要解释执行,为什么不解释器不是直接解释源码执行,而是解释编译后的字节码?
展开
 我来答
春夏秋冬
推荐于2016-09-18 · 知道合伙人教育行家
春夏秋冬
知道合伙人教育行家
采纳数:490 获赞数:1419

向TA提问 私信TA
展开全部
为了跨平台
编译成的字节流文件.class,与硬件和操作系统无关,这是跨平台基础,然后具体执行,再用各自平台解释器,解释成本地机器码
更多交流,进我空间
------------------------------------------
java是一种编译+解释的语言,编译的结果本身保证了代码安全和版权,如果全部解释源代码,象早期的ASP,那JAVA就不敢用于银行、证劵等安全性较高的场合
更多追问追答
追问
那反正都是跨平台,为什么不直接解释执行源码?而要把源码编译成字节码,然后再解释执行字节码?那还不如直接翻译成具体平台的机器指令然后编译执行
追答
刚对你的追问回答了,在你追问的上边,更多交流,进我空间
百度网友9e1976f
2015-01-25
知道答主
回答量:1
采纳率:0%
帮助的人:1268
展开全部
因为Java在Java虚拟机里面执行的,就好比如在windows下用虚拟机开Linux系统一样,然后Linux系统下再运行源程序。Java源代码在Java虚拟机这样一个环境去执行,而windows开了一个java虚拟机是在Java虚拟机里执行,而不是在windows下执行,所以他翻译成字节码提供给Java虚拟机执行。像C语言这样编译链接运行是在windows下进行的,而不是在虚拟机下运行,所以是直接转换成转换成汇编语言,然后再由汇编语言到机器语言。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JinCeon
2012-04-10 · TA获得超过695个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:403万
展开全部
为什么你要来问这个问题,而不是自己上网搜??
==============
那反正都是跨平台,为什么不直接解释执行源码?而要把源码编译成字节码,然后再解释执行字节码?那还不如直接翻译成具体平台的机器指令然后编译执行
========================
我看了你的回答记录了,你关注分类是C/C++。你在windows里写了个C/C++程序,编译成了exe可执行文件,这个exe可执行文件放到linux/unix下,能运行吗???

java可以,只要安装了jre,不过是window,还是linux,或什么别的操作系统,编译出来的字节码都可以直接运行。
==========================
然后你又觉得,那在window下编译一次,得到的exe在window下运行;在linux下再编译一次,得到的文件在linux运行,不就得了?

如果你的困惑在这里,我很好奇,你真的有学过c/c++???
难道你不知道windows/linux里c/c++语法虽然一样,但是他们的api,实现等却不一样???
更多追问追答
追问
我当然知道,跨平台不是简单的同一个源程序换一个编译器就行了的,与具体的系统平台(比如库函数的标识符,和其它系统特性)和硬件平台(比如大小端模式)

我困惑的是,为什么要都是要解释执行,都可以跨平台,java不选择脚本的方式,而是选择编译成字节码,然后再对字节码进行解释执行?那直接解释执行源码不就可以了吗?
追答
java不选择脚本的方式,而是选择编译成字节码??
能不能告诉我,你说的脚本是什么??javascript,vbscript?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaopohai0315
2012-04-10
知道答主
回答量:26
采纳率:0%
帮助的人:20.9万
展开全部
楼上正确!是为了跨平台~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式