我在运行java程序时,比如eclipse或者jbuild,他们都是用java写的,但是奇慢无比。而且对于java程序编译成的class文件,现在都有很多反编译工具可以得到源代码。这样岂不是很不安全?而且,如果我下载了某个用java写的软件,还要在机器上安装虚拟机,这对于一个一般的用户来说,可能比较麻烦。除了在java上面的应用比较多、java可以跨平台之外,它还有什么其他的优点?为什么那么多人都选择java?
------解决方案--------------------
> > 如果这么说的话java在基础软件的开发上是处于劣势的。
是这样的。
Java的运行效率依然还是个问题,虽然很多文章说Java的速度已经接近C/C++,但那是也只是接近,还句话说还是有差距的。
对效率要求比较高的地方,还是用C/C++,但如果你的机器配置很高,那么还是可以用Java的。
Java之所以用于Web,也是因为Web服务器都是几十万,甚至上百万的服务器,那配置相当高。
一般PC上很少有Java的应用,那是因为以目前PC的配置,跑Java还是相当吃力的。JBuilder和Eclipse就是很好的例子。因此,像客户端应用、桌面系统以及基础软件,依然还是C/C++的天下。
------解决方案--------------------
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除了你们喜爱的优秀品质外,
在速度上也不输于任何现代编程语言。
顽固的偏见、阴险的流言、狭隘的观点一旦进入人的大脑,就难以消除,这是人性的弱点。
人的顽固有时达到非常可怕的程度,人们往往难以接受自己过去是错误的,往往难以承认新的
观点和事物,即便是事实摆在面前,也会扭头不见,这种力量真是可怕。这种顽固造成了历史
多少顽固势力阻碍甚至扼杀新生事物。