《J2EE 最佳实践》作者访谈录

TSS最新的访谈录:
《J2EE 最佳实践》作者Darren Broemmer访谈录
http://www.theserverside.com/talks/videos/DarrenBroemmer/interview.tss?bandwidth=dsl

它的书籍 《J2EE最佳实践》电子版本下载地址:
http://download.chinaitlab.com/soft/1711.htm


他的架构风格我比较欣赏,他谈了标准的重要性,他认为微软的单个Source和许多人基于一个标准工作的JCP社区有很大的不同。

他认为工作流是Service的重要部分。

他认为EJB是一个伟大的组件技术,但是使用者需要小心陷入麻烦,他建议将EJB作为普通组件的包装器Wrapper。
EJB is a great component technology, but you can certainly get yourself into trouble with it and so what I advocate is really using EJB as more of a component wrapper.

他也谈到不建议将太多数据放在HttpSession,这样导致可伸缩性的问题,I saw many times was put way too much data into the HTTP session, which lead to scalability problems even beyond even trivial number of users(banq注:虽然Tomcat提供了集群CLuster,但是这种cluster是有其致命缺陷的)

他也谈到了关于实体Bean是否好的争论话题,他提倡使用session bean作为业务处理过程包装器,使用轻量持久技术捆绑object model。

实体Bean和 JDO or Hibernate相比,EJB真正的价值是标准的组件部署模型standard component deployment model 提供企业服务和它们的标准接口,这是EJB主要优点。
从第三代架构风格来说,可以将我的用户系列组件部署在你的环境或其它环境,或者为不同的部署进行优化定制,这些都是实体Bean带给你的价值,更加容易实现,除了这个实体Bean不能带给你相比其它解决方案(hibernate等)更多的益处。

(banq注:我设计的JdonSD用户注册权限构件系统已经达到这个目的,它可以在http://www.jdon.com/my/VIP区域中使用,也可以在estore网上商店中使用,目前正在整合到JdonForum开源中;如果使用Spring直接+Hibernate等架构,则需要更改程序配置,重新编译,在数据库级别可重用性差,无法真正屏蔽数据库)

他也谈到了JMS的重要性以及JMS和传统系统整合的作用。

他还认为他是自动化工程(如MDA)的信徒,我们很多系统是一个 domain engineering 域工程。

在他的《J2EE 最佳实践》书中,提倡尽量少访问数据库,那是非常耗费性能的,他的关于Cache见解非常有意义(banq注:这可以回答那篇文章
http://www.jdon.com/artichect/dbover.htm

最后他谈了最新的关于和Excel交互的Web页面技术EUC,end-user computing终端用户计算。


BANQ 真是个"执着"的人!!!

zhuam的“执著”好像有其它话要说啊,我自己经验:各种解决方案都要掌握,无论EJB/Spring、重量/轻量等等,不能偏听偏信啊。

《Spring Live》作者Matt Raible访谈录

TSS上星期刚安排了主导Struts+EJB架构的《J2EE 最佳实践》作者Darren Broemmer访谈录,这周就安排了主导Struts+Spring+Hibernate的Spring Live》作者Matt Raible的访谈录,这两本书作者可谓是两大门派中坚力量,让我们从他们的对话中看看他们对这两种技术的评价:

因为Struts+Spring+Hibernate架构位于J2EE Web层,所以主导了开源项目AppFuse的Matt Raible又被称为Web框架专家,当然我们可以称Darren Broemmer为EJB专家了。

Matt Raible最早在2001年开始使用Struts,然后开始接触Spring, WebWork,现在又开始钻研Tapstry和JSF,因为他认为Web组件Components概念是下一个发展重点,Matt Raible觉得Struts好像是Web框架家庭中的私生子,因为他是第一个出生的,它比Servlet/Jsp要好多得多,Matt Raible很喜欢Struts,虽然Struts有丑陋的ActionForm,虽然WebWork比它更简单,使用Struts基本只需关注表现层,可以和其它中间层完全分离,有自己独立的出错处理机制、Message机制等。

Matt Raible认为现在Web框架有两种主要类型:Struts、Spring 和 WebWork类型,这类基于Request,开发者是可能直接和Servlet API打交道;而以JSF和Tapestry为主要代表的则是基于组件的框架,他们隐藏了Servlet API,开发者可能看不到Servlet API,更别说和他们打交道了。
而JSF和Tapestry有所不同的是: JSF从组件中推出Html(基于JSP推出Html原理);而Tapestry则是直接基于Html(Tapestry没有JSP概念,只有动态Html,banq注)

JSF对于Struts应用者来说更容易接受,它做了很多与Struts相同的事情, 页面导航都是使用XML配置实现,你可以映射某个action或一个按扭到一个页面,Tapestry 更加类似Swing, 你要抓取一个页面然后激活它,所有导航功能都是使用代码而非XML,Tapestry类似他的座右铭,使事情更简单、更容易,JSF似乎是IDE工具商更支持一些,这就非常不幸了。

Matt Raible还谈了其它Web框架Velocity 和 Freemarker 等模板的特点,以及页面装饰框架方面:Tiles和SiteMesh等不同表现。

Matt Raible还谈了Spring和它的APPFuse开源项目,他认为Spring MVC没有Struts流行不是如传说中那样没有经过实战检验,而是因为Spring MVC虽然和Struts同时诞生,但是正是推出时间上迟了很多,导致市场被Struts占领。他介绍了AppFuse如何防止两次提交等问题。

Matt Raible认为Spring重要优点是IOC实现,它自动解决了组件之间的依赖;还有Spring提供的事务,在这之前开发者只有选择使用EJB中CMT,否则自己处理事务是非常困难痛苦的一件事情,使用Spring的提供的事务机制就比较方便,而且它的JDBC模板比较简单易用。

最后Matt Raible介绍了在Web领域一些激动人心的新技术,如rubyonrails.com, 它是一个Ruby based web framework ,它为你将每个事情都做好,都有缺省实现,这样,只要你定义好一个Model对象,其它一切就都出来了。

个人层次不一样,看问题角度不一样。不用去里别人的说法。想当年ejb风光的时候,这群人有哪个出来放个反对的屁。2001年中我刚开始用ejb做项目时是怀着一种有点骄傲的心情。2002年-2003年ejb就象大白菜了,谁都用ejb,连jndi是什么东西都不知道的人都是凡项目非ejb不用。过了一年ejb就象街头老鼠,先是有几个真的大师出来指出ejb的坏处,(当然我想这也是因为技术进化的原因,当各个条件都成熟时,ioc/di,aop等可行实现也都出来了。要是类反射机制还是当年hotspot jvm 1.2的性能,我想spring也不能出现吧),然后就有好大一堆人出来“痛打落水狗”了。到了现在,连ejb字眼都不能谈了,谈着必有人出来指着鼻子挖苦,或则以一种高手的姿态表示不屑一顾。
对于ejb来说,也真是世态炎凉啊。我没有出过国,不知道这是不是只是中国的it界才有现象?

我个人觉的EJB和Spring+hibernete等各自有它们擅长的地方,刚刚做个小系统,用struts,还没直接用JSP快,表单又不好看,用JSP了。我举这个小例子讲,就是各种技术各有各的用处,这就是仁者见仁智者见智了。
有很多人学JAVA都是从JSP 到JavaBean然后到学习框架等。

――――――――――――――――――――――――――
本人菜鸟,没做过大项目!又不好意思潜水!

Matt Raible 的英文原文网址是:
http://www.theserverside.com/talks/videos/MattRaible/interview.tss?bandwidth=dsl

to dabb
搞软件的人多种多样,也有时尚派和踏实派,从这两个访谈者照片上看就体现了这两点。

从技术诞生时间上看,Spring等是最新诞生的,比较时尚;而EJB是经过实践检验,是成熟稳定的,这就象买衣服、投资一样,架构选择也是根据架构师自己的个性而定。

问问看Tapestry的发展前景,能不能给个合理的答复?

看好EJB,R上M入EJBI域,bang大哥多多指c!