To Bean or Not to Bean, That’s the Question

J2EE, Java 2 Enterprise Edition,係以 Sun 為主導的眾多廠商,包括 IBM、Oracle、Bea、Sybase…等,針對企業用戶提供一個完整以 “Java-based Solution” 的整合開發環境的規格。

由“Enterprise”一字來看,即可知道,J2EE 的規格主要服務是以企業用戶為對象。為了能提供高產值、快速開發、高品質、易於維護的企業應用系統,有別於傳統 Client-Server 的架構,J2EE 是環繞以元件化(Component-based)為主的軟體設計開發。

而為了能支援以元件化為主的軟體開發,從使用者介面端(User Interface)至中間層(Middleware)的應用軟體伺服器(Application Server),乃至後端資料庫的存取等,都要一套完整的 “Total Solution”。事實上,J2EE 是結合了眾多 Java 的技術(每種技術均由 Sun 等來制訂規格),匯集而成的一種 Enterprise 架構。

1998 年三月,Sun 制訂了 EJB(Enterprise JavaBeans) 的規格,該規格提出的宗旨在於定義 Server-Side 的元件化(Component)標準架構,並藉由此來簡化分散式企業資訊系統的設計。

EJB 規格一直是 Sun 等系統廠商所力拱的 J2EE 核心規格。至今發展亦有 7 年了,泛 Java-based Solution 的系統廠商,依循同是以 EJB 標準規格為核心,投入非常多的資源來開發 J2EE 應用軟體伺服器(Application Server),這幾年下來,J2EE 應用伺服器在穩定、效能與安全性上,不可謂之已為成熟的應用系統平台了。

但是,基於以 EJB 規格所開發的企業級應用系統,卻是在 Develper 心目中褒貶不一。採用 EJB 的設計開發與否,各有其擁護的觀點與理由。

回到當初制訂 EJB 規格制訂的本意:

  • 確定 IT 開發者的職掌。
    「IT 開發人員只需專注於企業邏輯的開發」;「系統層次的服務應該是交由廠商來負責提供」。
  • 平台的獨立。
    包括了作業系統、資料庫系統,甚至於 Middleware 應用平台 (EJB 規格制訂了不同廠商的 EJB Container 均可以相互溝通),都可以將 EJB 的開發與部署與實質的系統平台抽離。
  • 縮短開發的時程。
    元件化規格的用意在於期能達成 “彈性”、”延展性”、”可重用性” 等,而降低對於系統的維護成本;又,因 IT 開發者不再需要開發底層的系統服務機制,而可以專注於企業應用邏輯的開發。
  • 廣泛的工業支援。
    「合眾弱以攻一強」! 這已是以拱 Java-based 的系統廠商們的共識。任一家自行所推出的規格,均不足以成為標準的規格。結合廠商們的核心專業,共同制訂標準的工業規格,才有機會與 Microsoft 的 Enterprise Solution 相抗衡。

看來制訂 EJB 規格的系統廠商們是有一番好意的。但是,實際上,許多基於以 EJB 為核心的應用系統開發,卻又不如上述所提及真有這麼多的好處。

許多 Developer 心中的 “痛” 可能包括了:沒有一致的 IDE 開發環境、不容易界定 Session 與 Entity Bean 的責任分派、應用程式的部署(Deployment)與測試相形困難、EJB 應用伺服器系統的維護遠來得比資料庫維護困難太多...等。

原來期望的應該是 “light-weight” 的開發,而能享受到 “企業級” 的服務;結果卻是 “heavy-weight” 的開發,開發時程反而延長,並造成系統的維護與部署等的負擔。

那麼,是否就如同上述所提及的一點,因為期望系統的彈性、延展性與可重用性才會決定使用 EJB? 畢竟,EJB 是元件化的規格,以元件化的開發,即可以達成元件的 “可重用性”。

若真如此想,那可能又會再失望一次了。 “元件化(Component-based)一詞” 並非是採用了業界所提供的元件規格,而其內涵是指在設計的思維上,因為懂得將變動侷限在一小塊範圍,當需要抽離時,如同舊的 AGP 顯示卡,因效能不佳被抽換成更高階的顯示卡,而不至影響到整台 PC 主機的變動。

如此說來,那何時會考慮採用 EJB 的規格,難道 EJB 真的一無是處嗎?
不然不然, OLTP(Online Transaction Procss)-based 的應用系統,越是要求高效能、高穩定的巨量交易處理,採用以 EJB 為核心的應用系統,的確是可以享受到系統廠商所提供的底層服務,包括了:交易機制、遠端元件之間的緊密式(Tight Coupling)溝通、安全性等。

尤其是交易機制的處理,這是 EJB 應用伺服器最為擅長的,CTM(Component Transaction Monitor) 的機制,也是決定了J2EE 平台的優劣之分。

只要觀察制訂 EJB 規格的主要系統廠商,就可以瞭解為何這些系統廠商的核心專長是在於提供企業級應用程式的底層系統服務。因為絕大部分是資料庫系統的重量級廠商,如 Oracle、IBM、Sybase 等;或是如 BEA 擅長提供 Middleware 的交易機制的處理平台等。

作為一個 IT 的 Architect,會冷靜地去審慎、思考與評估,未來的願景與現實的環境,兩者之間的綜合考量下,來決定是否採用以 EJB 或是 Non-EJB 的 J2EE 應用系統平台的開發。

To Bean or Not to Bean, That’s your choice.

文章導覽

   

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。