为什么java要编译成字节码解释执行而不是直接解释执行源码?
为什么java要编译成字节码解释执行而不是直接解释执行源码?我说的是为什么java的解释器(虚拟机)不直接解释执行源码,而是解释执行编译后产生的字节码?那还编译它干嘛?直...
为什么java要编译成字节码解释执行而不是直接解释执行源码?
我说的是为什么java的解释器(虚拟机)不直接解释执行源码,而是解释执行编译后产生的字节码?那还编译它干嘛?直接解释执行不就可以了?
反正都是要解释执行,为什么不解释器不是直接解释源码执行,而是解释编译后的字节码? 展开
我说的是为什么java的解释器(虚拟机)不直接解释执行源码,而是解释执行编译后产生的字节码?那还编译它干嘛?直接解释执行不就可以了?
反正都是要解释执行,为什么不解释器不是直接解释源码执行,而是解释编译后的字节码? 展开
展开全部
为了跨平台
编译成的字节流文件.class,与硬件和操作系统无关,这是跨平台基础,然后具体执行,再用各自平台解释器,解释成本地机器码
更多交流,进我空间
------------------------------------------
java是一种编译+解释的语言,编译的结果本身保证了代码安全和版权,如果全部解释源代码,象早期的ASP,那JAVA就不敢用于银行、证劵等安全性较高的场合
编译成的字节流文件.class,与硬件和操作系统无关,这是跨平台基础,然后具体执行,再用各自平台解释器,解释成本地机器码
更多交流,进我空间
------------------------------------------
java是一种编译+解释的语言,编译的结果本身保证了代码安全和版权,如果全部解释源代码,象早期的ASP,那JAVA就不敢用于银行、证劵等安全性较高的场合
更多追问追答
追问
那反正都是跨平台,为什么不直接解释执行源码?而要把源码编译成字节码,然后再解释执行字节码?那还不如直接翻译成具体平台的机器指令然后编译执行
追答
刚对你的追问回答了,在你追问的上边,更多交流,进我空间
展开全部
因为Java在Java虚拟机里面执行的,就好比如在windows下用虚拟机开Linux系统一样,然后Linux系统下再运行源程序。Java源代码在Java虚拟机这样一个环境去执行,而windows开了一个java虚拟机是在Java虚拟机里执行,而不是在windows下执行,所以他翻译成字节码提供给Java虚拟机执行。像C语言这样编译链接运行是在windows下进行的,而不是在虚拟机下运行,所以是直接转换成转换成汇编语言,然后再由汇编语言到机器语言。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么你要来问这个问题,而不是自己上网搜??
==============
那反正都是跨平台,为什么不直接解释执行源码?而要把源码编译成字节码,然后再解释执行字节码?那还不如直接翻译成具体平台的机器指令然后编译执行
========================
我看了你的回答记录了,你关注分类是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,实现等却不一样???
==============
那反正都是跨平台,为什么不直接解释执行源码?而要把源码编译成字节码,然后再解释执行字节码?那还不如直接翻译成具体平台的机器指令然后编译执行
========================
我看了你的回答记录了,你关注分类是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?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |