`
javamore
  • 浏览: 63862 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Jboss Seam

阅读更多

概述:

 JBoss Seam是“Java EE 5.0的一个轻量级的框架”。这是什么意思?难道Java EE(Enterprise Edition) 5.0本身不是一套“框架吗”?为什么在官方规范之外,还需要另外一个框架?好吧,我们就将seam看作是本应该被包括在Java EE 5.0中的一个“遗漏的框架”吧。它在Java EE 5.0框架的上层,为所有的在企业Web应用中的组件提供了一个统一的、易于理解的编程模型。它同样使基于状态的应用和业务流程驱动的应用的开发易如反掌。换句话说,Seam致力于开发者生产力和应用扩展性。


项目主页:http://www.jboss.com/products/seam/


官方:

JBoss Seam is a powerful new application framework for building next generation Web 2.0 applications by unifying and integrating technologies such as Asynchronous JavaScript and XML (AJAX), Java Server Faces (JSF), Enterprise Java Beans (EJB3), Java Portlets and Business Process Management (BPM).

Seam has been designed from the ground up to eliminate complexity at the architecture and the API level. It enables developers to assemble complex web applications with simple annotated Plain Old Java Objects (POJOs), componentized UI widgets and very little XML. The simplicity of Seam will enable easy integration with the JBoss Enterprise Service Bus (ESB) and Java Business Integration (JBI) in the future.

JBoss Seam is also a key component of the JBoss Enterprise Application Platform.

Learn more about Seam at seamframework.org.

Why Choose Seam?


The first application framework for EJB 3.0 EJB 3.0 has changed the notion of EJB components as coarse-grained, heavy-weight objects to EJBs as lightweight POJOs with fine-grained annotations. In Seam, any class may be an EJB - Seam eliminates the distinction between presentation tier components and business logic components and brings a uniform component model to the EE platform.
Backward compatible with J2EE But Seam is not limited to environments that support EJB 3.0. Seam may be used in any J2EE environment, or even in plain Tomcat.
The easy way to do AJAX Seam integrates open source JSF-based AJAX solutions like ICEfaces and Ajax4JSF with Seam's unique state and concurrency management engine. You can add AJAX to your applications with ease, without the need to learn JavaScript, and you will be protected from potential bugs and performance problems associated with the switch to AJAX.
A revolutionary approach to state management Before Seam, the HTTP session was the only way to manage Web application state. Seam provides multiple stateful contexts of different granularity from the conversation scope to the business process scope, liberating developers from the limitation of HTTP sessions. For example, developers can write Web applications with multiple workspaces that behave like a multi-window rich client.
Manage "flow" Seam integrates transparent business process management via JBoss jBPM, making it easier than ever to model, implement and optimize complex collaborations (workflow) and complex user interactions (pageflow).
Easy integration testing Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Therefore, Seam provides for easy testability of Seam applications as a core feature of the framework. You can write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system, and run them inside your IDE.


-----------------以下引自Robbin的一篇关于Seam的帖子----------------


http://www.iteye.com/topic/212105?page=2

一、Seam适应快速开发、简化框架的趋势 

在RoR流行之前,Java社区的主流还是非常讲究分层、架构、复用和模式,而比较忽视快速开发和简化架构的,其结果就是代码量大、开发周期长、架构相当烦琐。以比较常见的Struts/Spring/Hibernate为例,从大的分层来说就有Web层、业务层和持久层,从细的分层就从前到后有:View(JSP) -> Struts Action -> Spring Business Object Bean -> Spring DAO Bean -> Hibernate Persistent Object。如果有Remoting调用,那么还需要相应的Service Facade层。每层都是用不同的技术框架或者模式、各层之间整合的方式也是五花八门。把整个项目的架构搭建起来,已经是非常麻烦的事情了。 

Seam给我的感觉像是一个异常简单的MVC框架,他实际上只有两层:JSF View和 Seam Component。而Seam Component有两类:一类是Entity Bean,另一类就是Session Bean。Entity Bean映射数据库表,Session Bean完成所有的业务逻辑,包括可能的持久化,事务,响应页面请求、商业逻辑,页面流控制等等。配置文件也不多,除了一堆基础的配置文件,唯一一个需要不断修改的就是pages.xml了,即配置JSF的view映射。 

所以Seam开发项目看起来很简单、很直接,无分层之苦恼。相应的也会让程序员把精力主要放在业务逻辑组件的实现上,而不是把精力浪费在架构、分层、模式和基础设施搭建的工作上面。 


二、Seam的数据绑定做的很出色 

由于是一个简单的两层结构,View和Component之间的数据绑定做的很出色,看起来比我欣赏的Webwork的数据绑定方式更胜一筹。官方的说法叫做双向依赖注入,在component里面可以直接取到页面提交的数据,在页面也可以直接访问component数据。 

另外持久化数据的校验也直接集成好了,在EntityBean里面声明数据的约束,在页面就可以直接校验了,和RoR的数据校验方式是一样的,当然这也得益于Gavin King是Seam和Hibernate两个项目的作者的缘故。 


三、Seam的组件机制看起来相当好用 

既然Seam简化了分层,实际上把主要的工作都推到组件层去完成了。但是Seam的组件层看起来很简单,这得益于Seam的组件机制设计了很多的组件状态,根据不同的组件状态,天然的划分了不同组件的功能和逻辑。 

Seam的组件有点类似于把传统MVC的Action和Spring的Bean合二为一了,但还是不同于传统的MVC框架下面的Action:传统的MVC Action是基于页面请求的,无法复用,而Seam的组件是事件驱动方式,它只需要捕获和实现事件代码就可以了,至于怎么触发它并不需要知道,他和Web层可以不绑定,因此理论上面来说是可以实现组件复用的。我个人认为Seam的这个组件机制非常巧妙,既可以用来实现响应页面事件,绑定页面数据的所谓Web Bean,也可以用来实现和Web没有任何关系的纯业务逻辑组件,一个很漂亮的实现。 

另外Seam的组件注入机制看起来也很简单,不像Spring那样麻烦,而且内置了很多现成的组件进来,直接用Annotation声明一下就可以用了,感觉写组件真的很方便、很灵活、很强大。 


四、Seam把数据库资源的管理和事务的封装完全隐藏起来了 

Spring的数据库资源管理和事务封装是通过提供了一系列的代理类以及配置文件来实现的,程序员还是要通过配置文件的方式来手工管理事务,访问数据库也必须通过Template编写匿名内部类来实现,而且在Spring/Hibernate框架下面,OpenSessionInView是一个很讨厌的问题。 

但是Seam已经把数据库资源的管理和事务的封装全部都隐藏起来了,程序员完全不需要知道,也不需要操心这些事情,这真是个大大的解放。当然Seam可以做到这一点,也无非是因为Seam提供了一套上至View层,下至持久层完整的框架,因此可以把实现细节隐藏在框架内部,不暴露给程序员。Spring之所以做不到这一点,也因为他只充当了一个黏合剂,不能够直接修改View层和持久层带来的限制。 


五、Seam对第三方框架的整合看起来比Spring更深入 

原来印象当中只有Spring才提供了一站式的解决方案,这次一看Seam文档,呵!发现Seam也都齐全了,什么邮件啦、工作流啦、页面流啦、规则引擎啦、异步任务调度啦、消息系统啦、Web服务啦、远程调用啦、甚至全文检索啦全部都集成了。而且集成的比Spring更深入一些,例如Java EE本身的JMS,MDB自然是Seam的强项,而JBoss自家的JBPM,JPDL,Rules集成的更加没得说。 

从整合角度来说,感觉Spring和Seam的出发点不同:Spring更像一个平台,我提供整合的可能性,然后程序员你自家去整合,我提供一些写好的整合bean,对于这些你通过XML配置一下就整合进来了,如果我没有提供bean的,那么你也可以自己写bean来整合。而Seam更像一个完整的框架而不是平台,我这个框架想提供的功能,框架自身就已经整合好了,你直接用就是了,你也可以自己写扩展来整合,但是这个不是Seam希望程序员做的事情。 

因此对于程序员的感觉来说,Spring给你提供了一切的零件和半成品,但你要自己动手来组装,而Seam已经给你装好了一个成品,你就别自己改装了,直接拿去用吧。 


六、Seam提供了方便的代码生成器 

和appfuse类似,可以直接用ant task来生成一个完整项目的骨架,以及相应的组件代码生成器,利用seam-gen可以快速生成一个完整的、带有AJAX功能的CRUD项目,而且还是一个eclipse或者netbeans工程,你可以直接用IDE打开编辑了。这功能虽然不太难做,但是对于程序员来说,帮助是很大的。Seam做的相当不错。 


以上是我对Seam的一点小小的赞许,当然我也有一点疑问: 

一、Seam的View实现是JSF,看页面代码还是密密麻麻的Tag 

我是非常反感JSP Tag的,看看页面密密麻麻的Tag就头皮发麻,能不能弄一个Template呀,例如freemarker啥的?这些Tag既不直观,也不方便扩展。需要扩展页面组件,总不能让我自定义Tag去干活吧?不清楚这个问题怎么办?像freeamarker还可以方便的自定义页面宏呢。 

二、每次修改都要重新打包发布,太麻烦了吧 

就算修改一个页面,也要整个打包deploy成为一个ear去拷贝到jboss的应用目录下面,这个要是改页面,不是得烦死? 我以前都是在项目里面直接内嵌Jetty,作为一个application启动,修改页面根本无需重起呀,更不要说deploy了。 


总体来说,我觉得Seam框架非常出色,尤其是他的组件机制设计的很有匠心,真不愧是Gavin King精心打造的框架了,虽然看起来还是有些缺陷,但是做企业应用项目的话,Seam是一个很棒的选择,作为程序员来说,要比用Spring/Hibernate/Struts省心的多,更能够把精力放在业务逻辑的编写上面,开发效率也很不错,可能是Java开源框架里面最优秀的快速开发框架之一了。 

分享到:
评论

相关推荐

    JBoss Seam

    《JBoss Seam:超越Java EE的简易与强大》是一本深度探索JBoss Seam框架的权威著作,由Michael Yuan和Thomas Heute共同撰写。本书聚焦于JBoss Seam框架,旨在为读者提供一个全面、深入的理解,以掌握其在企业级应用...

    JBOSS SEAM组件中文手册

    **JBoss Seam组件中文手册** **一、Seam框架概述** Seam是一个开源的企业级Java框架,由JBoss公司开发,旨在简化Java EE应用程序的开发。它将多种技术如JavaServer Faces (JSF),Java Persistence API (JPA),EJB 3...

    Jboss seam3 实战

    标题中的“Jboss seam3 实战”表明,本文将重点介绍JBoss Seam框架的第三个版本的实际应用。JBoss Seam是一个开源的Java EE框架,它通过依赖注入和会话模型,简化了基于Java EE的企业级应用开发。Seam框架为开发者...

    JBoss Seam入门介绍

    标题:JBoss Seam入门介绍 描述:本文将详细介绍JBoss Seam框架的核心概念、关键特性以及如何构建基于Seam的应用程序。Seam作为一个企业级Java Web应用框架,它将Java EE和JSF无缝集成,旨在填补Java EE 5.0中缺失...

    jbossseam eclipse安装 例子学习.doc

    ### JBoss Seam Eclipse 安装与配置详解 #### 一、引言 本文将详细介绍如何在 Windows XP 系统环境下,使用 Eclipse IDE 进行 JBoss Seam 的开发准备工作及环境配置。JBoss Seam 是一款基于 Java 的企业级应用框架...

    jboss seam 中文文档集合

    **JBoss Seam 中文文档集合概述** JBoss Seam 是一个开源的应用框架,它结合了JavaServer Faces (JSF)、Java Persistence API (JPA)、Enterprise JavaBeans (EJB) 3.0 和其他Java EE组件,旨在简化企业级开发。这个...

    Jboss Seam中文版

    ### JBoss Seam中文版知识点详解 #### JBoss Seam简介 JBoss Seam是一个强大的企业级应用开发框架,基于Java EE标准,特别强调简化Web应用的开发流程。它通过整合多种技术如JSF、EJB 3.0等,提供了一种更为高效、...

    Jboss Seam 三本最受欢迎的教材

    【JBoss Seam】是Java企业级应用开发框架,它整合了JSF(JavaServer Faces)、EJB(Enterprise JavaBeans)3.0、JPA(Java Persistence API)以及一系列其他技术,为开发人员提供了一个强大的全栈式解决方案。Seam...

    jboss seam 2.01GA REF DOC

    ### JBoss Seam 2.01GA REF DOC #### 引言:JBoss Seam概览与功能介绍 JBoss Seam 是一个为简化企业级 Java 应用开发而设计的框架。它结合了 JavaServer Faces (JSF)、Java Persistence API (JPA) 和 Java ...

    Beginning JSF2 APIs and JBoss Seam

    ### 关于《Beginning JSF2 APIs and JBoss Seam》的知识点总结 #### 一、书籍简介与背景 《Beginning JSF2 APIs and JBoss Seam》是一本深入介绍JavaServer Faces 2(简称JSF2)及其相关API以及JBoss Seam框架的...

    jboss seam 2.0 中文手册

    整理自jboss seam 中文站,压缩为chm格式,便于广大jboss seam爱好者阅读,所有版权归jboss seam中文站所有。

    [JBoss] JSF & Facelets & JBoss Seam 核心技术 (英文版)

    [TipTec Development] JSF & Facelets & JBoss Seam 核心技术 (英文版) [TipTec Development] Essential JSF, Facelets & JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] TipTec ...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...

    jboss seam 教程

    ### JBoss Seam 教程知识点概述 #### 一、Seam简介与教程概览 - **Seam**:一个基于Java EE平台的应用框架,旨在简化企业级应用开发。 - **JBoss Seam**:由JBoss提供的Seam实现,提供了一系列功能强大的工具和...

    深入浅出JBoss Seam.pdf

    ### 深入浅出JBoss Seam:整合与强化Java EE框架 #### 一、引言 JBoss Seam是一款基于Java EE 5.0的轻量级框架,它旨在简化企业级Web应用的开发过程,并增强应用的可扩展性和开发者的生产力。本文将详细介绍JBoss ...

    jboss seam

    这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB Timer Service和Quartz,为工作流集成了jBPM,为业务规则集成了JBoss规则,为电子邮件集成了Meldware Mail,为完整的文本搜索集成了...

    深入浅出JBoss Seam

    《深入浅出JBoss Seam》 JBoss Seam是一个旨在简化企业级Web应用开发的轻量级框架,它补充和完善了Java EE 5.0的标准。Java EE 5.0虽然包含了EJB 3.0和JSF 1.2等核心框架,但它们各自独立,缺乏统一的编程模型。...

    Practical JBoss Seam projects

    ### 实用JBoss Seam项目详解 #### 一、前言 《实用JBoss Seam项目》是一本专注于介绍JBoss Seam框架及其在实际项目中应用的专业书籍。本书由Jim Farley编写,出版于2007年,是Java技术领域内的权威指南之一。JBoss...

    [JBoss] JSF 2 APIs & JBoss Seam 基础教程 (英文版)

    [Apress] JSF 2 APIs & JBoss Seam 基础教程 (英文版) [Apress] Beginning JSF 2 APIs and JBoss Seam (E-Book) ☆ 出版信息:☆ [作者信息] Kent Ka Iok Tong [出版机构] Apress [出版日期] 2009年05月25日 ...

Global site tag (gtag.js) - Google Analytics