一个最近完成的JAVA项目的反思

---摘自《网易》 (文/caiyu)

一个最近完成的JAVA项目的反思。 
最近作了一个电子商务项目,由于尝试创新使用了 
JAVA  SERVLET/JSP技术和其他本人不熟悉的技术, 
中间吃了很多苦头,反思一下,有些经历与大家分 
享,有些问题也想与诸位大虾探讨一下。 

我们的电子商务项目从商业角度而言,完全是一个 
普通的电子商务项目,从技术角度而言,如果采用 
本人熟悉的NT+SQL  SERVER+ASP+IIS,完全没有任何 
特殊之处。事实上到最后,经过6个多月在JAVA上 
的痛苦挣扎和漫长煎熬,我们放弃了JAVA的全部工作, 
转回NT+ASP,1个月就轻松完成全部工作。不过JAVA 
将作为下一个版本推出。 

项目一开始,为了追赶JAVA狂潮,我们老板就要求使用 
JAVA,本人也想趁机学习JAVA,于是就抛弃了现有 
的熟悉的成熟的NT技术,转向SERVLET+JSP。 
(反思一:在新项目中,千万不要大规模的使用 
不熟悉的新技术。) 

因为我们项目组的成员对UNIX+LINUX都不太熟悉, 
所以将开发平台和运行平台都设为NT+IIS+JRUN+ORACLE。 
想着JAVA跨平台,所以这套设置应该问题不大, 
以后应该很容易转换。谁知以后却因此大吃苦头!! 
(反思二:JAVA跨平台并不意味着整个项目的跨平台, 
一定要选好运行平台的组合。) 

整个项目的设计采用通用的三层结构,浏览器做用户 
接口,SERVLET/JSP/IIS+JRUN处理客户请求,后台使用 
NT+ORACLE。后来由于IIS+JRUN实在太烂,或者是我们 
水平太差,负载一大,老是出问题,就换成了 
ORACLE  APPLICATION  SERVER。原想ORACLE产品有口皆碑, 
谁知其中也是垃圾一大堆。到了很后,同一个ORACLE 
高手聊天,才知道,ORACLE中诸如ESIGNER,DEVELOPER, 
ORACLE  APPLICATION  SERVER等等,都是工业界臭名照著 
的烂烂。唉,又中招了!!! 

有网友说用IBM  WEBSPHERE,我们当初也想过,可惜最终 
没有采用,不知他对大负载如何,实用效果如何?? 

回头想想,我们的上述平台组合最大的弊病在于采用了 
多家技术和产品。因此在出现问题,寻求技术支持时, 
各家公司就采取了无耻的扯皮推委手段。微而软推 
傲乐寇(ORALE),傲乐寇推爱赖儿(ALLAIR-JRUN), 
爱赖儿推微而软。我们不怕花钱,但是最怕花的不明 
不白。唉,又中招了!! 

有人建议我们应该使用LINUX平台。我们承认NT对JAVA的 
支持可能确实有些问题,谁知道鼻儿爱刺(BILL  GATES) 
有没有下令在NT中内置几个JAVA炸弹!!!他是有劣迹 
在先的。但JAVA对我们的跨平台承诺不就成了泡影??!! 

我们项目组的成员对LINUX并不熟悉,搭建平台遇到很多 
问题。很后的时候,我个人曾经在几台PC上尝试搭建过 
LINUX+APACHE+ORACLE+JSERVE+SERVLET+JSP做实验,非常困难。 
我承认我对LINUX不是太熟,可是LINUX下安装搭建软件 
也太难了吧???!!!轻松装完RED  HAT  LINUX后, 
噩梦就开始了,先是捣枯半天,才装上XWINDOWS,APACHE, 
JDK,JSWDK。然后花了两整天才装好JSERVE。接下来 
装ORACLE更是噩梦!!失败好几次,两周后才让他勉强运行。 
中间请教了无数各方高人,查阅了无数令人望之欲吐的文档。 
最要命的是这个平台不要说实用,就是连我自己的测试 
都通不过,时不时蹦出一些莫名其妙的错误。 
那段时间,我的心中充满了挫折感和失败感!!!!!! 
我太失败了!!!!!!!!!!!!!!!!!!! 
我开始怀念我可爱的NT宝宝!呜呜...爸爸不该喜新厌旧!! 

以上是搭建平台的问题,接下来是编程问题,以及所有 
纠缠在一起的各类问题。 

说句实在话,SERVLET/JSP的开发效率实在太低了,编程 
的工作量和难度实在要远远大于相应的ASP/CGI,痛苦!! 
(我先承认自己JAVA水平不高,但这丫也太难/烦/臭了吧!) 
根据我的经验,作为通用编程语言,JAVA无可比拟。 
但在WEB编程方面,CGI/PERL,ASP,JAVA所能完成的 
功能集合彼此间的差别很小。没有什么东西说是只有 
JAVA能做,ASP/CGI作不了,那只是因为你不会作, 
而且对ASP/CGI作出来的东西有偏见!!在三者中, 
我认为,ASP开发效率最高,运行效率可以接受。CGI 
运行效率我认为是最高的。JAVA不管运行效率是否 
有大家吹的那么高,他的开发效率实在是太低了。 

还有要命的问题是资料太少,除了SUN自己的JAVA站点, 
我很少看到其他出色的JAVA站点。SUN的JAVA站点资料 
也并不是十分实用,缺少大量的例程和案例分析。相比 
之下,ASP/CGI的例程库就十分丰富,基本上WEB编程 
无所不包,我早就习惯了写程序前,先参考相应例程的 
模式,这样可以节省大量的编程时间,少走弯路。 
但写JAVA程序,基本上要从头自己学,自己摸,痛苦! 
更要命是遇到问题时,无处求助!不要说高手,就是 
相关资料都奇缺无比,只好自己闷头哭练!! 
唉,再等个两三年,JAVA资料就会丰富多了!! 

有一些关于JAVA的神话,我才不信呢!比如说: 
SERVLET执行效率高过ASP/CGI,还举出一次编译后长住内存 
等很多理由。要知道,执行效率涉及的因素太多,长住 
内存并不能意味太多,有本事你拿出工业上的实际 
例子,实际经验或测试报告,我马上就服。 

通过JAVA+LINUX,我开始意识到为什么MICROSOFT技术口碑 
很臭却很吃香!MS技术的开发效率非常之高,易学易用, 
其运行效率和运行稳定性也基本上能满足中小企业和一般目的。 
我承认大家所有关于MS技术的指责,但是有一点,作为 
一家真正的商业企业,他们需要的是投资适中,见效快 
的IT项目。MS就满足这一点。反之,LINUX有无数优点, 
但使用起来确实要比NT难/烦的多。 
总而言之,MS应该在稳定性和安全性方面下工夫; 
UNIX/LINUX应该在易学易用性方面下工夫。 

不过我想,电子商务的发展,已经提出了很多ASP/CGI/JAVA 
难以实现的功能要求,而只有JAVA最有希望进行 
未来的功能扩充,ASP/CGI由于自身体系结构的弱点, 
似乎发展前景有点阴影。 

最近惊闻微软打输官司,行将解体,甚是开心。有竞争 
才有活力。我相信解体后的WINDOWS系统将会发展的更快 
更好。我到不担心LINUX会打败WINDOWS。WINDOWS的一条 
易学易用胜过LINUX无数优点。 
我坚信:图形界面系统将大面积替代取代命令行系统。图形界面 
系统的代表就是WINDOWS。我不认为XWINDOWS是图形 
界面的真正代表,他实际是命令行系统向真正图形界面系统 
转化的中介产品,一种给命令行系统穿上的华丽外衣。 
如果XWINDOWS不作大的革新,他是难以替代WINDOWS的。 
这中间的道理,就好象傻瓜相机大面积替代传统相机, 
自动档的车大面积替代手动档的车。不是完全淘汰, 
而是大面积替代。 

微软解体是好事。想当年,如果AT-T不解体, 
怎么会有今天的美国电讯大降价,因特网大发展! 
告诉国内的弟兄,美国市内电话包月,大概人民币200元 
左右,这个不提,现在很多电讯公司推出的全美国内长途, 
一般是4毛人民币/分钟,最便宜的有2毛人民币/分钟, 
(2.5c/minute),效果相当不错。哈哈哈,同不同意 
打倒中国电讯,连同后面的哪个制度???!!! 
我在中国电讯干过,恶心死我了!!!!!!! 

我发表这样的文章来骂JAVA,只是想跟大家分享一下个人思 
路。我并不后悔选择JAVA,毕竟学到很多东西。 
希望大家千万要继续保持对JAVA的热情和精神。 
不管怎么样,JAVA是目前最杰出的语言,而且前途/钱途无量。 
趁早挤上JAVA这条船,省得将来微软变得又微又软时翻船。