我在运行java程序时,比如eclipse或者jbuild,他们都是用java写的,但是奇慢无比。而且对于java程序编译成的class文件,现在都有很多反编译工具可以得到源代码。这样岂不是很不安全?而且,如果我下载了某个用java写的软件,还要在机器上安装虚拟机,这对于一个一般的用户来说,可能比较麻烦。除了在java上面的应用比较多、java可以跨平台之外,它还有什么其他的优点?为什么那么多人都选择java?

解决方案 »

  1.   

    安全``,开源~~
    不愿臣服于微软,
    还有个人爱好~~,
    觉得有成就,
    最重要的,现在做JSP比做ASP拿的钱多~~
      

  2.   

    除了在java上面的应用比较多、java可以跨平台之外
    ---
    楼主似乎对这两点很不屑啊
    说到虚拟机,.net不也是一个差不多虚拟机的dd吗,
    java的优势在web,客户端是不需要虚拟机的,class也是拿不到的,想想你访问某个jsp页面,本机上需要虚拟机吗?class下载到你本地了吗?
      

  3.   

    支持楼上的
    web应用的时候是不需要下载虚拟机的..
      

  4.   

    java最大的优点就是开发效率高。
    不是什么人都能用c++的。
    但是用java的人随便都能抓到一箩筐。但是,真正能用好java的人,又很少了。
      

  5.   

    但是除了web之外java也有application程序,比如一个用swing界面的应用程序,要是运行它的话不是就要安装虚拟机吗?就算是web开发,如果有applet这样的控件,客户端不是也要安装java applet运行环境吗?
      

  6.   

    当你用了段时间的JAVA后,你自己就会感觉到会爱上它。
    它的技术是在不段更新,每年几乎都有新技术推出,那会让你
    永远都有想学的念头,而且JAVA的工资肯定是比。NET高的,在
    大的企业级应用上面,。NET就比不上JAVA了,我们公司光一个
    项目做了3年居然累积了上亿元,。NET我还没有听说过。
    如果你想挑战自我,如果你喜欢刺激的编程,那JAVA准没错。
    新的东西会让你眼花缭乱,冲劲倍足!
      

  7.   

    但是如果仅仅是因为java上面新技术比较多的话,那么传统的基础型软件的开发该如何呢?在这方面java肯定是比不上c或c++的。
      

  8.   

    java够modern ,也够强大
    除了慢点,也慢不了多少,人当然不能太期待完美,不求甚解嘛
      

  9.   

    我没有做过微软的东西,一直在linux下开发,经常和c++打交道,现在有点想往java上转的趋势。但是我不明白java运行那么慢而且需要客户端安装虚拟机,为什么还是有那么多人使用。如果我写了一个java软件,不想开源,但是当客户得到class代码的时候,可以利用反编译来得到源代码,这样岂不是很不安全。再有,开源有什么好处?
      

  10.   

    对,就是个人喜欢,每个技术都有他自己的应用场景就是了。-----------------------
    http://blog.xerik.cn (专注于Java技术)
      

  11.   

    Java的优势在于Web,Web应用基本是Java和.Net的天下,用C/C++做Web几乎是天方夜谈。另外,是跨平台,搂主是否尝试将linux用c++做的系统移植到Windows或者Unix,没有一定的功力,更本做不到,即使有这样的功力做起来也很麻烦,而且容易出错,ACE就是一个很好的例子,为了实现跨平台,使用了大量的宏,代码的可读性差,而且容易出错,虽然历时10多年了,仍然还有很多bug报告。
      

  12.   

    如果这么说的话java在基础软件的开发上是处于劣势的。
      

  13.   

    >>如果这么说的话java在基础软件的开发上是处于劣势的。
    是这样的。Java的运行效率依然还是个问题,虽然很多文章说Java的速度已经接近C/C++,但那是也只是接近,还句话说还是有差距的。
    对效率要求比较高的地方,还是用C/C++,但如果你的机器配置很高,那么还是可以用Java的。
    Java之所以用于Web,也是因为Web服务器都是几十万,甚至上百万的服务器,那配置相当高。
    一般PC上很少有Java的应用,那是因为以目前PC的配置,跑Java还是相当吃力的。JBuilder和Eclipse就是很好的例子。因此,像客户端应用、桌面系统以及基础软件,依然还是C/C++的天下。
      

  14.   

    Java不是不能做客户端应用、桌面系统以及基础软件,它有十二分能力做,
    问题是没有必要用Java重新写一遍。这里面涉及到重新开发带来的风险问题。
    如果你以前已经用C/C++写了一些软件,并且已经被成千上万的用户使用,而且由于
    经过长时间的修改维护,功能已经很完善,结构已经非常复杂,即时Java非常善于
    写这些程序,估计你也不会各种风险重新写过。
    动动脑筋想想,这不是你写了一个几百行,几千行的玩具软件,而是动辄上万行、
    几十万行甚至上百万行的系统程序,请问你敢冒着这个风险重新写吗?即时这个语言非常
    优秀,非常善于写这方面的程序?
    因此许多人误解了Java的能力,不是Java它不能,而是成千上万的其他原因!技术并不主导商业决策!
    请问上百万行的Application Server,上百万行的NASA控制系统,甚至起码上几十万行的
    Java IDE算不算是系统软件呢?!为什么它们能用Java写呢?这是因为它们是新出现的
    桌面应用需求!
    实际上就是Java速度本身来说,也已经与C++相提并论了,今天还刚看了一篇javalobby的文章
    说现在JRubby在Java虚拟机上运行的速度是在C虚拟机运行的速度的两倍:
    http://www.javalobby.org/java/forums/t89729.html
    当然我的意思不是说java的速度已经全面超过了C,而是提醒那些对Java存有速度偏见的人
    Java不再是你想象的那样,也是鼓励广大Java爱好者,Java除了你们喜爱的优秀品质外,
    在速度上也不输于任何现代编程语言。
    顽固的偏见、阴险的流言、狭隘的观点一旦进入人的大脑,就难以消除,这是人性的弱点。
    人的顽固有时达到非常可怕的程度,人们往往难以接受自己过去是错误的,往往难以承认新的
    观点和事物,即便是事实摆在面前,也会扭头不见,这种力量真是可怕。这种顽固造成了历史
    多少顽固势力阻碍甚至扼杀新生事物。
      

  15.   

    成千上万的基于Java的技术,成千上万的Java开源项目,
    并不像某些人所说那样只能Web开发,那只能说明你的Java知识太浅陋了。从嵌入式系统,
    到移动计算,到企业应用,到桌面应用,到航天飞机,到数据库,到集成开发环境,到编译器,
    到网络开发,无处不在,无处不是主导。除了少数操作系统驱动之外,我还真难想象它不能在的
    地方!
      

  16.   

    java在web 方面比较强 
    相对的慢 已经被 网络的慢掩盖
      

  17.   

    Java运行速度慢,那个要从原理上来分析,网上随便搜一下都能知道了
    c/c++也有用武之地的
    请大家不要老是拿着两种语言做无谓的比较,要比较,那你说说
    是汉语好还是英语好?是法语好还是德语好?
    有时候也是需要拿开发效率来换运行效率的!
    现在的社会,时间就是金钱!
    所以~请大家还是继续支持Java!
      

  18.   

    支持java,好处就像上面的人说的似的,其实还有很多很多好处,但是只有你会用java编程时,才能看到和体会到。
      

  19.   

    可能有人误会我的意思了,看来有必要说清楚点。从语言层面讲,Java是一种编程语言(甚至是一个平台),C/C++也是一种编程语言,C/C++能做到的,Java照样能做。
    不管是服务器端还是客户端,桌面应用还是后台应用,Java都能做。Java,由于具有垃圾收集、跨平台以及更纯正的OO,使得它非常适合做Web,这是它的优势所在。目前Java的运行速度已经很快了,甚至有文章已经证明它比C/C++还快,但是它的综合运行效率依然低于C/C++,原因是占用内存太多,一个非常简单Java程序都会占用10M甚至10多M的内存,复杂一点的Java程序会占用上百M的内存,像JBuilder和Eclipse这样的大家伙,会占用好几百M的内存,很多人之所以感觉JBuilder和Eclipse慢,那是因为物理被耗尽,开始使用虚拟内存,狂读硬盘造成的。Java可以做客户端,可以做桌面应用,还可以做后台应用,但是由于Java综合运行效率低的问题,在一般PC上很少有Java做的软件,即使有用的人也少,因为它和用C/C++实现的同类型软件比起来,还是慢了些。另外,我个人认为,我对Java没有偏见,对C/C++也没有偏见,我只是实事求是的把它们的优势和劣势说了出来。如果C++的Fans们看到我的言论,可能也会认为我对C/C++有偏见。
      

  20.   

    muymuy:
    这样说我很赞同,的确,客户端的机器通常要比服务器配置差的多,Java的做客户端的弱点是它的部署和内存消耗。单就速度来说,用户感觉Java的桌面软件慢一些往往是因为它自身带了一个很大的运行时环境造成的,比如它的虚拟机和bytecode以及jit后的二进制以及垃圾收集机制,这些既给Java带来了优点,也同时带来内存消耗问题。操作系统在应用程序内存超过一定阀值之后必然会产生虚拟内存耗尽,然后出现著名的内存抖动现象,不断在硬盘和内存之间swap。所以目前客户端硬件限制是Java桌面应用推广的一个最终要的限制因素。
    当物理内存大于1G时,你会发现Java程序和本地程序一样快,根本感觉不出来什么区别。我的机器配置就是1G的,我往往会运行一个NetBeans IDE,一个OpenOffice,一个FireFox,一个MySQL数据库,有时还会运行WinAmp,机器仍然飞快,而且在各个程序之间切换,没有任何读盘的声响,速度非常快。
    我觉得现在有一个Java客户端程序的配置门槛,最小要512M,推荐是1G内存。如果不能满足这些条件,的确Java应用软件会给人响应慢的现象。
    幸好,硬件升级现在的趋势是至少512M以上,随着机器配置的升高,Java桌面应用的时代已经到来。
    现在Java6已经实现了代码段共享,也就是如果启动多个Java程序,这几个程序之间共享虚拟机和类代码,只有运行时堆栈是独立的,这将大大减小内存开支。在今后的Java 7等版本中,有可能真正
    实现所谓MVM(Multi-VM),即在一个Java虚拟机上运行多个Java程序,那时,多个Java程序共享一个虚拟机,Java程序所占用的内存只有自己的代码和运行栈,Java程序就有可能和C/C++一样小,
    如果能在操作系统启动时实现一次虚拟机启动,那么Java的启动速度也将和C/C++一样快。
    所以Java有着很好的桌面应用的前景,虽然历史上Java的确在桌面应用上落后很多,但是是金子总会发光的,随着硬件的提高和Java自身不断的改进,Java桌面应用繁荣的时代就要到来。
      

  21.   

    其实,Java现在已经能做很多传统C/C++的桌面应用,比如Office软件,这可是桌面应用
    软件的典型和极致了,国内永中Office就是用Java/Swing做的,我真的看不出来和MS Office
    有什么区别:无论是速度、响应、界面友好程度,他们有试用版,不妨试试就知道了。这个
    Office可是纯Java/Swing的。
    另外OpenOffice的界面部分其实也是用Swing做的,Sun公司自己的Office产品Star Office(OpenOffice开源以前的前身)也是用Swing做的。
    现在浏览器也可以说是桌面应用软件的极致了吧,有一个浏览器Opera Mini也是Java Swing写的。
    浏览器当然不推荐用Java写,一方面部署问题(JRE的安装),一方面重新开发的风险,还有就是许多
    现有浏览器插件是C/C++写的,兼容问题。不用Java写绝对不是因为Java没有这个能力,而是其他
    综合因素。
    所以说Java桌面应用到来一点没有吹嘘、宣传的意思,如果去国外网站留心一下,许多评论都把
    Java桌面应用的复兴作为近期的预言之一。
    所以我们需要的是:硬件的升级、Java自身的改进,当然关键是我们开发者给于的支持和信心!
      

  22.   

    如果说Java是一个美丽的少女,那么C/C++就是一个风情万种的少妇,我都喜欢。
    如果少女再多一点风情,那我会更喜欢。希望这一天早一点到来!
      

  23.   

    WOW, lady-killer in action!:)
      

  24.   

    什么时候操作系统自带虚拟机就好了
    ==================================
    Java开源可以说是解决这一问题的关键所在,以前Java的部署之所以困难,其中最重要的原因
    就是Java的授权问题,授权问题是阻碍Java部署的最主要障碍。现在Java开源了,Linux可以
    自由绑定JRE了,Linux是开发者使用的主力平台之一。Windows上面的问题主要是通过OEM厂商
    来解决,就是OEM厂商在机器上预装Java平台。目前市场新买的电脑,不管是台式机器还是笔记
    本基本上都预装了Java平台,所以这个部署问题正在得到解决。
    Java的开源犹如打开一扇解放Java的大门,今后开源Java产生的影响将逐步体现出来。
    开源的Java起码可以解决诸如以下问题:
    1.Java平台发布和安装问题,比如和操作系统的绑定,Java应用软件的发布安装等问题。
    2.吸引更多Java开发者,扩大Java开发社区。
    3.开源社区将更有力驱动Java平台开发,使Java的发展更加健康。
    4.Java开源激发的创新,尤其是开源创新将是无可估量,比如以前所说浏览器的JRE插件可能
    会做的像Flash插件那么大,Applet有可能因此而复兴。MVM可能出现,桌面应用软件因此受益。
    更多的脚本语言可能运行到JVM平台上。等等,人有多大胆、地有多大产。
    Java开源的影响是深远的,多年之后评价这一事件可能会和Java诞生相提并论的事件,Java从此
    从少年时期进入成年时期。几年后也许大家才能意识这一事件真正含义。
      

  25.   

    "很多人之所以感觉JBuilder和Eclipse慢,那是因为物理被耗尽,开始使用虚拟内存,狂读硬盘造成的。"这句话应该送给觉得java慢的人,强调10000遍都不过分!
      

  26.   

    哈哈哈哈哈..
    强人很多啊.
    是有点慢.不过还算OK了.没有十全十美的东西,JAVA在web上还是很强啊.
      

  27.   

    "很多人之所以感觉JBuilder和Eclipse慢,那是因为物理被耗尽,开始使用虚拟内存,狂读硬盘造成的。"这句话应该送给觉得java慢的人,强调10000遍都不过分!的确实这样呀。