分享
 
 
 

回眸Java10周年:J2EE从起源到目的二

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

多年以后,Hapner回忆起J2EE初创的那个时期,深感如今Sun对Java的左右能力已经大不如前:“现在,Java事实上属于整个技术社区,它的发展有赖全体参与者的推动。”的确,如今Sun已经不太可能重演当年的开拓性功绩,很难再为一个已经成形的领域重绘版图。

但正如上文所说,即使是在1999年,J2EE设计者们面对的也不是一张从未着墨的白纸。他们的设计始终要以各大厂商的现有产品为出发点,这也是天才的设计师们做出的设计却远非完美的原因之一:与从头设计一门全新的编程语言不同,J2EE规范从一开始就是各方博弈和妥协的产物。

很容易注意到,J2EE与Java社区的决策机制JCP(Java Community Process)是几乎同步产生的。J2EE下属的各种技术规范,包括1.4版之后的J2EE本身,都作为待决规范议案(JSR,Java Specification Request)被纳入了JCP的议程。

这些议案的审议过程很少是一帆风顺的,几乎每一个都要经历18个月以上的拉锯战。在多项技术规范的审议过程中,我们都见到了这样的现象:最初列名审议委员会的某家主要厂商,没能等到该规范通过就已经被收购或倒闭了。

与微软在.NET平台上的乾刚独断相比,J2EE发展中的这个“牛步”特征虽说是审慎和民主的表现,但终归不符合软件演化应有的速度。

J2EE社区中的另一股重要力量,当然是种类极为丰富的开放源代码项目。2002年以来,在J2EE领域的各个层面上,几乎所有主流产品都有来自开源项目的替代方案,在其中很多位置上,开源产品反而是胜过商业产品的首选。

但请别误解,这里的“开源”并不意味着完全的自动自发,J2EE世界中的开源项目也与Linux或PHP世界颇为不同。在很多非常成功的J2EE开源项目背后,我们都能发现商业机构的推动作用:Apache的Jakarta社区是IBM扶植的结果;实现了开源应用服务器JOnAS的ObjectWeb,则是许多法国IT厂商(包括若干政府部门)合资支持的一个联盟组织……这些有商业背景的开源项目资金雄厚,人员齐整;更重要的是,从投资者到开发者,参与这些项目的很多人都体现了软件工业中难得的非功利心态,因而最终推出的产品质量甚至高于同类型的商业软件。在主流厂商之外,它们是支撑J2EE大厦存在的一组基石。

另一方面,不少开发者也间接地通过自己的开源产品获得了可观的盈利。这些人大多以免费的开源产品为依托,以收费方式提供附加的咨询、方案实施以及技术支持服务。Marc Fleury,开源应用服务器的JBoss创始人,不无矛盾地把自己倡导的这种商业模式称为“职业开源开发”。

无论叫它什么,高端产品的开源化/免费化运动注定要在J2EE产业的发展过程中制造显著的后果。“JBoss的行径恶化了J2EE的商业环境,”这是McNealy先生2002年的著名论断。他的推理过程如下:只有做好商业推广,J2EE产品才能最终击溃邪恶的.NET平台;但开源服务器会降低主流厂商的销售利润;销售利润越低,用于商业推广的预算就越少;因此,整个J2EE阵营都将受损于JBoss。

但在狂热的开源运动支持者看来,以上论证的大前提就是可疑的。“难道只有会做广告的软件才是好软件?MySQL有过多少广告预算”争论的双方都认为对手误解了软件商业模型的实质。究竟谁才掌握了这里的真理呢?也许只有根据J2EE的未来――也就是它的目标和终点(Telos)――才能做出最终的裁决。

技术的离心力

考察事物的演化,通常有两种对立的方法。考古学家(Archaeologist)探究肇始和起源;目的论者(Teleologist)则揭示目的和终点。对于前者,“开端(希腊语Arche)”从根本上决定了此后的发展,参天大树的繁茂都包含在种子最初的萌芽中;而对于后者,“目的(Telos)”才是事物的根本和旨归:谁没见过样态完善的树,谁也就没法弄懂种子到底是怎么回事。

在J2EE五年之后,人们只能交替地用这两种目光审视它的演化历程。它的起源与它的目的、“它从何处来”与“它往何处去” 的问题紧密地交织在一起,谁拾起了其中的一个,谁也就要连同另一个一起回答。

今天的J2EE在多大程度上符合它的初衷?回答这个问题并不涉及对J2EE技术成败的评判,而只是要考察一下:它是否还运行在最初开辟的那个空间之中。在事务处理、对象分布化和Web请求处理这三个方面中,也许J2EE对事务和Web保持了一贯的忠诚。

我们记得Fleury喜欢重复的一个信条:“He who owns the transactional Web owns the Web(谁掌握了带事务处理的Web,谁就掌握了Web)”Web接口是今天大部分J2EE应用暴露的唯一接口;而虽然事务处理的常用方法已经有了很大改变(借助AOP机制,很多非EJB架构的系统也自如地实现了声明式的事务处理),但对事务的重视当然仍将是J2EE开发中的要素之一。

换言之,在5年的演化中,J2EE发生的最大变化可能就在于它放弃了对“分布式对象模型”的强调。EJB2.0引入的本地接口使得Web层与EJB层可以运行在同一个Java虚拟机中,从而使Web容器与EJB容器的物理分离部署变成一种昂贵的冗余;J2EE 1.4以后版本支持的Web Services兼容性,使得客户端可以通过粗粒度的Web接口调用远程服务――这两次变化事实上都是在论证“分布式对象架构”的无用性。

人们发现,同一系统的各个分层最好采用细粒度接口调用,并且运行在同一个进程中;之所以划分不同的层次,与其说是为了实现物理上的可扩展性,不如说是设计美学上的考虑。

而对于异质系统之间的调用,则应该尽量选用异步的、粗粒度的服务接口(所以Web Services成为了非常理想的选择)。换句话说,传统上的“分布式对象架构”,现在看来似乎只适合于银行远程支付等要求极为苛刻的应用场景,而绝不是所有J2EE应用都该考虑的标准方案。

前面描述的离心现象毕竟还遵循了J2EE发展的内在逻辑,说到底,EJB的革新和Web Services的引入更多地是主流厂商倡导的结果。但在近年来,还有一股更强劲的离心潮流在深刻地影响着J2EE的演进,它肇始于上文提到的开源软件运动。

最初它只在Rickard Oberg的动态代理RMI设计与JBoss服务器的微内核架构中显露过邪恶的一角,但是两三年来,经过多个项目、各种技术杂志/论坛/Blog的折射和放大,它已经形成了一个名为“轻量级容器架构”的完整解决方案,并暴露出完全取代传统EJB架构的终极野心。

按照这一运动信徒们的说法,J2EE的发展史上只出现过一个错误――不幸的是,这个错误名叫EJB。与EJB提供的重量级架构不同,借助AOP和IoC机制,轻量级容器能够最大程度地降低代码对于专用接口的依赖性,以简短、轻便、专注、可移植的方式实现业务对象。

从“轻量级容器架构”这个词被发明出来的那一刻起,人们对J2EE远景的考虑就发生了根本性的分裂:Sun和大部分主流厂商更多地关注于“Web Services”和“快速开发工具”这些利润增长点,而一部分离经叛道的独立专家和开发者则认为,如果不把轻量级容器纳入规划,J2EE的发展蓝图就注定无足称道。

其实,双方争执的关键是传统意义上的“应用服务器”的存亡――如果所有企业级服务都可以通过AOP机制提供给普通Java对象,如果管理业务对象生命周期的可以是一个最微不足道的“微内核”,那么深盔重铠的应用服务器还有什么存在理由?

而如果失去了应用服务器的这个产品类型,那些靠这项销售起家的厂商又将何以自处?正是在这里,两个阵营之间存在着最深刻的利益分歧;而这场争执的结局当然也将决定J2EE(乃至Java企业开发)的最终走向。

或许两年之后,我们将从纷争中胜利者一方的角度重述J2EE的整部历史――或许两年之后的J2EE本身也将随着纷争的解决而成为历史。但让我们换个乐观的口吻:问世五年,J2EE的历史仍在持续的创生之中;此时善待这树种的人,也必在今后的树荫下获得它的祝福。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有