windows下只要有VS就能编译运行.c源程序,linux下只要有GCC,ICC就能编译运行.c源程序,其他操作系统只要有对应的编译器就能编译运行.c源程序,这样c语言一样也实现了“跨平台”,为什么java非要多此一举弄个中间码来实现跨平台呢?为什么不能像c语言那样直接拿.c源程序在装有对应编译器的操作系统里运行呢?难道说c的这种所谓跨平台有什么重大缺陷?

解决方案 »

  1.   


    一次编译到处运行VS一次编写到处编译VS此处编写此处运行其他哪儿都不能用 你觉得哪个更好
      

  2.   

    java的跨平台优势是一次编译,到处执行你也说了呀
    c得程序你要重新编译一次才OK
    你给客户的都是源程序?
    还要让别人编译了再用的?
      

  3.   

    一次编译到处运行VS一次编写到处编译VS此处编写此处运行其他哪儿都不能用 你觉得哪个更好
      

  4.   


    请问为什么不能直接给客户源程序呢(难道需要保密)?java的中间码.class不是也可以被反编译得到源程序么?同理,java的.class每次也要重新解释一次才可以用,都是重复,难道java的重新解释比c的重新编译要方便?
      

  5.   


    于是,你给了linux用户一个你在windows平台上编译的客户端程序么
      

  6.   

    上面属于引用不当,指的是,如果使用java,那么可以提供给其他平台用户一个jar文件,正常情况下它依然能够被正常运行,但是,你给其他平台用户一个你编译得C程序,还可以直接运行么?如果不是开源项目,谁会直接把源代码公布给别人……
      

  7.   


    java你直接给人家一个jar包就能用了
    这多方便c的程序你给人家源代码
    然后,用户把你的源代码改了改才编译
    之后,由于软件bug出现了工程事故
    这个责任谁来承担?
    用户说没改过代码,你能把客户怎么样?不说用户改代码的问题了
    你真的直接给人家源代码,
    90%的用户直接要骂人了
      

  8.   

    你可以把jvm看做是编译器但是他和你提到的那些不同的是
    1:所有电脑上基本上都装有jvm
    2:他编译的是字节码而不是源代码,企业可以发布字节码但是不会发布源代码,除非他不想混了
      

  9.   

    其实,实现中间码 还有 一个原因 就是,安全java不是安全性很好的语言么~安全就源于他的中间码~
      

  10.   

    我觉得吧 其实最终用户本地只需要一个jre就够了,jdk都不用,jdk是给开发人员用的(其中也包括了一个jre),产品交付的时候只给用户一个jar包或者是war包以及相关的文档就行了,而且不用再重新编译,用户就可以运行应用。
      

  11.   

    你用vc写的MFC程序到linux下能用gcc编译?怪了去了
      

  12.   

    换一个机器或平台就要编译才能用,那是C,JAVA不用
      

  13.   

    java字节码文件在哪里执行的呢?jvm上嘛,你要知道java能实现跨平台,是因为只需要在各个系列的计算机上安装jvm,就能解释字节码文件了。用大腿想想吧。你想象一下,jvm就像一个翻译一样,能把你的语言解释给机器,所以你只需要翻译,就能把你的意思告诉别人
      

  14.   

    vc++编译出的exe能在linux上直接运行吗?Java编译成的jar文件可以在Windows和Linux上都可直接运行。