`
speedy
  • 浏览: 3823 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Struts2 or Tapestry哪个更好一点

阅读更多
有人使用过Tapestry吗?这东西的性能怎么样?跟Struts2相比,在开发效率与运行效率上哪个好一点。。请大虾们指教。
分享到:
评论
21 楼 donyee 2008-10-21  
从T5刚出5.05我就拿来做毕业设计,毕业论文也是说T5的,
现在公司做项目也做了几个
学习曲线我觉得没有什么问题,有Struts经验的最多一个月可以上手,
另外可以用Groovy来写页面,很不错的,
和Spring、Hibernate集成很方便
运用了许多注释,可以少写许多代码
20 楼 dengyin2000 2008-10-21  
关于T5的学习曲线问题。 个人感觉比struts2的曲线低很多。 struts2 要熟悉各种intercept validate titles 还有struts.xml的写法。 T5的话 就看官方的User guide再加上wiki里面的howto就基本没问题了(别跟我说你英文不行,不行的话就去学)。 如果遇到一些问题到mailinglist里面都能找到解决方案
19 楼 KorbenZhang 2008-10-21  
看来我也有愤青的潜质了,因为我在用T5。不过我只能客观地说说使用感受,因为我对其他框架了解不深入。

1.学习曲线。以前开始看的时候,很多地方都提到学习曲线非常高。但我个人感觉,只要理解内在约定及其含义,还是很容易接受的。

现在用maven一条语句即可生成项目最初骨架,改一改java,tml马上可以看到效果,很是很方便的。当然这里能立即生效的正如dengyin所说,是限于t所监控的范围,包括页面、组件等,不误导大家。

t的模式有利于美工和开发人员分工,这也是见到t的介绍中比较多提到的。据我经验,美工人员和开发人员要遵守一些约定才能合作愉快。比如美工人员要晓得含有t:代表什么含义,那些可以随意改动,那些不能改动。

单纯美工图片MM,布局MM,需要接受开发人员的安排,因为页面美化有些方面还包括如何展现。尤其是现在的网页展现较多运用div,css,更需要统一考虑,全部页面要共享一些要素,图片MM,布局MM也要学好多东西,知道如何与开发人员配合。

T使用layout进行布局,和tile相比可能灵活性不够。

总之,关于学习曲线,大家不要被误导,正如dengyin所说,对t一点不知的人,经过一段时间学习,很快可以上手。

2.关于组件。我个人认为组件是t的一大特色。首先我想说定义组件在t中是非常容易的,至少t5中是很容易的。组建复用是我在使用t过程中最感有成效的地方。

3.t的邮件组不错。

4.t的注入很方便,内建了一些服务可以立即使用,如logger,messages,request等。
t集成spring也比以前简单多了,在web.xml中改动一个filter就可以了。



光说优点不是实事求是的态度,t的缺点我也总结几条:

1. 中文资料不丰富。t5的预览版已经一年多了,一直没有发布正式版,英文刚出来,e文翻译需要一段时间。javaeye有些高手翻译了一些,但现在好像很少更新了。E文弱的人学起来比较吃力。

2. 变化太快。不断的重构是开发软件的要求,但t一重构,终端用户都得跟着变,一个新版本发布经常带来兼容问题,要改上半天,追踪版本的朋友会有此体会。t不断应用新观点,新技术,创新精神难能可贵,是理想的技术学习场所。

欢迎专业拍砖人士路过、拍砖。
18 楼 speedy 2008-10-21  
谢谢各位的讨论,我已基本知道要怎么选择了。。
17 楼 koalant 2008-10-21  
dengyin2000 写道
Wicket tapestry写个组件非常方便。

我最近也在看Groovy,Grails。 我知道dan对Groovy有很深的研究。 web的效率问题大多数发生在数据库这层。 所以选择web框架应该选个自己觉得效率最高的。




Wicket tapestry 这两个框架的确很相似,感觉好像 wicket 比 tapestry 更简单一些。 不过可能是使用脚本语言时间长了,我更喜欢 grails 这种框架。
16 楼 koalant 2008-10-21  
chinarefers 写道

Tapestry的群体一般都很愤青,千万不要和他们讨论Tapestry的缺点。


其实搞 JAVA 的人都很愤青,再往大点说,搞软件开发的都很愤青,哪个开发团体没点脾气,不维护自己开发的东西呢?
Linus 骂搞 openbsd 的人都是“手淫的猴子”,rails 创始人 DHH 也是个把不住嘴到处得罪人的主儿,Grails 1.0 发布的当天还给 Grails 开发组发邮件让人把  on rails 去掉。 JAVAEYE 这里也是经常开骂的战场。 别光拿 Tapestry 说事,都是搞软件的, 谁也比谁强不到哪里去,五十步笑百步而已。

框架这种东西并不是你说它好就好,你说它不好它就完蛋的,有人做出成功案例了,就有它存在的价值,Tapestry 有 Theserverside.com 这个成功案例应该就很能说明问题。至于开发效率来说,并不能说明一切,有些框架的效率是靠牺牲维护性换来的,开发效率也不是全部。我以前用过 Tapestry,  Tapestry 对美工来说,肯定比 Struts 友好的多。
15 楼 dengyin2000 2008-10-21  
dan 写道
dengyin2000 写道

难道开发效率都在写html上面? 不在page class和写action上? tapestry改类可以不用重启server  这点不吸引人? 如果是搞ajax应用的话 跟用那个web框架感觉没有什么太大的关系  选一个好的javascript 框架比web框架重要得多。 以前我们用的是dojo+jsonrpc+jst.


我不是要比較兩者誰好誰不好,而是我只是想表達,這兩者都差不多,決定運行效率和開發效率,是在
於你對架構的熟悉度,還有以你的個性你比較喜歡哪一種,這樣用起來才會開心,自己因喜歡而深入研
究,寫出下面是想說明不要去在乎這兩者的運行效率和開發效率,最重要是你喜歡

1.運行效率
我的意思不是都用html,而是如何Cache,可以看一下JavaEye的Cache機制文章,兩者的運行效率就看你
如何做,決定在人,就像寫Ror不是每個人都可以用好Cache的機制。

2.Tapestry改類可以不用重啟server
基本上編譯式的語言類別更新都要classloader,我不清楚tapestry改類發生什麼樣的行為,但只要是
Java寫的都一樣,我只要將Tapestry的改類代碼行為,寫到Struts2組件上就可以辦到了。

3.如果是搞ajax應用的話 跟用那個web框架感覺沒有什麼太大的關係  選一個好的javascript 框架比web框架重要得多

你誤會我的意思了,我無法正確表達我的意思,你可以看一下Grails和Ror項目在Dreamweaver下問美工人員
是否友好,試著做看看,再問一下美工人員,凡事不能自己覺的美工好就好,更應問美工人員的想法。




1.我说的是开发效率, 你说的是运行效率。

2.Tapestry是自己写了个classloader来实现这个效果的。 现在好像只有Tapestry才有这样功能。 其他的框架当然是可以实现,但struts2现在还没有这样功能。所以这个可以说是tapestry的一个亮点。 不重启server带来的好处是不言而喻的。

3.我对jsp tag也是非常讨厌, 自己写个tag麻烦的要死, jsf 用jsp tag, 用jsf写个组件太复杂了。 JSF最多也就算半个基于组件的框架。 Wicket tapestry写个组件非常方便。

我最近也在看Groovy,Grails。 我知道dan对Groovy有很深的研究。 web的效率问题大多数发生在数据库这层。 所以选择web框架应该选个自己觉得效率最高的。


14 楼 dan 2008-10-21  
dengyin2000 写道

难道开发效率都在写html上面? 不在page class和写action上? tapestry改类可以不用重启server  这点不吸引人? 如果是搞ajax应用的话 跟用那个web框架感觉没有什么太大的关系  选一个好的javascript 框架比web框架重要得多。 以前我们用的是dojo+jsonrpc+jst.


我不是要比較兩者誰好誰不好,而是我只是想表達,這兩者都差不多,決定運行效率和開發效率,是在
於你對架構的熟悉度,還有以你的個性你比較喜歡哪一種,這樣用起來才會開心,自己因喜歡而深入研
究,寫出下面是想說明不要去在乎這兩者的運行效率和開發效率,最重要是你喜歡

1.運行效率
我的意思不是都用html,而是如何Cache,可以看一下JavaEye的Cache機制文章,兩者的運行效率就看你
如何做,決定在人,就像寫Ror不是每個人都可以用好Cache的機制。

2.Tapestry改類可以不用重啟server
基本上編譯式的語言類別更新都要classloader,我不清楚tapestry改類發生什麼樣的行為,但只要是
Java寫的都一樣,我只要將Tapestry的改類代碼行為,寫到Struts2組件上就可以辦到了。

3.如果是搞ajax應用的話 跟用那個web框架感覺沒有什麼太大的關係  選一個好的javascript 框架比web框架重要得多

你誤會我的意思了,我無法正確表達我的意思,你可以看一下Grails和Ror項目在Dreamweaver下問美工人員
是否友好,試著做看看,再問一下美工人員,凡事不能自己覺的美工好就好,更應問美工人員的想法。


13 楼 76052186 2008-10-21  
我不知道struts2与t5那个更好,我只能说绝对比struts1好得多。而且与jsf比较起来我感觉t5也要好。
例几个我认为好的特性吧:
1.url是rest的。
2.组件写其来很舒服,自少比我写jsp 的tag好很多。
3.以前一直有人说t上手难度大,t5以前我不清楚,但t5我觉得没那么难,很多东西文档上没有的,通过启动日志,源码就能解决,但是文档是t5的大问题。
4.页面的跳转,参数的传递都很方便。
6.对aja的封装也很好,不过对特别的要求还是有问题。
当然现在的t5还是有很多bug,而且还没正式发布。一句话,我喜欢。
12 楼 dengyin2000 2008-10-20  
dan 写道
1.運行效率,應該都是一樣快的,除非架構轉發commmad的過程寫的不好,但用java寫差不了多少,為什麼說是一樣快,因為html最快,請求跟查詢一樣就可做到Cache,尤其論壇的條件很適合Cache,在Struts2有,相信T5也有用到Cache,可以看一下T5 page的生命週期。

2.開發效率,這一點很難說誰好,現在User要求頁面的互動要更良好,只AJAX+Data,就
無法對頁面設計人員友好,頁面組件是必須時,開發人員所看的就會與頁面設計人員差異
很大,如果再加上AJAX+Data+Div時那就更難了。

基本上如果T5或Struts2只有一知半解,再快的架構也一樣,如果這個版本有Bug你可以自行修復,那代表你已經可以活用它了,在這樣情況下用T5開發跟Struts2開發的時間兩者應差不多,剩下只有個人喜好問題。

樓主不應該去思考T5 and Struts2運行效率跟開發效率,應該去想你比較喜歡那一個
因為喜歡才用的順手。



难道开发效率都在写html上面? 不在page class和写action上? tapestry改类可以不用重启server  这点不吸引人? 如果是搞ajax应用的话 跟用那个web框架感觉没有什么太大的关系  选一个好的javascript 框架比web框架重要得多。 以前我们用的是dojo+jsonrpc+jst.


11 楼 dan 2008-10-20  
1.運行效率,應該都是一樣快的,除非架構轉發commmad的過程寫的不好,但用java寫差不了多少,為什麼說是一樣快,因為html最快,請求跟查詢一樣就可做到Cache,尤其論壇的條件很適合Cache,在Struts2有,相信T5也有用到Cache,可以看一下T5 page的生命週期。

2.開發效率,這一點很難說誰好,現在User要求頁面的互動要更良好,只AJAX+Data,就
無法對頁面設計人員友好,頁面組件是必須時,開發人員所看的就會與頁面設計人員差異
很大,如果再加上AJAX+Data+Div時那就更難了。

基本上如果T5或Struts2只有一知半解,再快的架構也一樣,如果這個版本有Bug你可以自行修復,那代表你已經可以活用它了,在這樣情況下用T5開發跟Struts2開發的時間兩者應差不多,剩下只有個人喜好問題。

樓主不應該去思考T5 and Struts2運行效率跟開發效率,應該去想你比較喜歡那一個
因為喜歡才用的順手。
10 楼 dengyin2000 2008-10-20  
downpour 写道
不谈框架的好坏了,没多大意义,自己看着办。

反正对于我这种吃过T3的亏,觉得T5也不怎么样的人对于Tapestry实在是不能接受的。



其实很多人都觉得t3比t4更好。 我最近用T5做了一个项目,感觉非常不错。 只是比起struts那种框架强太多了。 公司也有用struts2+freemark的项目。 感觉太复杂了。 刚用T5做的那个项目其实是没有一个人是有T5的经验的。 也就是我对T5有过一些研究, 看过T5的文档。 但是其他两个以前根本没有接触过Tapestry的人在我的帮助下上手也非常快。 事后都觉得T5比struts2好太多了。 不过对于项目中有大批掌握struts人的公司来说, 大可不必趟T5这条“混水”。
9 楼 dengyin2000 2008-10-20  
hantsy 写道
页面上,t5 不如wicket简洁,现在的t5 的语法和jsp taglib有什么差别,同样对页面设计人员来说不友好,t4 的页面比较简洁,但要借助page配置页面组件。


t5的语法跟facelet很像,其实facelet是参照tapestry。 t5也可以把组件定义到page class中。
8 楼 downpour 2008-10-20  
不谈框架的好坏了,没多大意义,自己看着办。

反正对于我这种吃过T3的亏,觉得T5也不怎么样的人对于Tapestry实在是不能接受的。
7 楼 hantsy 2008-10-20  
页面上,t5 不如wicket简洁,现在的t5 的语法和jsp taglib有什么差别,同样对页面设计人员来说不友好,t4 的页面比较简洁,但要借助page配置页面组件。
6 楼 dengyin2000 2008-10-20  
downpour 写道
dengyin2000 写道


你用的是T几? T4?

T4性能是有问题。T5的性能有大幅的提高 T5中有live classloader.所以你修改page对象(增加方法 删除方法 增加成员变量 修改成员变量)时不需要重启server。 这个就是效率 仅web层让你感觉就像写脚本一样。 而且是基于组件的  非常nature。

你为什么说T是对view层对不友好? 在tapestry中的view是对开发人员和美工友好的。 struts的jsp tag能做到吗?



Action代码的修改不需要重启Server这点特性,我不认为这个是Web层开发的主要矛盾,所以就凭这点说开发效率的提升,我想是无法服众的。请就以下几点评价一下Tapestry:

1. 页面与Action之间的互相传递参数

2. 如何对Action代码进行单元测试

3. 如何有效规划好你项目中所有的URL,从而使得你的URL更加友好,与你的Action对应也更加直接

至于说到Tapestry中的View是对开发人员和美工友好,这一点是更加无法赞同了。那些span中带有的自定义属性在我看来与JSP Tag没什么很大的差别,甚至还比JSP Tag更加难以理解。在页面逻辑比较复杂时,这些满屏的span简直就是噩梦。在JSP Tag标准化(使用JSTL)和模板技术(Freemarker和Velocity)非常成熟的今天,Tapestry那所谓的不使用JSP Tag的谎话早就应该被揭穿了。


满屏的span? 我看你是不是搞错了。  随便举个例子 

<input t:type="textfield" type="text" t:value="name"/>  你说的满屏的span是什么意思?


action传值 可以注入一个page class然后调用set方法就好了。 或者这样 http://www.xxx.com/posts/1000  在你的pageclass定义 onactivate(long id) 和 onPassivate方法就是了。

T5的URL天然是rest样式的

T5的page class是pojo 这个跟struts2没有区别。 而且struts2还要implement一大坨的接口。

另外T5对单元测试也有支持  http://tapestry.apache.org/tapestry5/guide/unit-testing-pages.html

这里回答你的页面传参数的问题  http://tapestry.apache.org/tapestry5/guide/pagenav.html



至于重启server会不会带来效率的提高  我想大家都有大家的看法。 我觉得是方便太多了 如果不是为什么现在这么多人追捧解释型的语言做表示层? 我也在看Groovy。
5 楼 downpour 2008-10-20  
dengyin2000 写道


你用的是T几? T4?

T4性能是有问题。T5的性能有大幅的提高 T5中有live classloader.所以你修改page对象(增加方法 删除方法 增加成员变量 修改成员变量)时不需要重启server。 这个就是效率 仅web层让你感觉就像写脚本一样。 而且是基于组件的  非常nature。

你为什么说T是对view层对不友好? 在tapestry中的view是对开发人员和美工友好的。 struts的jsp tag能做到吗?



Action代码的修改不需要重启Server这点特性,我不认为这个是Web层开发的主要矛盾,所以就凭这点说开发效率的提升,我想是无法服众的。请就以下几点评价一下Tapestry:

1. 页面与Action之间的互相传递参数

2. 如何对Action代码进行单元测试

3. 如何有效规划好你项目中所有的URL,从而使得你的URL更加友好,与你的Action对应也更加直接

至于说到Tapestry中的View是对开发人员和美工友好,这一点是更加无法赞同了。那些span中带有的自定义属性在我看来与JSP Tag没什么很大的差别,甚至还比JSP Tag更加难以理解。在页面逻辑比较复杂时,这些满屏的span简直就是噩梦。在JSP Tag标准化(使用JSTL)和模板技术(Freemarker和Velocity)非常成熟的今天,Tapestry那所谓的不使用JSP Tag的谎话早就应该被揭穿了。
4 楼 dengyin2000 2008-10-20  
downpour 写道
dengyin2000 写道
开发效率是struts2不能比的。 性能觉得比struts2也好。 刚用T5开发了个项目, 感觉非常好  用jetty启动tapestry 修改类时不用重启server。 service class除外。 


哪里得出的结论?

Tapestry是我用过的对View层最不友好的Web框架,实在没看出开发效率高在哪里,说到性能,恐怕还没有人能说哪个Web框架对其他的框架有足够的性能优势吧。



你用的是T几? T4?

T4性能是有问题。T5的性能有大幅的提高 T5中有live classloader.所以你修改page对象(增加方法 删除方法 增加成员变量 修改成员变量)时不需要重启server。 这个就是效率 仅web层让你感觉就像写脚本一样。 而且是基于组件的  非常nature。

你为什么说T是对view层对不友好? 在tapestry中的view是对开发人员和美工友好的。 struts的jsp tag能做到吗?

3 楼 downpour 2008-10-20  
dengyin2000 写道
开发效率是struts2不能比的。 性能觉得比struts2也好。 刚用T5开发了个项目, 感觉非常好  用jetty启动tapestry 修改类时不用重启server。 service class除外。 


哪里得出的结论?

Tapestry是我用过的对View层最不友好的Web框架,实在没看出开发效率高在哪里,说到性能,恐怕还没有人能说哪个Web框架对其他的框架有足够的性能优势吧。
2 楼 cdjjh 2008-10-20  
建议楼主使用最大众化的框架,这样有问题也方便问,方便找资料。Tapestry也许不错,但不可否认的是,经过这么多年的发展,使用群体依然少,资料依然很少。所以建议慎用。

相关推荐

    Java Web层框架之比较—比较JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket.doc

    Java Web层框架是构建Web应用程序的关键组成部分,它们简化了服务器端的开发,提供了更好的结构和可维护性。本文将深入对比六种流行的Java Web层框架:JSF、Spring MVC、Stripes、Struts 2、Tapestry和Wicket。 **...

    Tapestry,JSF和Struts的比较

    它的优点在于其清晰的MVC分离和广泛的社区支持,但随着其他框架的发展,Struts1的某些设计已经显得过时,尽管Struts2引入了更多改进和灵活性。Struts2支持拦截器和自定义拦截器链,使开发者可以实现灵活的业务逻辑...

    struts2文档

    6. **更好的AJAX支持**:通过Struts2的Ajax插件,可以轻松实现异步更新,提升用户体验。 **与其它MVC框架的比较** 在Struts2出现的同时,市场上也出现了其他MVC框架,如JSF(JavaServer Faces)、Tapestry和Spring ...

    struts2权威指南pdf

    相较于Struts1,Struts2具有更多的优点和改进之处,如更灵活的配置方式、更好的异常处理机制以及更丰富的插件支持等。 ##### 1.2 Struts2与Struts1的区别 - **设计理念**:Struts1采用的是单一Action模式,而...

    struts2 权威指南

    - **国际化支持**:Struts2提供了更好的国际化支持,便于多语言环境下的应用开发。 ##### 2.3 Struts2与其他MVC框架的对比 除了Struts2之外,还有许多其他的MVC框架,如JSF、Tapestry、Spring MVC等。这些框架各有...

    tapestry学习入门资料

    2. Tapestry 由“对象、方法、域”这些面像对象元素构成,但是它更关注于开发者关心的 Servlet API 的请求,回复,会话,属性,参数,URLs 等等开销。 3. Tapestry 关注的是如何联系用户的动作和这些动作所引响到的...

    关于Tapestry的一些个人总结

    2. **更好的可维护性**:由于组件之间的耦合度较低,因此更容易进行维护和升级。 3. **高度的灵活性**:Tapestry支持多种数据源和数据库,可以根据不同的应用场景进行选择。 总之,Tapestry是一个非常强大且灵活...

    Struts2教程(完整)

    ### Struts2教程知识点概述 #### 一、Struts2框架简介 - **框架类别**: - **MVC框架**:Struts2属于MVC(Model-View-Controller)框架,这类框架主要包括Struts、WebWork、SpringMVC等。 - **事件驱动框架**:...

    Struts2 权威指南

    - **更好的架构设计**:Struts2 在架构设计上更为灵活和模块化,允许开发者更容易地定制和扩展。 - **更强大的功能支持**:相比于 Struts1,Struts2 提供了更多的内置功能,如拦截器、类型转换、验证等。 - **易于...

    tapestry源码 api等

    通过研究这些源码和API,开发者不仅可以掌握Tapestry的基本用法,还能深入了解其设计哲学和内部工作流程,从而更好地优化和扩展自己的应用程序。同时,对于那些希望贡献到Tapestry开源项目的人来说,这是一份宝贵的...

    tapestry官方中文文档

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它强调了组件化、模块化和可重用性,使得开发复杂的Web应用变得更加简单。本文将深入介绍Tapestry 4的相关知识点。 1. **组件化编程**: ...

    Tapestry简单入门.rar_java Tapestry_tapestry

    Tapestry是一款强大的Java Web应用程序框架,由Apache软件基金会维护,它提供了一种基于组件的模型来构建动态、数据驱动的Web应用。本教程将帮助初学者了解Tapestry的基本概念,带你逐步入门并掌握其核心组件的使用...

    struts2学习笔记

    **MVC框架选择**:除了Struts2,还有其他流行的MVC框架,如JSF、Tapestry、SpringMVC等,它们各有特色,开发者应根据项目需求和团队熟悉程度来选择最适合的框架。 #### 四、Struts2框架架构与处理流程 **架构概览*...

    Tapestry In Action

    - **Tapestry的优势**:详细阐述了Tapestry相较于其他Web框架(如Struts)的优点,包括更简洁的代码、更强大的组件模型以及更好的可维护性等。 - **Tapestry的应用场景**:讲解了Tapestry最适合哪些类型的Web应用...

Global site tag (gtag.js) - Google Analytics