浏览 10281 次
锁定老帖子 主题:Tapestry 5简介
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||
发表时间:2007-03-05
Tapestry 5简介
本文是在Tapestry官方文档的基础上翻译整理过来的,有时间再翻译其他主要章节,希望有兴趣的可以多多交流!水平有限,还望高手多多指正!
概要
Tapestry是一个开源的框架,用以创建动态的、健壮的、高可扩展性的Java web应用,它是在Java Servlet API基础上的扩展,因此它可以工作在任何一个Servlet容器和应用服务器中。Tapestry将web应用划分成一组页面的集合,每个页面都构建在组件上。Tapestry框架主要负责:URL构建与转发,客户端与服务端状态的持久化,用户输入校验,国际化和异常报告。开发Tapestry应用包括用普通HTML创建的HTML模板和绑定在模板上的少量Java代码。在Tapestry中,我们用对象及对象的方法和属性而并非是针对URL和查询参数(query parameters)创建应用程序,从而为Java web应用带来了一个真正的面向对象的开发。Tapestry可适用于开发小型应用,也可以大到大型的多个团队开发的由数百页面组成的大型应用。Tapestry可以轻易地集成各种后台,包括J2EE、HiveMind和Spring。
Tapestry的优点主要体现在:对于开发者,代码改变后不需要重新部署或重启便可立刻看到效果以及快速启动;对于设计者,Tapestry模板非常接近于普通的HTML,不像JSP那样看着让人难懂。对于管理者,可以轻易的让团队工作在一起,另外还包括它的国际化的重要特性。
Tapestry以Apache Software Licence 2.0证书发布。
Tapestry被分成了以下几个模块:
Tapestry框架的开发由一些无偿的自愿者组成。粗略的时间安排是:
2007年春季早期——前基本组件与特性。这包括所有的form组件,加上BeanEditForm和Grid,还有客户端持久化与其他重要特性。
2007年夏季前——Ajax特性的加入。我们正在寻求与apestry 4.1可比的更易使用的特性。
Hibernate 和 Spring的集成。(由于许可证书的原因可能从Apache中分离出来)
2007年秋季——最终版。
新特性
Tapestry 5是基于全新的代码,开发小组决定把Java Web组件开发提高到一个新的效率上。新版本删掉了Tapestry 4的许多限制。
组件不用再继承基类。
组件类不再是抽象类。组件都是纯粹的简单的POJOs (plain old Java objects)。
Tapestry不再使用XML页面以及组件配置文件。所有配置文件的信息现在都直接用Java annotations写在Java类里。
所有对Tapestry组件模板和类的修改现在都可以立刻反应出来, 不需要任何重启。这将不仅反映在开发中,同样反映在产品中。
快速(Blazing Speed)。 新代码的基本操作要比Tapestry 4快很多。关键代码路径得到简化,反射的使用已经消除。Tapestry 4速度同比于Servlet/JSP应用,Tapestry 5 要更快一些。
目前状况
Maven插件已加入生成组件和参数文档:tapestry-component-report。
Howard Lewis Ship 已经开始写Tapestry 5 Tutorial [PDF]。
先前发布的Tapestry 5.0.1,可以通过Maven或download得到。这一版本功能有限且不稳定,用以收集用户反馈。请发送你的见解到Tapestry邮件列表…所有的都会经常发生改变(因此,我们现在已经着手收拾我们的烂摊子,修改我们要修改的东西)。
你可以在Developer Wiki中得到一些将来的思路。
你也可以通过Tapestry 5 Screencasts得到介绍Tapestry 5功能的视频。
原则一——静态结构,动态行为
Tapestry从以下几个维度来设计高可伸缩性:
Tapestry应用可以包含多个页面和许多自定义组件。
Tapestry应用可以包含非常复杂的功能。
可备大型的多个的团队开发Tapestry应用。
Tapestry应用可以响应大量的并发用户。
Tapestry存在一个核心的构建策略(静态结构,动态行为)就是服务于以上目标的。
Tapestry并不需要将页面实例存储在HttpSession中。大部分的情况下,它仅仅存储一些少量的页面的持久化字段值,并非整个页面实例。依赖于这种对HttpSession的使用是Tapestry特别在集群配置下具有高可扩展性的关键。
在一些类似于Tapestry的框架,比如Faces 和 Wicket,页面结构动态性更高,体现在更多的存储代价上(HttpSession中存有更多的数据)。
公用的对内部的
有一个问题一直苦脑着Tapestry 4先前的版本,就是在私有(private)、内部的(internal)APIs和公用的(public)、扩展的(external)APIs上缺乏清晰的界线(deliniator?)。事实上你的代码得继承自基类对象,但是许多基类对象方法的不可访问性让此问题更是困惑。这也是“Tapestry陡峭学习曲线”的关键因素。
由于Tapestry 5基于全新的代码,我们可以更好的区分内部的(internal)与扩展的(external)。首先,任何org.apache.tapestry.internal包下的都是内部的(internal),它是Tapestry的部分实现,就像一个在窗帘后的人。你不必直接引用这此代码,直接的引用将会给版本升级带来问题,因为内部的(internal)代码不会在版本升级中考虑其向后兼容性。
向后兼容性
Tapestry一直苦于各主要版本的向后兼容性。Tapestry 5未曾考虑向后兼容Tapestry 4。但是它为向后兼容铺下了基础。Tapestry 5的 API几乎都是基于annotations,你得在类上声明以表示它们是组件,在字段上声明以提供Tapestry来维护它们的状态以及注入资源(resources)。在方法上声明告诉Tapestry这个方法什么时候以及是否被调用。
Tapestry将会适配你的类,它将通过方法的参数传入值来调用你的方法。不再是生硬的实现已有的接口,Tapestry用annotations所提供的线索及简单的命名约定来适配你的类。
正因为如此,Tapestry将有能力深入改变自己内部代码而不影响你写的应用程序代码。这最终会打破向后兼容的坚壳,给予了一个大的保证,那就是不改变已有应用代码情况下实现版本的升级。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||||||
返回顶楼 | |||||||||||
发表时间:2007-03-17
tapestry5伤了不少人的心....
|
|||||||||||
返回顶楼 | |||||||||||
发表时间:2007-03-18
期待中....,好容易把T4懂了个粗略,又要继续学T5了,唉,早知道就不干这行了.....
|
|||||||||||
返回顶楼 | |||||||||||
发表时间:2007-03-19
T3、T4、T5一脉相承,固然还是有许多共通之处,只是用法不同(趋向简单化,快速开发),虽然这三个版本不兼容,但却有相同的核心思想!
T5已为以后版本的兼容打下了基础,前景不错! 学了以前的版本...算不上浪费什么时间...只能说你现在能学得更快,理解得更快了!更相信学到软件里面的思想才是技术之道! 感谢各位的鼓励,我将继续努力和大家共同进步,也希望有更多的人能够一起交流思想! |
|||||||||||
返回顶楼 | |||||||||||
发表时间:2007-03-20
过段时间整T5,不知道是选择T5还是S2!
感觉T5和T4好象差距不小! |
|||||||||||
返回顶楼 | |||||||||||
发表时间:2007-03-20
Tapestry 5非常棒!也很容易使用
|
|||||||||||
返回顶楼 | |||||||||||