搜尋老魚筆摘(本網誌及所屬協作平台)

2009-01-21

當前較佳的 Java EE 5+ 開發用框架 - Seam Framework

繼前篇的的課外音樂選, 獲得不少朋友跟老魚說"好像有一點點腦力有效...",
那老魚這回分享給大家不失活潑的對唱, 女主唱同樣是 Sissel,
這回男主唱是位風趣的小提琴家 Kalle Moraeus :


聽完了對唱, 腦袋是不是較有精神了呢 ?

明天 23 號是老魚的大壽之日 !!!
老魚將奉上新的正體書(電子檔- -), 送給各位學習參考用!
  • Seam 2.0 正體中文手冊
這篇的標題要先交待一下, 老魚沒經歷過 Java EE 1.4 含以前的時代,
老魚是從 Java EE 5 才正式想深入這軟體架構,
至於為什麼 ... 嗯~當中的"苦"老魚不想罵人, 各位就當從零開始就好~呵
所以
  • 如果你也是正要開始深入 EE, 那請你從 EE 5 版學起即可 !!!
繼前篇的幾個重點, 再加上網友留下的問題, 在這篇就順便交待一下.

如何開始進入 EE 5 ?
這問題離不開 Sun 精心"安排"的 Java 技術認證的目標,
您可以從這頁連結去了解自己處於在那一階段,
每一張都有考試範圍, 至於學習方式呢 ?
看到範圍聰明的會去找書自己K, 懶的人就花錢找個好老師教囉~
但老魚沒要求你一定要取得認證才算哦!!!
(證照"薄紙"可以短期速成取得, 相信老魚真的很薄~
有些證書根本自己用印表機印也很像呀~呵
真正的技術是真的需要你用長歲月投入換來的!
)

在前篇老魚曾說到Java Web "框架(Framework)"技術, 夠用就好,
也提到框架不一定完全遵從著 EE 5 的構成組件與堆疊理論來發展,
這問題將導致幾點您必須思考的軟體長期成本的風險估算:
  1. 納投名狀,結兄弟誼,死生相托,吉凶相救,福禍相依,患難相扶。(電影~投名狀)
    這類型框架組織的發展通常會由"曾經"的輕巧, 逐漸走向自樹一格完整的平台化產品, 您的團隊被迫必須不斷學習它甚至再堆疊入你的產品, 好的是新 idea 不斷被它所創建, 該平台的產品也易於被組建, 但可能的風險就隨著像毒品般你離不開它 ...
  2. 推陳出新的版本速度快過您開發團隊的學習曲線
    團隊被迫停在舊的框架版次上, 進退不得, 安慰自己說: 版本太新問題很多, 那反之呢 ? 框架本身的安全性修補, 你落後了!!!
以上的現象經常發生在 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 專家組一道,確保這些修正恢復到標準的下一次修訂中。
  • 對 Groovy 的支持是內定的
    你可以在 Seam 中靈活應用 Groovy 帶來的優點 (其實是Seam本身就有使用它~呵)


老魚將 Seam 文檔中提到的其它特點轉述摘要如下, 有興趣的人可以前往 Seam 官網閱讀它:
  • 將 JSF 與 EJB 3.0 整合
    Seam 將 JSF 和 EJB 3 的元件模型合二為一,消除了膠合程式碼,使得開發者專注於業務問題。編寫「一切」都是 EJB 的 Seam 應用程序是有可能的。
  • 在任何Java EE應用程序伺服器中都可以運行
    Seam 在任何 Java EE 應用程序伺服器中都可以運行,甚至在Tomcat中也可以。如果你的環境支持EJB 3.0
  • 整合 AJAX
    Seam支持兩個最好的、開源的基於 JSF 的 AJAX 解決方案:JBoss RichFaces 和ICEfaces。 Seam 也提供了內置的 JavaSctipt 遠端存取層,它讓你非同步地從客戶端JavaScript 中調用元件,而不需要中間的 action 層。
  • 將企業流程作為首要的基礎建築
    Seam 可以選擇通過 jBPM 提供透明的企業流程管理(BPM)
  • 宣告式狀態管理
    宣告式應用程序狀態管理通過Seam定義的豐富的context model(上下文模型)而成為可能。
    Seam擴展了Servlet規範—定義的上下文模型——請求、Session、應用程序—增加了兩個新的上下文— 交談和企業流程—,從企業邏輯的角度來看它們更具意義。
  • Bijection(雙向注入)
    Inversion of Control(IoC, 控制反轉) 或者 Dependency Injection(DI, 依賴注入) 的概念出現在 JSF 和 EJB3 以及很多所謂的「輕型容器」中。
    Bijection(雙向注入)和IoC的不同之處在於它是動態的、語境相關的以及雙向的。
  • 工作區管理(Workspace Management)和多視窗瀏覽
    Seam應用程序讓使用者自由地在多個瀏覽器視窗中切換,每個視窗都與一個不同的、安全隔離的交談關聯。Seam 不僅提供正確的多視窗操作,還提供在一個視窗中模擬多個視窗的操作。
  • 更喜歡 XML 註解
    Seam 擴展了EJB 3.0 提供的註解,以用於宣告式狀態管理和宣告式上下文劃分。 這讓你擺脫了對繁瑣的 JSF managed bean(JSF 受管 bean)的配置,減少了所需的XML,只剩下那些真正屬於XML的資訊(JSF導航規則)。
  • 整合測試輕而易舉
    你可以輕易地編寫重現與使用者完整交互的 JUnit 或 TestNG 測試,來演習除了視圖View(JSP 或者 Facelets 頁面)之外的所有系統元件。
  • Web 應用程序不只是服務 HTML 頁面
    Seam 為持續化整合了JPA 和 Hibernate 3,為輕量化的非同步性整合了EJB Timer ServiceQuartz,為工作流整合了jBPM,為業務規則整合了JBoss 規則,為電子郵件整合了Meldware Mail,為完整的文本搜尋整合了Hibernate SearchLucene,為訊息整合了JMS,以及為頁面片斷捕捉整合了JBoss Cache。 Seam 在JAAS 和 JBoss 規則之上,創建了一個新的基於規則的安全框架。甚至有用來輸出 PDF、在線電子郵件和圖表及wikitext的JSF標籤資源庫。
  • Seam 元件可以同時作為一個Web Service進行調用,非同步地從客戶端 JavaScript 或者 Google Web Toolkit,或者當然也可以直接從 JSF 調用。
再接下來的日子, 老魚將陸續分享相關 Seam 的心得 ...

1 則留言:

  1. 抱歉這陣子剛開始學習jboss
    想請教一下
    Jboss跟seam jboss關係是?
    seam jboss是不是就是 這個http://www.jboss.org/ ?

    回覆刪除

熱門文章

大智若魚::人生處處是道場-站內SEO參考標籤雲