使用 Seam 的十大理由
英文原文地址:http://seamframework.org/Home/WhySeam
翻譯者:Depeng Cong
MSN:congdepeng@hotmail.com
百度空間:http://hi.baidu.com/charlielogic
<臨時翻譯,轉載請保留以上信息>
AJAX從根本上改變了WEB的交互模型。 傳統的web客戶端使用同步的粗粒度請求,從而使很多服務端應用程序避開最小緩存和無session層的并發。無狀態的構架在很多情況下是可行的方案。 然而現在不一樣了!AJAX 客戶端使用很多異步, 并發,細粒度的請求與服務端交流,從而很方面的取得你想要的數據。對于基于并發的bugs,在內存和請求里面保存狀態是非常脆弱的,因此Java EE平臺沒有提供session層并發的支持。Seam很用心的構思和設計基于AJAX的完全獨一無二的并發模型和狀態管理模型。Seam 1.1將開源的基于JSF的AJAX解決方案比如ICEfaces 和 Ajax4JSF整合到Seam的狀態和并發管理引擎上。 你不必要學習JavaScript就可以很輕松的將AJAX添加到你的應用程序中,并且將使你隔離使用AJAX時相關的潛在bugs和性能問題
EJB 3.0是商業事務組件中最偉大的組件模型(之一),更吸引眼球的是它是嶄新的Java 持久化應用程序接口 (JPA)。但是Java web和應用程序框架缺少對于這個新組件的有效支持,因為他們設計在EJB 3.0發布之前。從而使你要自己寫相關的集成代碼,并且在很多情況下迫使你關注分層的構架,哪怕對你的程序來說分層是不合適的。Seam為了便于使用EJB 3.0而設計,她讓你可以在任何領域使用該新組件模型。因此Seam中的任何類都是一個EJB組件,沒有必要引入額外而沒有必要的層到你心愛的框架中。當然啦,你也不需要為了集成EJB 3.0到你的web框架而寫任何代碼,因為Seam已經為你做好了。(譯者注:都是這幫可惡的外國程序員,都幫我們做好了,所以國內出現一幫吃軟飯的程序員,什么都不要懂,學用個框架,包括我,That’ all.)提醒一點的是,并不是說使用Seam就一定要使用EJB 3.0,如果你現在的開發環境不支持EJB 3.0,那么Seam提供了其他備選方案。
JSF已經創立了一套包含組件庫和其他附加功能的充滿活力的體系,從而使其很容易的就成為Java Web框架中人氣最高的。然而純JSF的XML配置很繁重,并且漏掉了一些重要的特性,特別是為了用戶構建面向Internet應用程序的。Seam使用少量的annotations來替代乏味的XML配置,從而減少代碼并使你的工作更有成效。Seam添加額外的函數來擴展JSF,擴展的領域包括多窗口操作,工作空間管理,基于模型的驗證,基于jBPM的頁面流程,國際化,頁面碎片緩沖。Seam甚至為處理可標記的(REST-style)web頁提供便利---對JSF提出控告的用戶數。(譯者注:上句話我也不懂,瞎翻譯。)因為JSF沒有討論訪問事務資源的問題,那么Seam已經集成的JTA, JPA 和 EJB 3.0將成為大多數JSF使用者的必需品。
(譯者注:Seam總是先夸獎一下某個技術,然后再說這個技術什么地方沒做好,但是Seam做好了,以此來從側面反應Seam的牛逼。)
(BPM ==Business Process Management==業務流程管理)
jBPM是一套直觀而強大的解決復雜的多人交互的企業應用程序,或者有復雜的人機交互的web應用程序的方案。BPM技術不僅僅讓開發者和分析師更容易建模,實現和完善一個業務流程,而且同時使得分析業務流程的有效性和被告知的問題得到運行和管理成為可能。Seam深度集成了jBPM,讓使用jBPM來進行任務管理或者頁面流程變得難以置信的簡單,并且是開始學習BPM技術的首選之路。(譯者注:我玩過一個月的ALBPM,什么時候也玩一下jBPM,哈哈!)Seam 和 jBPM的聯合能縮短某些項目差不多幾個月的開發時間。
Seam呈現影響企業應用程序復雜性的難題。那并不是說最容易的事情比它看起來復雜。當Seam準備構建簡單數據驅動的應用程序時候,對比當前的任何增刪改查框架它都是完全有價值的。Seam整合了一個簡單的數據訪問框架(圍繞JPA 和 Hibernate構建),包含一個命令行的代碼產生器和一個數據庫轉換引擎工具,幫助你數分鐘內完成操作。
Seam由Hibernate社區分離出來,設計和實現人員都曾經是Hibernate創建者,同時也是他們創建了持久化術語的環境。Seam's 會話模型 解決了 許多由傳統無狀態的web應用程序構架引起的持久化相關的編程問題。不管你是使用Hibernate 還是 JPA,Seam都可以很容易而且自然的擴展持久化環境,并且幫助你避免集群環境間不必要的副本復制。
Seam是第一個允許你使用Java 5的注解端對端的從持久層到用戶界面通信的編程模型。你將不需要在多余而枯燥的XML配置文件里面掙扎。當然,這也不是說Seam就不使用XML,在適當的時候(Seam也有一個基于XML組件的復雜的配置設施)也是可以的,僅僅是說在平常的編程任務中你無需迷失在大量的XML里。
自動化的單元測試在任何項目中都有一席之地。然后僅僅依賴單元測試是一件很危險的事情。大多數的Bugs涉及組件之間的或者是組件和容器環境的相互影響。單元測試不能適當的獲取容器的行為,并且通常的也不能捕獲復雜的內部組件的相互影響。Seam引入一個創新的方法從而可以自動的集成測試,在此你能夠模擬整個的請求或者會話的流程,測試程序中從表現層到持久層的所有java代碼。
Seam建立在開源規范如JSF 和 EJB 3.0的開源代碼實現如Hibernate, jBPM, Facelets, Drools, ICEfaces 和 Ajax4JSF之上。Seam的創建者是EJB, JPA, Bean Validation 和 JSF專家組中活躍的成員,并且領導了Web Beans (JSR-299)專家組試圖將Seam中的一些思想成為Java EE標準。The Seam 項目完全的堅持開源思想創新 ,推動新思想和促進Java 平臺的發展。
如果你嘗試一下,你就會愛上seam。 現在就開始吧!