`

Tapestry 5简介

阅读更多
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-core
框架的核心,包括所有基本的内置组件。
tapestry-ioc
Tapestry IOC 容器。
tapestry-spring-integration
与Spring集成。
tapestry-test
Tapestry测试工具集。
Tapestry-hibernate
与hibernate集成。

 
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
Formos 将加入以支持Tapestry项目,始于运行在Bamboo上的continuous integration site。在此感谢Atlassian赠与的Bamboo许可证书。
Howard Lewis Ship 已经开始写Tapestry 5 Tutorial [PDF]。
先前发布的Tapestry 5.0.1,可以通过Maven或download得到。这一版本功能有限且不稳定,用以收集用户反馈。请发送你的见解到Tapestry邮件列表…所有的都会经常发生改变(因此,我们现在已经着手收拾我们的烂摊子,修改我们要修改的东西)。
你可以在Developer Wiki中得到一些将来的思路。
你也可以通过Tapestry 5 Screencasts得到介绍Tapestry 5功能的视频。
第一个Tapestry 5的Maven 原型(项目模板)已经创建:tapestry-simple你可以在几秒钟内创建一个新的起始应用环境。
 
原则一——静态结构,动态行为
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将有能力深入改变自己内部代码而不影响你写的应用程序代码。这最终会打破向后兼容的坚壳,给予了一个大的保证,那就是不改变已有应用代码情况下实现版本的升级。
 
分享到:
评论
10 楼 yaowdung 2007-03-20  
Tapestry 5非常棒!也很容易使用
9 楼 jamesby 2007-03-20  
过段时间整T5,不知道是选择T5还是S2!
感觉T5和T4好象差距不小!
8 楼 iRoyce 2007-03-19  
T3、T4、T5一脉相承,固然还是有许多共通之处,只是用法不同(趋向简单化,快速开发),虽然这三个版本不兼容,但却有相同的核心思想!
T5已为以后版本的兼容打下了基础,前景不错! 学了以前的版本...算不上浪费什么时间...只能说你现在能学得更快,理解得更快了!更相信学到软件里面的思想才是技术之道!

感谢各位的鼓励,我将继续努力和大家共同进步,也希望有更多的人能够一起交流思想!
7 楼 xiaoyuonline 2007-03-18  
期待中....,好容易把T4懂了个粗略,又要继续学T5了,唉,早知道就不干这行了.....
6 楼 dada 2007-03-17  
tapestry5伤了不少人的心....
5 楼 liigo 2007-03-17  
翻译的很好, 继续
4 楼 icefire 2007-03-16  
好文!!
支持!
3 楼 thomas1 2007-03-16  

好文章!谢谢!
2 楼 engineer 2007-03-12  
支持,继续啊
1 楼 sun58224 2007-03-11  

相关推荐

    Tapestry5最新中文入门实例教程

    ### Tapestry5最新中文入门实例教程 #### 一、引言 Tapestry是一个使用Java语言创建Web应用程序的面向组件的开发框架。本教程旨在通过实际案例帮助读者掌握Tapestry 5的基本概念和核心功能,并体验其带来的高效开发...

    Tapestry5BuildingWebApplications

    #### 一、Tapestry5简介与特点 Tapestry5是一款由Apache基金会维护和支持的开源Java Web应用框架。它旨在简化Web应用的开发过程,通过其独特的组件化模型,提供了一种更加直观的方式来构建复杂的Web界面。本书...

    Tapestry5, Packt.Publishing.Tapestry.5.Building.Web.Applications.Jan.2008.RETAiL.eBOOk-sUppLeX.pdf

    - **内容简介**:本书是一本逐步指导读者使用Tapestry5进行Java Web开发的教程。书中不仅提供了详尽的技术指导,还包含了大量实用的案例研究,帮助读者更好地理解和应用这些技术。 #### 四、核心知识点详解 1. **...

    Tapestry开发指南

    1. **Tapestry简介** Tapestry是一个基于MVC(Model-View-Controller)架构的框架,它通过组件化的方式,让开发者可以创建复杂的用户界面。其主要优点包括:代码的可读性和可维护性、动态页面更新以及高度类型安全...

    Tapestry开发

    #### 一、Tapestry简介及其背景 Tapestry是一种用于构建高度可伸缩且易于维护的Web应用程序的Java框架。它最初由Howard Lewis Ship开发,并于2000年发布。Tapestry的设计理念是为了简化Web应用的开发过程,通过提供...

    Tapestry In Action.pdf

    ### 一、Tapestry简介 **知识点:** - **Tapestry框架定位**:Tapestry是一个用于构建复杂Web应用程序的Java框架,它通过组件化的编程模型简化了Web应用的开发。 - **组件化编程**:Tapestry的核心理念之一就是组件...

    关于Tapestry的一些个人总结

    #### 一、Tapestry简介与核心特性 Tapestry是一个基于Servlet的框架,它可以运行在任何支持Servlet的容器(如Tomcat)或者包含Servlet容器的应用服务器(例如JBoss)之上。该框架允许开发者无需使用JSP技术来构建...

    tapestry 集成 spring

    **Tapestry 简介** Tapestry 是 Apache 软件基金会的一个项目,它提供了一种基于组件的模型来构建动态、交互式的 Web 应用程序。Tapestry 的核心理念是将 UI 视图与业务逻辑分离,通过组件来封装复杂的功能,提高...

    Tapestry 5.1 实例教程

    Tapestry 5.1 简介 Tapestry 5.1 提供了一种全新的方法来构建动态、高性能的Web应用。它强调了组件化和类型安全,使得开发者能够专注于业务逻辑,而非底层的HTTP和HTML细节。Tapestry 5.1的核心设计理念是将Web...

    Enjoy Web Dev With Tapestry

    #### Tapestry简介 Tapestry是一款优秀的Java Web MVC(Model-View-Controller)框架,旨在简化Web应用程序的开发流程并提高开发效率。该框架通过将复杂的Web交互抽象成简单且优雅的概念来帮助开发者轻松构建高质量...

    apache-tapestry-5.3.7

    1. **Tapestry简介**: Tapestry 是一种MVC(Model-View-Controller)框架,它强调组件化编程,允许开发者创建可重用的、自包含的UI组件。与传统的JSP或Servlet相比,Tapestry提供了更高级别的抽象,减少了样板代码...

    tapestry示例源码

    1. **Tapestry 框架简介** Tapestry 以其组件模型著称,它将HTML页面拆分为独立的、可重用的组件,每个组件都有自己的业务逻辑和呈现逻辑。这种方式简化了页面设计和维护,提高了代码的可读性和可维护性。通过这个...

    Manning - Tapestry In Action

    #### 书籍简介与核心知识点概览 《Manning - Tapestry In Action》是一本深入介绍Tapestry框架的专业书籍,该书由Howard M. Lewis Ship编写并由Manning出版社出版。Tapestry是一款用于构建高度可扩展、易于维护的...

    Tapestry in Action

    #### 第1章:Tapestry简介 - **主要内容**:介绍Tapestry的基本概念、特点及其与传统Web开发方法的区别。 - **学习目标**:理解Tapestry的工作原理及如何利用其特性来简化Web开发流程。 #### 第2章:开始使用...

    tapestry用户手册.pdf

    1. 简介 Tapestry是一个基于组件的MVC(Model-View-Controller)框架,它的核心理念是将UI逻辑与业务逻辑分离,通过组件化的方式提高代码的可复用性和可维护性。Tapestry强调的是页面和组件的声明式编程,使得开发者...

Global site tag (gtag.js) - Google Analytics