haoxiaobo

从C到C++又到.net, 有一些心得, 和大家交流下...
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对于大型公司项目平台选择j2ee的几层认识(二)

Posted on 2010-06-01 13:32  HAL9000  阅读(7916)  评论(55编辑  收藏  举报
   
    如前面所述的,由于很多人已经被洗过脑,还有其他很多操作上的考虑,大家都会很自觉地配合IBM的营销攻势,而且我们也衷心相信:在IBM等软件和硬件的支持下,我们的一个个系统步入了“高档系统”的行列。把.net平台留给了孩子们玩去吧。
   
    其实,IBM,以及其他一些高端厂商(Oracle, BEA等)做承接的项目,大部分的活计是直接再转包给其他国内的小厂商的,他们自己所需要做的,基本只限于“规划、咨询、建议、项目管理方法论”等一些又高端又阳春白雪的工作。
   
    不过说实话,这些大厂商的总结能力真不是盖的,你听了他们的咨询师的课之后,大部分会感觉自己醍醐灌顶,狠不得把自己的所有的系统都推倒了重来!甚至狠不得把自己的业务方式都来个大变革。不过另一方面,这些高瞻远瞩的规划,一般也会与现实社会有很大的距离,要么是客户不接受,要么是监管不接受,要么是现实不接受。无论如何,听听绝对有好处,就当开阔了思路了。
   
    既然远景做不到,那么近景能做一些就做一些也是好的。首先就要听这些大厂的话,选择SOA, 或是SAAS, 或是别的什么概念来做这些项目, 当然,听IBM他们说,这些项目的都需要J2ee来支持,而最好的J2ee应用中间件,当然是IBM自己的websphere什么的。其实都没所谓.net好还是Java好,无关乎技术。对于厂商来说,这都无非是一件武器,用来对抗微软的武器罢了,因为MS真得太令人害怕了,需要这么多厂商来一起对抗它。
   
    为什么MS令人害怕?因为以下的几个原因。
    1. MS是一个程序员的公司,而IBM是一个营销员的公司。MS有实实在在的技术,但是明显在市场头脑方面差人一等,因此总是在战略上慢几拍,但是后发的产品很强大。
    2. MS一直不停地研发。相信学MS技术的人都有感觉,就是他的主导技术基本上不到三年就要整个推掉重来一次,比如从ado到linq,再到现在的那个什么Ado.net entity framework的东西。每一代技术都更强大,但是翻新得让人追不上。这种技术创新的能力,是十年不变的java阵营很害怕的。而且下一代的WPF、WCF等平台的高度和技术能力是其他厂商难以达到的。
    3. MS有着令人难以置信的软件产品线,从操作系统到游戏,甚至是机器人仿真和开发包!在每一个战线上,他都有产品(可能是原型级的)可以用来对抗全世界厂商。
    4. MS正在蚕食下一代程序员。
   
    因此,java联盟必须努力抗击MS, 他们其实对java的低效率心知肚明,但是他们已经选择了这个武器和这个招牌,因此只好做足文章,把数据库、应用服务器全部用java写成——当然可以用。这就够了。
   
    但是效率太低,无论懂不懂技术都能看出来系统慢。那么也没问题的,只要几台P590上线,也就快多了。
   
    技术上也对此准备了解释:是的,j2ee是用于对付大批量用户的应用平台,在少用户的情况下,效率上不明显。但是当用户量上升到海量级别时,这个系统的响应曲线一定是平缓的。而“.net一类”的响应曲线必然是陡峭的。这叫做“吞吐量”。
   
    我们得到了安慰,为我们的预算支出找到了解释。每个人都满意了。至于什么时候我们会用上百万并发的吞吐量?也许永远也不会,不过备着这个能力也好。
   
    一度我也很相信这个含义不明的“吞吐量”指标,实际上的情况如何?有个例子可以参考:公司里有一个系统很关键,用户并不是很多,这个系统由IBM规划,orcale实施,运行在一个oracle cluster上,数据库的存储用的是HP的11000,应用服务器用两台单独的590,全部资源都划为一个分区来跑。在每个月初会有几百人在里面干活,系统要把上千万条数据做转换、抽取和导入(ETL),每到这个时候,系统就会慢得几乎不能干活,登录页都需要十几秒才会响应。听说硬件组的人为了加快效率,都把这个数据库的存储移到最快的硬盘条带上了,还是很慢。每次登录这个系统,我都能感觉到IBM和oracle的庞大重量全部压在我的鼠标上。
   
    这个例子并不是为了证明j2ee很慢。相反,我认为这个系统的慢一定出现在软件的设计上,那种级别的慢法,一定是要有数量级上的性能提升才会有用,java与C++相比,也不过是10倍以内的效率之差,不会慢到二十秒出现登录页,再过二十秒才能登录进去。因此,一定是与软件、数据库的设计很有关系,也就是与开发者的水平有关系,只有那样才会导致几百上千倍的效率区别。
   
    因此,用什么技术效率高什么的,只是一个建立在“完全相等条件下进行比较”这个前提下的一种说法而已,现实中,你没有办法忽略具体设计人员的个人水平造成的影响。就算是有严格的数据证明说什么技术比另一个什么技术快,也不能保证“这个项目”就一定会“吞吐量大”。其实这就是一个营销手法,它在我们遇上巨额费用支出是否合理的问题时,提供自我心理安慰的理由。
   
    既然说到了这个项目,我就用这个项目做例子,继续说我的第二层认识吧。