论坛首页 Java企业应用论坛

取舍于得失之间:权衡Java EE 5.0 & Seam & Spring & Yourself

浏览 30779 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-08  
Java EE 5.0明显比它之前的版本都更容易使用,也更加强大。与Web应用程序开发人员最相关的Java EE 5.0平台的两种规范是JSF和EJB 3.0。

JSF和EJB 3.0究竟好在哪里呢?我们需要先认真了解每种规范中的主要概念和特性,然后用JSF和EJB 3.0编写出一个小实例或应用程序,然后并将它与用Java(如Struts和EJB 2.x)编写Web应用程序的旧方法进行比较。这样,我们才会真正才能得到我们应当关注的所出现的问题。Seam是如何使JSF和EJB 3.0变成一个更强大且更方便的组合呢?Seam与Spring又是怎么样的关系呢?这些,都会有大多的争论与取舍。暂且不讨论这些,先看看Seam本身:

JBoss Seam是一个Java EE 5框架。它通过把JSF与EJB3.0组件合并在一起,从而为开发基于Web的企业应用程序提供一个最新的模式。Seam可以让你把EJB组件直接绑定到 JSF 页面。Seam还可帮助你把jBPM流程定义直接地集成到你的应用程序中。

相关的一些资源:
本土:JBoss Seam:http://www.jboss.com/products/seam
Docs:Seam Document:http://labs.jboss.com/portal/jbossseam/docs

入门:
一个使用JBoss Seam简化Web开发的Flash演示,可以当做JBoss Seam的入门教学
Example showing you how to generate a CRUD web application from a database using JBoss Eclipse IDE

进阶:
IBM developerWorks里的专题《Seam - 无缝集成 JSF
这个系列讲述了 Seam 是真正适合 JSF 的第一个应用程序框架,能够修正其他扩展框架无法修正的主要弱点。阅读该系列的文章,您可以自己判断 Seam 是不是对 JSF 的适当补充。

目前有三篇文章在里面了
1、为 JSF 量身定做的应用程序框架
JSF 是用于 Java Web 应用程序的第一个标准化的用户界面框架,而 Seam 是一个扩展 JSF 的强大的应用程序框架。本文将发现这两种框架之间的互补性。
2、借助 Seam 进行对话
借助 Seam 开发有状态的 CRUD 应用程序是件轻而易举的事情。本文向您展示如何使用 Java™Server Faces (JSF) 和 Seam 为基于 Web 的高尔夫课程目录开发创建、读取、更新和删除用例。
3、用于 JSF 的 Ajax
JSF 基于组件的方法论促进了抽象,但大多数 Ajax 实现由于公开了底层的 HTTP 交换而使之大受干扰。本文展示了如何使用 Seam Remoting API 和 Ajax4jsf 组件与服务器上的受管 bean 通信,就好像这些 bean 与浏览器同在本地一样。

取舍都是在得失之间,请求响应与事件驱动,轻量级与重量级,这些都不重要,重要的仍是取决于自身的权衡与取舍。
   发表时间:2007-09-11  
姑且就叫java dotnet化更合适。

从webform来看,它提高开发效率的方式就是Web组件化: 把一个web page分解为几个组件化的web compoenent,每个component都是page controller模式的子件,分别有自己的action和它对应。这些web component就可以在项目中被不断复用。

webform也表明,没有一个可视化的优秀编辑器,组件化的web component就很难被使用,如果手工编辑JSF,无疑会被那些恐怖的配置文件搞疯。个人觉得,JSF还处于一种非驴非马的状态,用起来实在别扭。
0 请登录后投票
   发表时间:2007-09-11  
其实seam对于目前企业开发中大部分的困难的地方都有了一个“官方的”统一解决方案
但就是学习成本还有长期以来对于ejb的偏见会是个问题

单纯从技术上和开发效率上来说,seam真的很好
0 请登录后投票
   发表时间:2007-09-11  
还没明白Seam主要解决的是什么问题,难道只是JSF+EJB 3.0的整合?
0 请登录后投票
   发表时间:2007-09-11  
Seam更象故弄玄虚的一个东西,简单的理解就是对应dotnet里的spring.net Web Framework.

Spring.net并不是Spring的克隆版,原因是asp.net是基于事件和基于组建的,本身就提供了page controller的MVC方式,不需要Spring MVC或者Struts这类东西,所以Spring.net web framework和Seam都是一种润滑剂而已,他们是针对基于event的web开发模式提出来的,不象struts这些front controller的模式,他们为要润滑page controller模式的一些瑕疵。

虽然没研究过,大概可以推断出它可能会提供:
1.页面注入
2.结果跳转
3.状态管理(于是你可以在class里大胆使用私有变量)
4.AJAX支持.

把一个满简单的东西说得那么复杂,实在是够了。
0 请登录后投票
   发表时间:2007-09-11  
还是不明白seam到底起到了什么作用。是集成开发JSF和EJB3.0吗?
在IBM DW的文章中也没有讲到。
只是讲到补充了JSF的不足。具体是什么,也没有介绍到!
0 请登录后投票
   发表时间:2007-09-11  
有个感觉,OpenSource号称不重复制造轮子,其实制造轮子最多的就是OpenSource,只不过他们的轮子相似之中总有那么一点差异,总是让用户去拼凑新的火车拖拉机(N多轮子滚动在轨道上牛车)……

难道Seam就是传说中的火车拖拉机?
0 请登录后投票
   发表时间:2007-09-11  
jimmy.shine 写道
还是不明白seam到底起到了什么作用。是集成开发JSF和EJB3.0吗?
在IBM DW的文章中也没有讲到。
只是讲到补充了JSF的不足。具体是什么,也没有介绍到!


我来简单讲讲,就拿asp.net做例子好了。

1。页面注入:把业务层的对象注入page contoller里。假如page上有3个button每个button都有click,通常写法是每个click事件new XxxxService,但是利用页面注入,你可以private XxxxService service,每个click调用service,每次页面postback的时候,都可以自动注入。

2.状态管理:如果使用私有变量比如private int a,每次页面刷新,a又会重新被初始化,spring.net可以帮你自动backup/restore在session里,a就好像一直维持着状态而已。

3。result url,和struct一样,在外面定义一个ok = xxx.html,cancel=xxx.html,click event后就可以根据result 跳转。

。。。。
0 请登录后投票
   发表时间:2007-09-11  
惊鸿逝水 写道
有个感觉,OpenSource号称不重复制造轮子,其实制造轮子最多的就是OpenSource,只不过他们的轮子相似之中总有那么一点差异,总是让用户去拼凑新的火车拖拉机(N多轮子滚动在轨道上牛车)……

难道Seam就是传说中的火车拖拉机?


浪费人类的精力制造出struts,再弄出spring mvc, webwork。。。。。一长串东西,干得活都差不都,反而把开发者的精力从业务本身拖到无意义的framework hell里。
0 请登录后投票
   发表时间:2007-09-11  
I have some experience to share about SEAM.

If you want to know what SEAM is,you have to know the JSF and EJB3. In JavaEE 5,JSF is the standard of presentation layer and EJB3 for business logic layer. SEAM is aming to simplify using JSF+EJB3.

Put it simply,SEAM want to blur presentation and business logic layer,by using "stateful and local session bean" as the managed-bean,which is called ActionListener. In ActionListener,Entity bean is injected and refered by the JSF component in page. Meanwhile,you can use Entity Manager at the same time.

It means that when you invoke a event of JSF component,then a method in ActionListener is invoked,in which you can use Entity Manager to handle data from JSF components.

Therefore,two layer -"Managed beans" and "EJBs" merges into one layer "ActionListener"(stateful local session bean),in which you do everythings, such as business logic or page logic process,etc.

That's a very basic story about SEAM. There are more stuff about it. If possible,I will send some samples later.

By the way,because I am working in a company in London at the moment,and my computer can't input chinese. I'm not meant to write it in English. Hehe.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics