在本篇同樣貢獻給想學習或正在使用 Java EE 軟體架構的正體中文朋友們. 在這篇老魚再補上幾點使用 Seam 的理由:
Seam 同其名只是縫合線的工具集 Seam 在 Java EE 5 以上的版本使用, 盡可能只做為對 EE 規範的不足的"小細節"上擔任縫合的角色(如下圖) 不同於其它近似 EE Frameworks, 大膽加諸自家的技術規範, 偏離 EE 規範. Seam是一個功能完整(full-stack)的應用程式框架。Seam的功能正如其名,它扮演了「技術縫合劑」的角色。Seam可以輕易的整合許多新世代的技術,包括JSF、EJB3、Portlet以及jBPM workflow。
非 EE 標準框架林立帶來的資訊成本是極高的 建構在 Java EE 之上各式開放源碼的應用程式框架(Application Framework)如雨後春筍般出現。Java 開發人員可以根據其不同的喜好和需求去選擇不同的技術,並加以組合。是的, 這結果創造了豐富的 Java 參考資源, 但評估與選擇各式開放源碼應用程式框架的工作需要許多時間與經驗,太多的選擇有時也讓新手們無所適從,在學習上也是一種很大的負擔。 更何論站在使用其特定框架做為公司 Base 開發的軟體專案, 公司的技術框架的選用評估, 很易因一失足成千古恨的風險性提高。遵循 EE 規範可能不是最佳的, 但卻是相對選用技術風險性較低的, 且隨著最多公司採用的 Spring Fremework 也加入到 EE 6 的制定專家組的行列, 可預見的 EE 標準最終還是巨型企業的軟體架構.
以上的現象經常發生在 Java 當前的眾多 Web 應用框架中, 尤其是在 2006 年 EE 5 未定案前, 那到底當前站在想應用上標準規範的 EE 5 甚至今年即將定案的 EE 6, 有無較好的學習參考框架或框架入侵架構較淺的產品呢 ? (當然如果您是位反 EE 軟體架構的人, 而堅信其它號稱仍是輕量型的框架技術追隨者, 這篇就不合您囉~)
老魚在這跟各位推薦 - Seam Framework 老魚的理由是 Seam 是當前在骨架上真的落實去使用 EJB 3.0, JSF 1.2, JPA 1.0 等 Java EE 5 堆疊的框架, 在 EE 6 時也將同時採用更佳的 EJB 3.1, JSF 2.0, JPA 1.2 等改良, 並加入 JSR #299 - Web Bean 的新 EE 6 子規範於 Seam 中實作, JSR 299 專案的領導人正是有名的 Gavin King (Hibernate 及 Seam, Web Bean 的原創者) .
Seam 框架最讓老魚欣賞的是, 在其 Seam 的文件中它自述的第一項及其中另2項特點:
Seam 只是一個"工具" (真是夠誠實~呵, 同它的名字僅充當縫合 EE 中各項組件於易用性) Seam為你的應用程序中所有的 EE 企業邏輯定義了一種統一的元件模型。
EE 規範也非盡善盡美 我們認為最新的 Java EE 規範很不錯。但是我們知道它還遠不夠完美。在規範中有許多漏洞(例如,GET請求的JSF生命週期中的局限性),Seam修正了這些漏洞。 Seam的創建者們正與 JCP 專家組一道,確保這些修正恢復到標準的下一次修訂中。