Tom DeMarco的三本书- -| 回首页 | 2004年索引 | - -Windy姐,我应该开心吗?

Sun JAF,以及概念完整性- -

                                      

Sun Java Application Framework是Sun向JCOE(Java Center of Excellence,Sun的技术型合作伙伴)主推的应用框架。我没有看到这个框架的实体,从Sun公司讲师的介绍来看,这是一个从底至顶无所不包的“all-in-one”解决方案。persistence、business component lookup/populate、messaging、logging、MVC、exception hierachy、unit test……你能想到的东西,在JAF的那幅big picture上都能看到。听他们介绍完JAF,我再介绍我们自己的业务框架时相当不好意思——想来想去不过是对Hibernate和Spring做了一点包装而已。
 
但是回过头来看我做的笔记,发现一个很有趣的现象:JAF里面的东西其实我们大多都用到,不过都是作为一个功能组件来用的。譬如JUnit,我把它理解为开发流程的一部分;譬如logging,我们直接用了Log4J和Apache commons-logging,没有再做包装;譬如MVC,我们的业务框架(也就是G-Roller框架)只管到业务层为止,Web层直接在Struts Action里面调用Service Locator;譬如messaging,我用拦截器的方式实现了Observer模式,可以为任何业务组件动态添加监听器,JavaMail或者JMS在我看来只是监听器内部的实现细节而已。我在做G-Roller框架的时候,考虑得最多的就是DAO和business service层的概念清晰,如何以直观的方式实现DAO和service组件、并以灵活的方式装配它们。至于其他的功能,我愿意把它们看作系统的另一个aspect,用AOP的态度来对待它们。如果把这么多的概念都拢在一个framework里面,概念完整性是不是会受到影响呢?这大概就是open source和商业产品在理念上的差异吧?
 
另外还有两件有趣的事。第一,Sun(至少是中国这边)对AOP的认知相当落后,JAF没有提供任何与AOP相关的概念(如果不算servlet filter的话),而照我现在的想法,一个业务框架不提供AOP(至少是interception)是很难接受的,因为那就意味着新的crosscutting concern会对既有代码造成难以估量的影响。第二,Sun现在给合作伙伴主推的解决方案相当lightweight,JAF已经极度淡化EJB的概念,可以看到Sun的主流观念已经是“EJB仅仅是一种可选的实现方式”——和Rod Johnson的观点不谋而合。Sun JAF选择的默认persistence方案是LiDO JDO,这是非常值得玩味的一个现象。

- 作者: gigix 2004年03月12日, 星期五 22:25

Trackback

你可以使用这个链接引用该篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=80855

回复

- 评论人:wabby

Fri Nov 26 09:21:20 CST 2004  作者邮箱  作者Blog

JAF支持任何JDO实现,无须代码修改,只是配置几个参数而已!

- 评论人:potian

Sun Mar 14 13:53:58 CST 2004 

Sun对轻量容器的认识如何,我没有怎么看到过官方的报道
但从EJB Specification本身的发展来看,Sun已经慢慢明白什么才是EJB容器真正擅长和真正应该提供的设施。
至于LiDO,我想如果是Sun这个体系结构中除EntityBean之外唯一的持久选择的话,我现在就可以判它死刑了,:-)

评论内容: