Tapestry是一個使用Java語言編寫的開源框架,用于創建動態的、健壯的、高靈活性的web應用程序。Tapestry框架構筑在標準的Java Servlet API之上,因此它能夠很好地兼容任何servlet容器或者應用服務。
Tapestry將一個web應用程序分離為一組頁面,而每個頁面又由多個組件組成。這就提供了一個協調一致的結構,使得Tapestry框架能夠專注于任何一個關鍵細節,例如:URL解析和派遣、持久化狀態儲存在客戶端還是儲存在服務器端、用戶輸入效驗、本地化或國際化、和異常報告。對 Tapestry應用程序的開發包括:使用普通的HTML標簽創建HTML模板,然后使用XML描述文件(可選)將這些模板與少量的java代碼結合在一起。在Tapestry中,創建你的應用程序是通過使用對象、方法以及對象的屬性---而并非由URLs和查詢參數。Tapestry帶來了真正的 Java Web應用程序OOP編程。
Tapestry能夠非常容易地創建新組件,就如同以常規的步驟來構建應用程序一樣。而官方提供了超過五十種組件,這些組件包括各種各樣簡單的輸出組件,以及非常復雜的表格組件和樹型目錄組件。
Tapestry能夠構建,從小型的應用程序到各種大型團隊開發的幾百個獨立頁面的大型應用程序。Tapestry能夠非常容易地與各種底層框架結合,包括J2EE、Hivemind和Spring。
Tapestry發布于Apache Software Licence 2.0。
Tapestry的哲理
Tapestry由以下四種關鍵原則組成:
- 簡單 - 應用程序并非像火箭科學那么復雜。
- 一致性 - 怎樣操作頁面,怎樣操作組件。在小應用程序中怎樣操作,那么在大型應用程序中就怎樣操作。不同的開發者會在相識問題上找到相似的解決方案。
- 效率 - 應用程序是可以被升級的。
- 良好的反饋信息 - 當發生錯誤或者異常的時候,Tapestry框架本身的運作并不會發生異常;實際上,Tapestry框架會提供非常有用的錯誤診斷信息。
這四種原則共同組成了一個宗旨:最簡單的選擇,就是最正確的選擇。越早選擇Tapestry框架,那么就越早避免許多麻煩。
我們發現面向組件式web開發是實現這些原則的最好途徑。圍繞著組件來組織框架和你的應用程序,讓框架來替你實現那些令人厭煩的底層代碼。你只需要寫少量的代碼,寫一些簡單的代碼,有時候你甚至不需要寫代碼。Tapestry讓你輕松。
Tapestry 4.0
Tapestry4.0增加了許多新特性以便提高你的工作效率:
- 4.0中新的DTDs配置更加簡化。
- 在HTML中與在XML配置文件中綁定參數的方式被協調一致,都使用相同的綁定前綴。
- "Friendly"URLs(就是說,URLs中攜帶更多路徑信息和更少的查詢參數信息)已經被集成。這使得你可以將應用程序分別放在多個文件夾中而減少混亂,并且可以通過這種方式提高J2EE項目發布的安全性。
- 監聽方法更加簡單和靈活;URL中的監聽參數會自動映射到監聽方法的參數,并且監聽方法可以返回頁面名稱或者頁面實例來激活頁面。
- 組件參數不必在擔心"direction"設置。
- 除了每個頁面和每個組件的消息策略之外,應用程序現在擁有一個全局的消息策略。消息不再從組件消息策略中尋找,而是從應用程序策略中查詢。
- 完全支持對JSR-168 Portlets的開發。
- Tapestry 4.0比Tapestry3.0減少了對反射和OGNL的使用;一部分原因是使用了許多新綁定前綴,大部分原因是改變了參數的實現方式。
- Hivemind的services和Spring的beans能夠直接被頁面和組件類注入。
- Tapestry 4.0提供了對JDK 1.5 annotation的支持(但是Tapestry本身是運作于JDK 1.3)。
- Tapestry 4.0引進了一個全新的更健壯的用戶輸入效驗子系統。感謝Paul!
- 現在能夠在錯誤報告里面,用橫線精確地標明文件中發生錯誤的代碼行。
- Forms現在能夠被取消,避過客戶端效驗邏輯,并觸發指定的服務器端監聽方法。
- 你不再局限于Global對象和Visit對象;只要你愿意,可以使用任意多的application狀態對象。
- 由于Hivemind構筑與Tapestry底層,意味著你可以容易地按照自己的需要修改Tapestry的實現。
- 頁面屬性現在能夠被持久化于客戶端中,就如同在session中一樣。
- 組件和組件參數現在可以被標識為"deprecated"。組件參數可以擁有別名(當重新命名一個參數時使用)。
可以列舉出無數Tapestry 4.0的變化。總之,所有的變化都是令人震撼的,減少了開發者的java代碼,減少了模板的復雜性,簡化(或者除去)了XML文件。
現狀
Tapestry 4.0的開發工作仍在全力進行中。文檔從以前舊的DocBook形式轉變到新的Forrest形式,剔除了許多臨時性間隔。指南中新的Quick Start章節已經被撰寫。
Tapestry 4.0已經接近最終的beta周期;新特性將會被延續到Tapestry 4.1,并會繼續逐步完善文檔和修正bug。最終版本的Tapestry 4.0預計(不保證)會在2005年十月推出。
從4.0-beta-12升級
作為TAPESTRY-620
修正的一部分:將當前的IRquestCycle作為可注入的service,簡化Tapestry中的一些接口,取消IRequestCycle參數。這可能要求對一些地方的代碼實現作適當調整。
從4.0-beta-10升級
在beta-10和之后的版本中,對于asset service,friendly URLs的配置改變了。在你的hivemind.xml中,將<asset-encoder id="asset" path="/assets/"/> 改為<asset-encoder id="asset" path="/assets"/>(注意斜杠已經被去掉)。
從Tapestry 3.0升級
Tapestry 4.0具有很多新特性,考慮到向后兼容性,有些地方做了限制。具體細節以后會發布,但是至少:
- Tapestry3.0 頁面和組件規范仍然保留。
- 頁面和組件的模板沒有改變。
升級的時候,你將遇到下列問題:
- 引擎service的定義已經完全改變,可以參看IEngineService API。
- BaseEngine的子類通過override來操作異常的方式已經改變。現在可以通過新的Hivemind services來重構默認的配置。
- direction參數的"custom"已經不再使用。定義一個參數總是會生成對應的property。
- 參數都不會再通過parameterName綁定property,取而代之的是你必須使用getBinding()方法。
- page loader和specification delegate的關系已經改變,現在delegate提供的specifications會被loader緩存(在3.0中,由delegate來負責緩存)。
- Tapestry不再需要Jakarta commons-lang library支持,這意味著不能再使用EnumPropertySelectionModel類(然而,你可以很容易地從Tapestry 3.0中拷貝到源代碼)。
posted on 2005-12-15 15:12
我的java天地 閱讀(680)
評論(0) 編輯 收藏 所屬分類:
體會