其实java和C++根本没有可比性。
C++比java早出现了几十年。可以说java语言的一切都是以C和C++为基础的。关键是,java是一种应用级别的商业语言,而C++属于系统级的编程语言。之所以没有可比性,因为java与C++相比,与硬件隔了一层虚拟机。这样做的目的很清楚:跨平台。java主要用于商业目的,对于商业项目来讲,稳定性是第一位的。因此,java的垃圾处理机制和异常捕获机制用在此处非常合适。跨平台也是第一位的,你永远也不会知道客户终端是什么样--PC? MAC? 还是IBM的大型机?
同样,对于商业项目来讲,速度并不是第一位的。在这个论坛上指责java的人(往往根本不了解java),第一条理由就是虚拟机太慢,实在是鼠目寸光。你以为全世界都用PC和windows操作系统?商业程序不比电脑游戏,许多商业程序往往运行在小型机,甚至巨型计算机上,对他们来说,java与C++的那点速度差异根本不值得称道,而稳定性是最重要的--这些计算机往往数年不能关闭。

解决方案 »

  1.   

    如果不用于宇宙发射或核爆炸用N台LINUX做并行及负载要实用的多稳定性,银行的小型机大型机都用UNIX + C&C++来做。很好理解,因为UNIX和C&C++经历了时间的考验。我对JAVA的担心主要在于中间件的出现和思想,在LINUX上还好,但在WINDWS平台,.NET主要也是实现组件接口的思想(抱歉,.NET也不太熟。),这样在WINDOWS平台,ASP + COM就成了JAVA网络应用的强劲对手
      

  2.   

    呵呵,嗅到火药味了我并没用贬低JAVA的意思,也没有想把JAVA说的一无是处。哪天,你要是看到我在问JAVA的EJB怎么部署,JAVA中如何调OPENGL做游戏等等,也没什么奇怪的:P其实从语言本身来说,很多地方JAVA比C++做得更清晰,更理论一些。如果JAVA早于C&C++,可以指针运算,或许今天我们可以用到固化了JVM的JAVA操作系统从本质上来说,出现的语言都有自己的特色,都有用。因为最后还是变成机器码给CPU。所以对于控制火星车的机械部件和数据通讯,比尔拍拍桌子,说要用BASIC来完成,也没什么奇怪的。唉,上回看神州发射的控制室,都是用WINDOWS监控的,郁闷啊,哪怕用LINUX的XWINDOWS来做我也高兴点啊,人家火星都用SUN的UNIX来搞。
      

  3.   

    国内客户的应用平台是比较单一的,国外的情况有很大的不同,应用的年代比较早,遗留很多不同的系统,公司里使用各种版本的UNIX,WINDOWS,有时会听到一个十分陌生的系统.
    其实在国内的大公司情况也是一样,比如电信,他们使用的系统情况是很复杂的.
    用C写的程序经常需要开发商带着源代码跑去安装调试,公司里的技术人员出差3个月去现场维护.
      

  4.   

    ------如果JAVA早于C&C++,可以指针运算,或许今天我们可以用到固化了JVM的JAVA操作系统JAVA有指针运算。不过被封装起来了,没有显式的地址操作符而已。
    要说跨平台,C和C++也号称“跨平台”。理论上只需在目标机器上重新编译而已。但这可是个麻烦事。升级过Linux的内核吗?要下载100M的压缩包(解压后有250M,全是源代码文本文件!)然后在本机上重新编译。那可是个大工程,麻烦的很,不是高手干不了。想想看用C写applet这样的程序--那就得源代码传到浏览器上,然后浏览器当场编译当场运行,谁受得了?
      

  5.   

    alienbat(死灵巫师)你说的真不错,我支持你,呵呵
    java和c++各有特点,就看你喜欢用什么,而且,你以后公司要你用什么就得用什么,不然没钱拿,这个最重要!!
      

  6.   

    Java和C/C++各自有各自的适用领域,没有什么语言可以包打天下的,没有有一种语言可以同时兼顾速度和跨平台,易用性和功能强大。
    这样问题已经是很无聊的了。
      

  7.   

    Java和C/C++各自有各自的适用领域,没有什么语言可以包打天下的,没有有一种语言可以同时兼顾速度和跨平台,易用性和功能强大。
    这样问题已经是很无聊的了
    这句话应该顶呀