InfoQ

技术访谈

曹晓钢谈企业应用开发框架

受访人 Jason Lai 发布于 2007年10月23日 下午6时52分

社区
Architecture
主题
故事和案例分析,
Web框架,
富客户端/桌面
标签
服务组件架构,
Hibernate,
JBoss Seam,
Spring框架,
性能和扩展性
概要
在采访中,曹晓钢首先对当前流行的Web应用开发框架,如Spring、JBoss Seam、Hibernate等进行了比较分析,然后根据自己的实际工作经验和经历指出在企业应用开发中如何选择并合理地使用这些框架,另外他还对未来一段时间开源框架的发展前景进行了展望。

个人简介
曹晓钢,满江红开放技术研究组织创始人,在软件开发方面有着多年的经验积累,热衷于开源理念与开源软件的推广。此外他还有多本译作及原创书籍出版,如《深入浅出Hibernate》、《深入Java虚拟机》、《J2EE Development Without EJB中文版》等,曾是《Dr. Dobb's Journal》中文版编委会常任委员。

感谢上海卡内基信息科技有限公司提供场地支持!
请评价目前市场上流行的企业应用开发框架。
如果在企业应用中使用开源框架,今后的趋势又是怎样的?
那用于企业开发的这些Java开源框架之间各自存在哪些优势和劣势?
那么像纯的这样的HTML的组件库,在企业应用开发中是怎么样的一个应用情况呢?
那你觉得就是在企业开发中这个业务组件的重用,今后会不会是一个比较大的一个方向呢?
刚才你就提到这个用组件化来实施项目的这样的一个思想,那么就是说在你现在具体实际项目实施当中,你是怎么去实现这样的一个思想的呢?
假如今后你有无限的时间和精力的话,你要解决这样的一个项目中出现的问题,你会怎么样去选择呢?
show all  show all

8 条回复

回复

没有太多说服力 发表人 hong lin 发表于 2007年10月23日 下午8时46分
Re: 没有太多说服力 发表人 sw pollux 发表于 2007年10月25日 上午2时49分
Re: 没有太多说服力 发表人 zheng xin 发表于 2007年10月28日 上午2时35分
Re: 没有太多说服力 发表人 霍 泰稳 发表于 2007年10月29日 下午9时6分
没有噱头 发表人 fan fan 发表于 2007年10月29日 下午6时59分
Portlet 发表人 Chushu Gao 发表于 2007年10月29日 下午8时53分
实在听不下去了!来点实在的行不。。。工作offer 发表人 kai zhang 发表于 2007年11月7日 下午6时6分
组件化始终是程序员不懈的追求 发表人 gx li 发表于 2008年5月27日 上午3时39分
  1. 返回顶部

    没有太多说服力

    2007年10月23日 下午8时46分 发表人 hong lin

    感觉业务建模是框架该做的还是以需求而设计的,你举的那个"显示客户信息"的例子实在没有什么说服力,我还没有深入seam,不过我想业务建模也应该不可避免的见于需求,你可以向页面传递尽可能多的信息(一个信息丰富的模型,你的“你的那些用户信息”必然在模型中)。

  2. 返回顶部

    Re: 没有太多说服力

    2007年10月25日 上午2时49分 发表人 sw pollux

    同意!另外在和spring和jboss系列做比较的时候,比较简单,没有深入下去。说spring是一个草根框架等等,让我感觉太随意了。其实作者自己的项目中不也还在用spring那套嘛!再说spring的未来还是比较明朗的。

  3. 返回顶部

    Re: 没有太多说服力

    2007年10月28日 上午2时35分 发表人 zheng xin

    我觉得,seam和业务逻辑的开发仍然没有什么关系,只不过是another framework,对于实际的复杂的业务逻辑开发,seam也解决不了什么问题。 我觉得这种说法很肤浅,很没有深度,也没有准备好,不应当出现在infoq的网站.

  4. 返回顶部

    没有噱头

    2007年10月29日 下午6时59分 发表人 fan fan

    没有噱头

  5. 返回顶部

    Portlet

    2007年10月29日 下午8时53分 发表人 Chushu Gao

    首先声明,本人并无大量企业应用开发经验。以下看法更多来自学术观点。 从曹晓钢的访谈中可以看出,他对业务模型如何穿透映射到页面表示尤为关注。在学术领域中,不乏学者通过建立页面表示模型,利用MDD中的技术与成果,一方面进行工作流模型到页面表示模型的转换,一方面进行页面表示模型到具体表示通道的转换或映射。Portlet可以看作一种运行于容器中的页面内容表达途径。因此,一些学者选择Portlet载体进行这类转换与映射。不知道这是否会是软件工程实践者亦会尝试的途径。

  6. 返回顶部

    Re: 没有太多说服力

    2007年10月29日 下午9时6分 发表人 霍 泰稳

    参与讨论就是一种美德,你的问题对其他朋友是很好的启发。

  7. 返回顶部

    实在听不下去了!来点实在的行不。。。工作offer

    2007年11月7日 下午6时6分 发表人 kai zhang

    实在听不下去了,特意注册一个账号跟大家讨论一下。我不是Professional programmer也没有用过JSP 0.8什么的,不过这个谈话不是矛盾就是空洞还有太多错误。这个网站做得挺好的啊,怎么。。。sign 首先,好像你主要想要一个component based framework, 你拿Spring来说当然没前途。。。因为他根本不是走这个路线的,你可以拿JSF等相关的东西来说说他们的具体缺陷,和你整合时候遇到的问题而不是找些不相及的东西开刀。J2EE Development without EJB如果没有记错是对Spring核心技术的解释,应该就已经透露这个框架是用来支持你想整合的其他框架其中包括你不断重复的控件之类的,还有就是你正在用的hibernate等等。而且Spring 的IOC 精髓, AOP的支持 让POJO这样的简单object实现了EJB的declarative transaction 等等, 而又不强迫你重写,重建一大堆方法和object. Spring主要在支持你在任何一个层面上更好的设计和控制你要做的事情。你要求的那个server side validation(JSP里面的小红标志表示验证失败), Spring里面有阿还很多种呢 比如 @spring.validator type="required"。。。 而分层是为了更好的处理这个层的任务,在你的那个多个页面需要类似客户信息的例子里,你需要考虑的是怎么样得到一个model在presentation layer下面的那个层然后转给一个view(额外的抽象出来的好东西)去interpret,这个在presentation layer 的 view,是interactive designer or expert的美学领域的工作,他们需要考虑如何把这个页面渲染的像个样子(用传过来的model)。具体技术上的就是sitemesh这种页面布局小模块的用处。 .net 是用钱堆出来的,表现层能差吗?你扔给interface21几十个亿,就要什么控件有什么控件了。这些框架的好处是你可以用一个方法控制你的代码而不是帮你把UML Diagram直接变成JSP的。 小小的意见是:框架的英文名字说得慢一点,或者拼出来一下,也许可以让别人在你启发后发现更多东西,起码有机会google一下。 如果你真想谈,应该谈谈你如何用Spring, hibernate 还有前端的XXX没听清楚来实现你的component based design, 比如你完全可以用JSP TAG实现你的那个每个页面都有的什么什么客户信息。。大家都忙 指东说西也就罢了 总的来点实在的啊。。。 最后最后这个给网站的:也许用一下AJAX 让用户在发言回复的时候不会重新播放stream. 如果哪位同仁感觉我说得更偏激 欢迎讨论adjure_study@hotmail.com , 另外 我正在找合作的伙伴,主要是B2B的webshop之类的,将会用到Spring等等 暂时还在给老外打工,所以最好会外语的 如果技术很强也成,我做interface了:)有兴趣的联系 谢谢

  8. 返回顶部

    组件化始终是程序员不懈的追求

    2008年5月27日 上午3时39分 发表人 gx li

    晓刚这些发言的核心还是在于“组件化”。 其实这个问题很多年来正是众多程序员不懈的追求。见子打子的程序大家都会写,真正追求是业务逻辑的重用。于是从过去的COM、CORBA、EJB,到如今的WS、REST、SOA等等。 可惜,业务逻辑组件化这样的想法几乎快演变为玄学了。 经过多年观察和实践,老实说本人对这个追求开始产生了悲观情绪。或许这种追求本身便是程序员的西西弗斯悲剧? 而且可笑的是,B/S经过好多年的折腾之后,仍然没有达到当初VB、Delphi、PB那样高生产力的程度。虽然说B/S仍是必经之路,但要有多久,要如何做才能达到如C/S时代的易用度和高产?届时什么样的技术和框架经得起时间的考验?Spring、Seam、Grails、PHP、RoR、ASP.NET?

独家内容

程立谈架构、敏捷和SOA实践

支付宝首席架构师程立在本文分享了支付宝技术架构的发展,对架构的认识,成功架构的特点,如何避免架构设计的失败,以及在敏捷和SOA方面的实践等。

Emmanuel Bernard谈Bean验证规范

InfoQ有幸采访到了Emmanuel Bernard,向其了解Bean验证框架及专家组正在寻求的社区参与的更多相关信息。

通过索引器简化C#类型信息访问

作为一个有别于Java、Ruby等语言的一个特性,C#可以用索引器(Indexer)将类型本身以对象数组的形式供外部使用。同时,把索引器和LINQ结合使用倒是一个非常不错的组合,索引器做接口、LINQ完成内部检索逻辑,客户程序在无需记住具体方法名称的前提下,按照键值检索即可,索引器内部则依托LINQ to系列的基础,提供对各种异构数据源的访问。

产品负责人成功之道

Scrum中,产品负责人这个角色具有很大的影响力,能够带来很高的价值。但要想运用得当,可没那么轻而易举。如果做得好,就可以在客户和开发者之间建立更为融洽的关系,并能够增加组织的竞争优势。

硝烟中的Scrum和XP

在本书中,作者Henrik Kniberg讲述了他在一年的时间里,带领40人的团队实施Scrum的过程。他们试过了多种团队尺寸(3~12人)、sprint长度(2~6星期),定义“完成”的不同方式,不同的backlog格式,各种测试策略,在多个Scrum团队之间进行同步的多种方式。他们还尝试过XP实践——持续集成、结对编程、测试驱动开发等等,还试过了把XP跟Scrum组合。

软件开发中的准时化生产

准时化生产(Just In Time)是精益生产(Lean Production)和丰田生产系统(Toyota Production System)中的概念,敏捷开发与准时化生产中的很多观点和实践是一致的,精益思想作为精益生产背后的指导思想也正在积极地影响着软件开发领域,向其中不断注入创新与活力。

Tapestry for Nonbelievers

I. Drobiazko和R. Zubairov合作撰写了一篇文章,详细介绍Apache Tapestry 版本5——一个面向组件web框架。文章向读者展示了创建组件方法,并谈到了Tapestry中的IoC以及Ajax的相关特性。

ESB拓扑方案

在本文中,Adrien Louis讨论了两种基于ESB的SOA拓扑方案的优缺点:单个公司级ESB vs. 彼此互联的“部门级”ESB系统。Adrien讨论了每种方案对管理、业务监测、治理、可靠性和编配等问题的影响。