dearshor
2009-01-19 17:08
to lgx522 前辈:

您说“seam的性能实在不敢恭维”,不知道是否您经过了大量的、精准的benchmark test后得出的结论?如果仅仅凭感觉,是很不准确的。和谁做的比较?是同等条件、同等usecase下比较出来的结果吗?

seam不像spring那样,没有自己重新开发一个stack出来,而是用了现有的Java EE stack。你说的性能问题,如果确实存在,那也是JSF的性能问题,或ejb的性能问题(或其他seam整合的东西的性能问题),而seam只会让它们在seam中比以前跑的更好,绝不会是更差。

很多人抱怨seam的conversation性能很有问题,我认为是他们还不会用conversation。试问,你的app里很多地方有必要使用 long-running conversation吗?未必吧。transient conversation就如同request一样,这和spring里的情形没什么区别了,还觉得有性能问题?

ok,退一步讲,就算有性能问题,牺牲了我一些纵向扩展的能力,但我可以无限横向扩展啊,我搞cluster可以吧?只要你愿意,搞多少台app server组cluster都可以。

至于您说的“团队合作”上的优势,spring有,seam同样有,没什么大区别(我在学seam之前也用过spring相当长的时间。spring我也还是看好的,特别是它吧OSGi真正引入Java EE领域这一做法,我很欣慰)

好了,这个讨论已经跑题了,我们居然争论了这么多seam和spring的区别与各自特点,哈哈。该打住了。

lgx522
2009-01-24 09:45
to dearshor:

首先要肯定你的钻研和独立思考精神,保持这样的劲头必有所成。现在国内大多数程序员是人云亦云,只会被动式地接任务编程,是很难有进展的。

所谓seam,就是EJB3+JSF,而当前seam的性能的确是低的。Web应用有一个大的分界点,那就是“有状态”和“无状态”。传统的Web都是“无状态”的,而过去的session bean和现在的seam都大胆地引入了“状态”。设计上的确是很棒,但性能的问题还是会摆在眼前。至于慢多少,随便找个工具如ab、jmeter测一下,就会有认识了。这一点上,包括本人曾实践过一阵子的Grails,完成后是转换成Spring+Hibernate,想像上应该和纯正的SH没有太大区别,可惜事实上性能差距很大,正应了“without EJB”中Rod对动态语言转换编译的前瞻性论断。

cluster这种问题,其实是是很难考证的,因为cluster本身要同步数据就有不小的开销。jboss cluster玩得熟的,可以做一下,看看同样的机器配置,多少台装载seam的cluster才可以达到一台装载SH的性能。而中间层cluster最关键之处,还是要解决DB的单点瓶颈问题。这一点上,Hibernate的second-lever cache同样很棒,用上jboss cache之类的东西也是可以做cluster的。

最后用Rod Johnson的观点总结一下近期本人暂不考虑seam的原因吧,观点大概是要首先保证高效的单机应用(Spring同样是可以伸缩和扩展的),再考虑群集的问题。这几年的事实证明了Spring的正确。而本人由于最近在搞Spring remoting+Applet,很大程度上可以是“无状态”,就更不需要seam这类的东西了。

另外扯一下题外话,banq在理论上是相当激进的,而jdon framework性能却相当地不错,可见banq的务实和老练。往这个方向发展的同道,大可以学习参照一下,不要总不把国人的东西当回事。Discuz!都红遍全中国,大家没有必要继续漠视国产优秀的Java OpenSource。

freebox
2009-01-25 12:11
选择哪个工具是典型的www问题,大部分人都对what和how有过深入的了解,但是where就要更深入的分析才行。给几百人用的和给几百万人用的当然不一样。

seam推荐是full,但也可以les,spring默认是les,也不是不能ful。没有where,这些东西是没办法比较的。

dearshor
2009-01-29 20:10
On 2009年01月24日 09:45, "lgx522" wrote:

>不要总不把国人的东西当回事。Discuz!都红遍全中国,大家没有必要继续漠视国产优秀的Java OpenSource。

前辈说的很好,我一直热衷于开源软件,十分希望OpenSource也能真正成为“中国创造”。对国产开源软件,我一向是支持的; 对于jdon framework这样的优秀产品,我一向是肯定的。

但目前我主要聚焦于“应用”上,应用现有的东西来做ending user application,故可能更多的关注的是解决实际问题、提供整体解决方案等层面。现有的哪个东西能解决我的实际问题,能提供完整的解决方案,不用我为选择而犯愁、为组合而烦恼,我就选择谁,至于它是国产的还是洋人的,我基本上无所谓。

而对于基础设施、中间件平台、开发框架等的设计上的研究,目前暂不打算深入。以后也许会考虑。

开源软件在国内的发展还有很长的路要走,至少目前还很不成熟(无论是开源社区、developer、用户/客户、市场等)。不说别的,很多国人都不知道如何向开源社区提交自己的贡献!其实“贡献”分很多种,比如提交一个bug report,那就算是贡献啊;很多国人都不知道使用开源社区的mailing list,甚至不知道mailing list为何物!

我目前自问也还没能力像banq那样写一个jdon出来支持国产开源软件的发展,我能做的仅仅是试用、比较各类开源产品,并试图找出best practice,分享给国人,也算我为国产开源软件的发展出了一份力吧。

PS:目前我在Google Code托管了一个keepleaping project,就致力于做上述事情。

http://code.google.com/p/keepleaping/

bmrxntfj
2009-02-04 11:19
问题的根本 不在于用什么技术 而在于领域本身 所以DDD开篇讲得好,使用‘通用语言’构建模型才是好的解决方法。否则就算你精通这技术,精通那技术,到头来连问题本身的尾巴都没摸到,其不是南辕北辙。这也就解释了为什么人家写出那么恶心的代码,用户还是欢天喜地的原因。之所以用lz所说的那些,目的就是为了可维护,可扩展,可伸缩。

neoedmund
2009-02-13 10:10
THIS MESSAGE HAS BEEN MASKED

yinyousong
2009-02-16 21:01
楼主确实实力雄厚,但咋一看还以为是在给spring做广告,但仔细品味帖子的标题,确实让人精神一奋,小弟认为软件工程也就是楼主标题的这样了.OO,layer,DI,AOP,TDD,referctor,在结合DDD做编码实现,简直是享受:如果能完全理解并运用自如的话.

scorpian
2009-03-10 14:01
技术始终是技术,只是一种工具,一味的追求永远没有止境

根本的意义在于能够帮助人更高效的解决现实中的问题

SSH等等技术更多是提高了开发效率,但其实并没有体现出对现实问题的反映

手指能够指出明月的所在,但手指却不是明月

jhyan
2009-03-25 14:09
太好了,一语惊醒梦中人。

我们用spring的目的是什么?为什么加入IOC,AOP,ORM等等?有了答案就能更进一步了!!

猜你喜欢
2Go