分析:JBoss野心勃勃的Web Beans(下篇)
【IT168 专稿】Web Beans在技术奇才Gavin King的炮制下,以全票通过的结果风光出炉。Web Beans欲深度集成JSF和EJB3两种框架,虽然被担心目标过于远大,但有JBoss Seam做铺垫,Web Beans信心十足。Java Web企业应用领域前景无限,先以Hibernate试水,然后遣Web Beans入局,野心勃勃的JBoss欲在Java企业应用领域争夺更多话语权。全文共分三部分,本文是下篇。
1. Seam为Web Beans铺路
Seam是JBoss的拳头产品之一,与Hibernate有着同等重要的地位。JBoss Seam是一个功能强大的Web应用框架,Seam的英文含义是“缝合”的意思,正如Seam的名字所暗示的那样,Seam是一瓶极具粘合力的技术缝合剂,能够将Ajax、JSF、EJB3、Portlet以及Business Process Management (BPM)等诸多技术缝合在一起。Seam的剑锋直指下一代的Web2.0应用,而它所统一和集成的这些技术,正是Web2.0所必须的。
Seam的使命是降低Java应用的复杂度,不但从架构级,而且深入到API级别。在Seam看来,复杂的Web应用,可以通过一些简单组件的组合来实现,这些组件包括经过注释的POJO,用户界面组件或JavaScript部件,以及少量的XML。
组件模型是Seam的核心,在Seam里面,什么都是组件。这不奇怪,随着面向对象思想的深入人心,组件模型早已成为软件编程的不二选择,不过,Seam的组件模型有其出人意表之处,那就是Seam打破了传统编程理论中,表示层组件和应用逻辑组件之间牢不可破的界线,将表示层组件模型和应用层组件模型,合而为一。Seam的这一做法是一面双刃剑,一方面,对于小规模应用,两个组件模型界线的模糊化,显然简化了应用框架的格局,降低了编程的复杂度,但另一方面,表示层和应用层的融合,与现代分层理论和实践相违背,是否适用于大规模复杂应用,有待实际项目的考验。
两种框架经Seam缝合之后,在Seam里面运用组件就非常容易了。简单的POJO自然不在话下,即使是EJB,由于EJB3已经通过注释技术,将EJB从重量级、粗粒度的对象,转变成了轻量级、细粒度的对象,在Seam里面的运用也是轻而易举的。当然,Seam的用途并不局限于EJB3,Seam可以用在任何J2EE环境中,甚至在简单的Tomcat中,Seam也能找到用武之地。这得益于Seam的API级别的基础框架。
在Seam之前,HTTP Session是Web应用状态管理的唯一手段,Seam改变了这种状况。Seam提供了多种不同粒度的上下文状态,其范围涵盖从对话级别到业务流程级别,将程序员从HTTP Session的局限性中解脱出来。例如,Seam可以编写支持多浏览器窗口的Web应用,就像桌面环境下的多窗口应用一样。
此外,Seam集成了JBoss的jBPM,即JBoss业务流程管理,使得Seam具备了实现和优化复杂的工作流和页面流的能力。
在可测试性方面,由于Seam的组件都是POJO,因此,对Seam应用实施单元测试,是非常容易的。不过,对于复杂应用,单纯依赖单元测试是不够的,因此,Seam在其框架的核心特性中,提供了对测试的支持能力,这使Seam获得了良好的可测试性。Seam的开发人员可以编写JUnit或TestNG测试,完整地模拟系统和用户的交互过程,这样就可以在IDE内,完成系统所有组件的测试。
Seam的最新版本是1.1版,和它的前一个版本(Seam 1.0版)相比,1.1版的Seam最大的卖点是Ajax。Seam集成了基于JSF的若干开源Ajax方案,例如ICEfaces和Ajax4JSF等。由于对Ajax功能的集成利用了Seam独特的状态和并发管理引擎,开发者无需学习JavaScript,就能替应用涂上Ajax的油彩。
0
相关文章