请问为什么java要多此一举转化为中间码来实现跨平台? windows下只要有VS就能编译运行.c源程序,linux下只要有GCC,ICC就能编译运行.c源程序,其他操作系统只要有对应的编译器就能编译运行.c源程序,这样c语言一样也实现了“跨平台”,为什么java非要多此一举弄个中间码来实现跨平台呢?为什么不能像c语言那样直接拿.c源程序在装有对应编译器的操作系统里运行呢?难道说c的这种所谓跨平台有什么重大缺陷? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一次编译到处运行VS一次编写到处编译VS此处编写此处运行其他哪儿都不能用 你觉得哪个更好 java的跨平台优势是一次编译,到处执行你也说了呀c得程序你要重新编译一次才OK你给客户的都是源程序?还要让别人编译了再用的? 一次编译到处运行VS一次编写到处编译VS此处编写此处运行其他哪儿都不能用 你觉得哪个更好 请问为什么不能直接给客户源程序呢(难道需要保密)?java的中间码.class不是也可以被反编译得到源程序么?同理,java的.class每次也要重新解释一次才可以用,都是重复,难道java的重新解释比c的重新编译要方便? 于是,你给了linux用户一个你在windows平台上编译的客户端程序么 上面属于引用不当,指的是,如果使用java,那么可以提供给其他平台用户一个jar文件,正常情况下它依然能够被正常运行,但是,你给其他平台用户一个你编译得C程序,还可以直接运行么?如果不是开源项目,谁会直接把源代码公布给别人…… java你直接给人家一个jar包就能用了这多方便c的程序你给人家源代码然后,用户把你的源代码改了改才编译之后,由于软件bug出现了工程事故这个责任谁来承担?用户说没改过代码,你能把客户怎么样?不说用户改代码的问题了你真的直接给人家源代码,90%的用户直接要骂人了 你可以把jvm看做是编译器但是他和你提到的那些不同的是1:所有电脑上基本上都装有jvm2:他编译的是字节码而不是源代码,企业可以发布字节码但是不会发布源代码,除非他不想混了 其实,实现中间码 还有 一个原因 就是,安全java不是安全性很好的语言么~安全就源于他的中间码~ 我觉得吧 其实最终用户本地只需要一个jre就够了,jdk都不用,jdk是给开发人员用的(其中也包括了一个jre),产品交付的时候只给用户一个jar包或者是war包以及相关的文档就行了,而且不用再重新编译,用户就可以运行应用。 你用vc写的MFC程序到linux下能用gcc编译?怪了去了 换一个机器或平台就要编译才能用,那是C,JAVA不用 java字节码文件在哪里执行的呢?jvm上嘛,你要知道java能实现跨平台,是因为只需要在各个系列的计算机上安装jvm,就能解释字节码文件了。用大腿想想吧。你想象一下,jvm就像一个翻译一样,能把你的语言解释给机器,所以你只需要翻译,就能把你的意思告诉别人 vc++编译出的exe能在linux上直接运行吗?Java编译成的jar文件可以在Windows和Linux上都可直接运行。 JComboBox 获取箭头部分或者如何为箭头部分添加监听事件? jdk7.0安装到同学的本上变成了6.0的了。 本人想自己做个小项目练手 不知道做什么样的项目 创建数组的问题 我将字符:┬ 写入Swing的JTextArea或者JTextField中,为什么显示就不正常了? 怎么得到我要的文件名 关于为组件添加事件,高手们看看这是为什么? java很基础的问题,大家不要笑话我。我是个新手! .net 有Crystal reports可以用,java 有吗? Properties中,如何根据key读取value SunYi进来看下,谢谢 高手请指教
一次编译到处运行VS一次编写到处编译VS此处编写此处运行其他哪儿都不能用 你觉得哪个更好
c得程序你要重新编译一次才OK
你给客户的都是源程序?
还要让别人编译了再用的?
请问为什么不能直接给客户源程序呢(难道需要保密)?java的中间码.class不是也可以被反编译得到源程序么?同理,java的.class每次也要重新解释一次才可以用,都是重复,难道java的重新解释比c的重新编译要方便?
于是,你给了linux用户一个你在windows平台上编译的客户端程序么
java你直接给人家一个jar包就能用了
这多方便c的程序你给人家源代码
然后,用户把你的源代码改了改才编译
之后,由于软件bug出现了工程事故
这个责任谁来承担?
用户说没改过代码,你能把客户怎么样?不说用户改代码的问题了
你真的直接给人家源代码,
90%的用户直接要骂人了
1:所有电脑上基本上都装有jvm
2:他编译的是字节码而不是源代码,企业可以发布字节码但是不会发布源代码,除非他不想混了