选择Seam的十大理由
翻译: 双鱼瓶 来源: JBoss
摘要: 本文从多角度、较全面地总结了Seam的优势。
一、增加AJAX特征的最快捷方式
在功能上,Ajax改变了Web的交互模型。传统Web客户端所使用的同步、粗粒度的请求,引发了很多服务器端应用吃掉少量的缓存,并且没有带来缓存级别的并发操作。
许多情况下,”无状态”的架构只是基本的解决方案,却远远不够!Ajax客户端通过很多异步、并行、细粒度的请求和服务器连接,使开发人员可以轻易地连接和获取远端”数据库”信息。
可是如果状态在交互时被保存到内存,并行相关的bugs将会非常危险,因为Java EE平台并不处理会话级别的并发。
最初设计的时候,Seam被构想成在Ajax基础上,整合并行模型和状态管理模型。
Seam1.1整合了许多基于JSF的开源Ajax解决方案,像ICEfaces和Ajax4JSF,同时加入了Seam的状态和并行管理引擎。开发人员可以轻松地在程序中应用Ajax,甚至不需要学习JavaScript;并且将远离单独使用Ajax时潜在的bugs和性能问题。
二、开始使用EJB 3.0的最简单方式
EJB 3.0是成熟的事务组件模型,也是最新JPA(Java持久层API)关注的技术,但支持EJB 3.0的Java Web应用框架却很少。这样,你需要去写自己的整合代码。但在大多数情况下,开发人员整合的方式并不能充分利用EJB 3.0的优势。
EJB 3.0是Seam使用的核心技术,你可以无处不在地使用整合的EJB 3.0组件模型。因为在Seam应用中,每个类都是一个EJB组件。你甚至不用写任何整合代码,即可”美化”你的框架。
当然,你也可以选择不使用EJB 3.0,JBoss Seam使你”鱼与熊掌可兼得”。
三、充分挖掘JSF特性的最佳方式
JSF已经有许多组件库和插件以供使用,也当之无愧地成为Java界最有吸引力的Web开发框架。但是JSF过度地依赖于XML配置,并且创建丰富网页界面的特性并不多。
Seam将使用注解的方式代替繁琐的XML配置,减少代码量的同时也提高了开发效率。
Seam在很多方面扩展了JSF的功能:包括多窗口操作、工作空间管理、基于模型的验证、基于jBPM的页面流、国际化和页面分段缓存等等。
Seam甚至还加入了控制标签化页面的机制。
JSF没有涉及访问事务资源,Seam考虑到了这一点,将JTA、JPA和EJB 3.0与JSF无缝地整合起来。
四、实现业务流程管理(BPM)的最简单方式
jBPM是用于解决存在复杂人员协作或者复杂用户交互的Web应用程序的解决方案。
BPM技术不仅方便开发人员和分析人员建模、应用以及优化业务过程,而且可以在整个操作和管理过程中评估业务流程的效率和发掘业务流程中会出现的问题。
Seam深度整合了jBPM,使用jBPM进行任务管理和页面流管理将变得异常简单。
Seam和jBPM的结合将使一些项目的开发时间减少一个月左右。
五、使得CRUD同样简单
Seam也同样处理复杂企业应用中的棘手问题:增删改查。但这并不意味着解决的方式会很难上手。
在创建数据驱动的应用中,Seam将整合现有易用的数据层框架,包括JPA、Hibernate等,使开发人员可以通过一些数据库反向工程工具和命令行工具高效地开发数据库应用。
六、持久层工作将是”小菜一碟”
Seam来源于Hibernate社区,由Hibernate创始者Gavin King设计和开发。
Seam会话模型解决了传统无状态的Web应用架构导致的持久层相关问题。无论你是使用Hibernate还是JPA,Seam使用扩展的持久化上下文都将使开发变成简单,同时也可以使开发人员避免在集成环境下使用持久化上下文时不必要的状态重复。
七、注解功能
Seam是第一个从始至终、从持久层到表示层,都使用Java 5注解功能的程序模型。
你将不会再因为繁琐的XML配置而感到迷失方向。同时在Seam中,开发人员也可以使用XML,Seam为此提供了成熟的基于XML的组件配置机制。
八、为自动化集成测试而喝彩
任何项目都需要自动单元测试,但是仅仅依靠单元测试是十分危险的。许多的bugs出现在组件之间或者组件和容器的交互过程中。单元测试无法捕捉容器的行为,也无法捕捉组件间的交互。
Seam引入了一种新方式:”自动化集成测试”。你可以模拟每个请求或者会话的全部业务流,来测试应用中从持久层到表示层的所有Java代码。
九、开放性标准与开源的结合
Seam建立在实现开放标准的、像JSF和 EJB 3.0这样的开源项目基础上,并且整合了其他优秀的开源项目,如Hibernate、jBPM、Facelets、Drools等等。
Seam的缔造者们都是EJB、JPA、Bean验证和JSF等领域的专家组成员,并且领导过制定Web Beans规范(JSR-299)的专家组–用于将Seam里的一些想法带入Java EE标准中。
Seam项目是完全建立在”致力于Java平台的创新和提高”的开源项目理念上的开源框架。
十、快速上手
只要你试用它,就会爱上它!
审校:骆驼
原创文章如转载,请注明:转载自JBoss Seam中文站
[ http://www.jbossseam.com/ ]
本文链接地址:http://www.jbossseam.com/2007/11/10/ten-good-reasons-to-use-seam/
11月 20th, 2007 at 10:16 下午
jboss seam是非常优秀的架构,他的web层扩展jsf,提供了丰富的web组件,使开发更快,复用性更高,同时还提供了强大的ajax功能,很容易实现web2.0开发;
业务层也是用基于组件的方式实现,使两个层次的调用非常简单,省去了复杂的配置文件,和以前的j2ee架构比,有非常多的创新,但是还是有一些使用及不不方便的地方:
1.model、HomeBean、ListBean和view的代码只能被生成到同一个包了,特别是大量的view代码在同一个目录下,如果项目大,就会带来很多不便。
2.表的前缀在生成时,不能被除去。
3.被生成的页面里的字段值都是英文的表名或列明,没有放在资源文件里,使用每个页面都要改为对应的中文。
myseam[http://myseam.googlecode.com]不但继承了jboss seam2.0GA的所有特点,同时解决以上不足,还提供了一下功能:
1.用datascroller tag 去分页列表数据。
2.用rich:calendar tag 去显示日期字段。
3.日期的格式和getMaxResults的值被配置在资源文件里。
4.增加用户和角色管理模块。
12月 24th, 2007 at 3:22 下午
好,太好了,今天看到有这么多资料,我的心被震动了一下,记得我刚学用seam做项目时,网上没有任何资料,只有google网有官方网站的链接。希望seam在中国的发展会更快,支持seam,支持java开源
2月 18th, 2008 at 12:47 下午
看到一个这样的新技术,很是着迷,准备学习中,希望有志同道合者一起讨论!msn:david4034647@hotmail.com
4月 25th, 2008 at 11:17 上午
十、快速上手
只要你试用它,就会爱上它!
========
关于这一点我觉得有问题。
1、
4月 25th, 2008 at 11:23 上午
十、快速上手
只要你试用它,就会爱上它!
========
关于这一点我觉得有问题。
1、seam必须要个jboss as,但我用glassfish阿。当然有好多指导文章,但总觉得别扭。这点不如spring,他不需要特定容器。
2、seam-tools 只有eclipse中可以用。但我用netbeans阿。或许oracle不想sun用他的产品吧。
基于简单的以上两点理由。我不同意您的“十、快速上手”的提法
谢谢。
(或许在seam3中可以看到呢,毕竟java one大会快开了,好期待哦)